Démarrage rapide
1. Obtenir une clé
Demandez une clé à votre administrateur Inklura (voir Clés API).
Elle ressemble à une clé Brevo (xkeysib-…) et n'est affichée qu'une fois.
export BREVO_API_KEY="xkeysib-…"
export BREVO_BASE="https://<domaine-de-votre-site>/api/brevo/v3"
2. Vérifier la clé
curl -s "$BREVO_BASE/account" -H "api-key: $BREVO_API_KEY" | jq
La réponse décrit le compte : nom du site, relais SMTP utilisé, plan d'envoi. Une clé
inconnue ou révoquée renvoie 401 {"code":"unauthorized","message":"Key not found"}.
3. Déclarer un expéditeur
curl -s -X POST "$BREVO_BASE/senders" -H "api-key: $BREVO_API_KEY" \
-H "content-type: application/json" \
-d '{"name":"Ma Boutique","email":"contact@ma-boutique.fr"}'
Réponse 201 : {"id": 1, "spfError": true, "dkimError": true}. spfError et dkimError
valent false une fois le domaine de l'adresse authentifié. Déclarer une adresse déjà
connue renvoie simplement son id.
Cette étape est facultative : l'envoi accepte n'importe quelle adresse valide dans sender.
Sans sender dans la requête (ni modèle qui en fixe un), l'adresse d'expédition par défaut
du site est utilisée.
4. Envoyer un e-mail
curl -s -X POST "$BREVO_BASE/smtp/email" -H "api-key: $BREVO_API_KEY" \
-H "content-type: application/json" -d '{
"sender": { "name": "Ma Boutique", "email": "contact@ma-boutique.fr" },
"to": [{ "email": "client@example.com", "name": "Jeanne Martin" }],
"subject": "Commande {{ params.orderId }} confirmée",
"htmlContent": "<p>Bonjour {{ params.firstName }}, merci pour votre commande !</p>",
"params": { "firstName": "Jeanne", "orderId": 1042 }
}'
Réponse 201 :
{ "messageId": "<202609241426.12345678901@smtp-relay.mailin.fr>" }
Les variables {{ params.… }} sont remplacées dans le sujet et le contenu. Sans
templateId, il faut un subject et un htmlContent ou un textContent (avec un modèle,
son sujet et son contenu servent par défaut) ; sinon la réponse est
400 {"code":"missing_parameter",…}. to accepte au plus 99 destinataires.
5. Suivre l'envoi
curl -s -G "$BREVO_BASE/smtp/statistics/events" -H "api-key: $BREVO_API_KEY" \
--data-urlencode "messageId=<202609241426.12345678901@smtp-relay.mailin.fr>" | jq
Le messageId contient <, > et @ : il doit être encodé dans l'URL (--data-urlencode
s'en charge). La réponse liste les événements du message, les plus récents d'abord, sur les
30 derniers jours par défaut :
{
"events": [
{ "email": "client@example.com", "date": "2026-09-24T14:26:03.000+00:00",
"messageId": "<202609241426.12345678901@smtp-relay.mailin.fr>",
"event": "requests", "subject": "Commande 1042 confirmée", "from": "contact@ma-boutique.fr" }
]
}
Vous verrez requests, puis delivered, opened, clicks… au fil de l'eau. Pour être
prévenu en temps réel, créez un webhook.
Avec le SDK officiel
import { BrevoClient } from "@getbrevo/brevo";
const brevo = new BrevoClient({
apiKey: process.env.BREVO_API_KEY!,
baseUrl: "https://<domaine-de-votre-site>/api/brevo/v3",
});
await brevo.transactionalEmails.sendTransacEmail({
sender: { email: "contact@ma-boutique.fr" },
to: [{ email: "client@example.com" }],
subject: "Bienvenue",
htmlContent: "<p>Bonjour !</p>",
});