SDK & plugins

SDK officiels

Les SDK Brevo acceptent une URL de base : c'est le seul changement. La clé est envoyée dans l'en-tête api-key, comme chez Brevo (voir Clés API).

Node.js : @getbrevo/brevo (vérifié de bout en bout avec la version 6.0.3)

import { BrevoClient } from "@getbrevo/brevo";

const brevo = new BrevoClient({
  apiKey: process.env.BREVO_API_KEY!,
  baseUrl: "https://ma-boutique.fr/api/brevo/v3",
});

const contact = await brevo.contacts.getContactInfo({ identifier: "jeanne@example.com" });

await brevo.transactionalEmails.sendTransacEmail({
  templateId: 3,
  to: [{ email: "jeanne@example.com" }],
  params: { orderId: 42 },
});

PHP : getbrevo/brevo-php, version 5.x (l'option baseUrl remplace l'adresse par défaut)

use Brevo\Brevo;

$brevo = new Brevo(
    apiKey: getenv('BREVO_API_KEY'),
    options: ['baseUrl' => 'https://ma-boutique.fr/api/brevo/v3'],
);
$contact = $brevo->contacts->getContactInfo('jeanne@example.com');

Avec l'ancienne version 1.x du SDK PHP, l'URL se règle avec setHost :

$config = Brevo\Client\Configuration::getDefaultConfiguration()
    ->setApiKey('api-key', getenv('BREVO_API_KEY'))
    ->setHost('https://ma-boutique.fr/api/brevo/v3');
$api = new Brevo\Client\Api\TransactionalEmailsApi(new GuzzleHttp\Client(), $config);

Python / autres : tout client HTTP convient. Remplacez https://api.brevo.com/v3 par https://<domaine-du-site>/api/brevo/v3 et gardez l'en-tête api-key.

Les méthodes du SDK qui visent une partie de l'API non implémentée (campagnes, SMS, WhatsApp, CRM…) reçoivent une erreur 404 avec le code document_not_found. Une clé absente ou révoquée donne 401 avec le code unauthorized. La liste des opérations disponibles est dans Compatibilité.

Plugins CMS

Les plugins WordPress, WooCommerce, PrestaShop ou Magento de Brevo écrivent en dur api.brevo.com. Pour WordPress, un plugin « must-use » redirige leurs appels sans modifier le plugin (à placer dans wp-content/mu-plugins/) :

<?php
add_filter('pre_http_request', function ($pre, $args, $url) {
    $new = preg_replace('#^https://api\.(brevo|sendinblue)\.com/v3/#', 'https://ma-boutique.fr/api/brevo/v3/', $url);
    return $new === $url ? $pre : wp_remote_request($new, $args);
}, 10, 3);
Attention

Ce filtre ne fonctionne que pour les plugins qui passent par les fonctions HTTP de WordPress (wp_remote_*). Les plugins n'ont pas été vérifiés ligne à ligne : testez avec la version que vous utilisez. Les modules PrestaShop et Magento utilisent leur propre client HTTP et nécessitent une surcharge de la constante d'URL du module.