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>",
});