Comment utiliser les APIs Brevo pour le SMS Marketing ?

Ashley Innocent

Ashley Innocent

24 March 2026

Comment utiliser les APIs Brevo pour le SMS Marketing ?

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

EN BREF

Les API Brevo vous permettent d'envoyer des e-mails marketing, des e-mails transactionnels et des messages SMS par programme. Vous vous authentifiez avec une clé API, envoyez des requêtes à api.brevo.com et utilisez des webhooks pour suivre la livraison et l'engagement. Pour les tests, utilisez Apidog pour valider les charges utiles, tester les gestionnaires de webhooks et vous assurer que votre intégration gère correctement les rebonds et les désinscriptions.

Introduction

Brevo (anciennement Sendinblue) traite des millions d'e-mails quotidiens pour plus de 500 000 entreprises. Il gère les campagnes marketing, les e-mails transactionnels, le marketing par SMS et les workflows d'automatisation.

Les API d'e-mails semblent simples : envoyer un message, c'est fait. Mais les systèmes d'e-mails de production doivent gérer les rebonds, les plaintes pour spam, les désinscriptions et les délais de livraison. Brevo gère cette complexité pour que vous n'ayez pas à le faire.

L'API couvre trois principaux cas d'utilisation :

💡
Si vous intégrez des e-mails à votre application, Apidog vous aide à tester des modèles, à valider les charges utiles des webhooks et à garantir le bon fonctionnement de votre intégration sur les différents clients de messagerie. Vous pouvez simuler les réponses de Brevo pendant le développement et tester la gestion des erreurs sans envoyer de vrais e-mails.
button
button

Authentification et configuration

Obtenir une clé API

  1. Connectez-vous à Brevo
  2. Allez dans SMTP & API → Clés API
  3. Créez une nouvelle clé avec les permissions appropriées
  4. Stockez-la en toute sécurité

La clé API se trouve dans l'en-tête api-key :

curl -X GET "https://api.brevo.com/v3/account" \
  -H "accept: application/json" \
  -H "api-key: your-api-key-here"

URL de base de l'API

Toutes les requêtes sont envoyées à :

https://api.brevo.com/v3/

Limites de débit

Brevo limite les requêtes par plan :

Vérifiez l'en-tête X-RateLimit-Remaining pour suivre l'utilisation.

Envoi d'e-mails transactionnels

Les e-mails transactionnels sont des messages individuels déclenchés par les actions de l'utilisateur. Pensez aux réinitialisations de mot de passe, aux confirmations de commande, aux e-mails de bienvenue.

Envoyer un e-mail simple

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "accept: application/json" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": {
      "name": "Your App",
      "email": "noreply@yourapp.com"
    },
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "subject": "Welcome to Our Platform",
    "htmlContent": "<html><body><h1>Welcome!</h1><p>Thanks for signing up.</p></body></html>",
    "textContent": "Welcome! Thanks for signing up."
  }'

Réponse :

{
  "messageId": "<20260324123456.123456@relay.brevo.com>"
}

Utilisation de modèles

Créez des modèles dans l'éditeur visuel de Brevo, puis envoyez-les par ID :

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "templateId": 15,
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "params": {
      "name": "John",
      "order_number": "ORD-12345",
      "tracking_url": "https://tracking.example.com/ORD-12345"
    }
  }'

Les variables de modèle utilisent des accolades doubles :

<p>Bonjour {{params.name}},</p>
<p>Votre commande {{params.order_number}} a été expédiée.</p>
<p><a href="{{params.tracking_url}}">Suivez votre colis</a></p>

Envoyer avec des pièces jointes

const response = await fetch('https://api.brevo.com/v3/smtp/email', {
  method: 'POST',
  headers: {
    'api-key': process.env.BREVO_API_KEY,
    'content-type': 'application/json'
  },
  body: JSON.stringify({
    sender: { name: 'Your App', email: 'noreply@yourapp.com' },
    to: [{ email: 'user@example.com' }],
    subject: 'Your Invoice',
    htmlContent: '<p>Veuillez trouver votre facture ci-jointe.</p>',
    attachment: [
      {
        name: 'invoice.pdf',
        content: base64EncodedPdfContent
      }
    ]
  })
})

Campagnes marketing

Les e-mails marketing sont envoyés à des listes de contacts. Brevo gère les liens de désinscription, la planification et les analyses.

Créer une campagne

curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "name": "Newsletter de Mars",
    "subject": "Nouveautés de Mars",
    "sender": {
      "name": "Votre Marque",
      "email": "newsletter@yourbrand.com"
    },
    "type": "classic",
    "htmlContent": "<html><body>Contenu de la newsletter ici...</body></html>",
    "recipients": {
      "listIds": [12, 15]
    },
    "scheduledAt": "2026-03-25T09:00:00+00:00"
  }'

Envoyer immédiatement

curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
  -H "api-key: your-api-key"

Obtenir les statistiques de campagne

curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
  -H "api-key: your-api-key"

La réponse inclut :

{
  "statistics": {
    "delivered": 4850,
    "opened": 1455,
    "clicked": 291,
    "unsubscribed": 12,
    "bounces": 150
  }
}

Gestion des contacts

Les contacts sont les personnes à qui vous envoyez des e-mails. Organisez-les en listes et ajoutez des attributs personnalisés.

Créer un contact

curl -X POST "https://api.brevo.com/v3/contacts" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "email": "new.user@example.com",
    "attributes": {
      "FIRSTNAME": "Jane",
      "LASTNAME": "Smith",
      "PLAN": "premium"
    },
    "listIds": [12, 15],
    "updateEnabled": true
  }'

Le drapeau updateEnabled: true met à jour les contacts existants au lieu de provoquer un échec.

Obtenir les détails du contact

curl -X GET "https://api.brevo.com/v3/contacts/user@example.com" \
  -H "api-key: your-api-key"

Ajouter à une liste

curl -X POST "https://api.brevo.com/v3/contacts/lists/12/contacts/add" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["user1@example.com", "user2@example.com"]
  }'

Retirer d'une liste

curl -X DELETE "https://api.brevo.com/v3/contacts/lists/12/contacts/remove" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["user@example.com"]
  }'

Désabonner un contact

curl -X PUT "https://api.brevo.com/v3/contacts/user@example.com" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emailBlacklisted": true
  }'

Marketing par SMS

Brevo envoie des messages SMS dans le monde entier via son API SMS.

Envoyer un SMS

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "VotreApp",
    "recipient": "+15551234567",
    "content": "Votre code de vérification est : 123456",
    "type": "transactional"
  }'

Envoyer un SMS marketing

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "VotreMarque",
    "recipient": "+15551234567",
    "content": "Vente flash ! 50% de réduction aujourd''hui seulement. Répondez STOP pour vous désabonner.",
    "type": "marketing"
  }'

Obtenir les statistiques SMS

curl -X GET "https://api.brevo.com/v3/transactionalSMS/statistics?startDate=2026-03-01&endDate=2026-03-31" \
  -H "api-key: your-api-key"

Webhooks pour le suivi

Les webhooks informent votre application des événements d'e-mail : livré, ouvert, cliqué, rebondi, désinscrit.

Configurer les webhooks

Dans le tableau de bord Brevo : Paramètres → Webhooks → Ajouter un webhook

Événements à suivre :

Gérer la charge utile du webhook

app.post('/webhooks/brevo', (req, res) => {
  const event = req.body
  
  switch (event.event) {
    case 'delivered':
      console.log(`Email ${event.messageId} livré à ${event.email}`)
      break
    case 'opened':
      console.log(`Email ouvert par ${event.email} à ${event.date}`)
      break
    case 'bounced':
      console.log(`Rebond : ${event.email} - ${event.reason}`)
      // Marquer le contact comme invalide
      markContactBounced(event.email)
      break
    case 'spam':
      console.log(`Plainte pour spam de ${event.email}`)
      // Supprimer de toutes les listes
      removeFromAllLists(event.email)
      break
    case 'unsubscribed':
      console.log(`Désinscrit : ${event.email}`)
      break
  }
  
  res.status(200).send('OK')
})

Tester avec Apidog

Les API d'e-mails ont des modes de défaillance complexes. Vous devez tester les modèles, les rebonds et les webhooks. Apidog aide à cela.

1. Simuler l'envoi d'e-mails

Pendant le développement, n'envoyez pas de vrais e-mails. Simulez la réponse :

pm.test('L\'API d\'e-mail accepte une charge utile valide', () => {
  const response = pm.response.json()
  pm.expect(response).to.have.property('messageId')
  pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})

2. Tester la gestion des webhooks

Créez des charges utiles de webhook simulées dans Apidog :

{
  "event": "bounced",
  "email": "invalid@example.com",
  "messageId": "<12345@relay.brevo.com>",
  "reason": "hard_bounce",
  "date": "2026-03-24T12:00:00Z",
  "subject": "Bienvenue sur Notre Plateforme"
}

Envoyez à votre endpoint de webhook et vérifiez que votre code le gère.

3. Valider les modèles

Stockez les charges utiles des modèles et testez que les variables sont remplacées correctement :

pm.test('Les variables de modèle sont valides', () => {
  const payload = pm.request.body.toJSON()
  pm.expect(payload.params).to.have.property('name')
  pm.expect(payload.params).to.have.property('order_number')
})

4. Séparation des environnements

# Développement
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@yourapp.com

# Production
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@yourapp.com

Testez les API d'e-mail Brevo avec Apidog - gratuit

Erreurs courantes et corrections

400 Bad Request - Champ requis manquant

Cause : La charge utile manque de champs obligatoires.

Correction : Vérifiez le message d'erreur pour les détails :

{
  "code": "invalid_parameter",
  "message": "sender.email est requis"
}

401 Non autorisé

Cause : Clé API invalide ou manquante.

Correction : Vérifiez que l'en-tête api-key est correctement défini. Vérifiez que la clé n'a pas été révoquée.

402 Paiement requis

Cause : Le compte a dépassé les limites ou manque de crédits.

Correction :

429 Trop de requêtes

Cause : Limite de débit dépassée.

Correction : Implémentez un backoff exponentiel :

async function sendWithRetry(email, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await sendEmail(email)
    if (response.status === 429) {
      await sleep(Math.pow(2, i) * 1000)
    } else {
      return response
    }
  }
  throw new Error('Limite de débit dépassée')
}

404 Contact non trouvé

Cause : Tentative de mise à jour d'un contact qui n'existe pas.

Correction : Utilisez updateEnabled: true lors de la création de contacts :

{
  "email": "new@example.com",
  "updateEnabled": true
}

Ceci crée ou met à jour le contact.

Alternatives et comparaisons

Fonctionnalité Brevo SendGrid Mailchimp Postmark
Tarification 300 e-mails/jour gratuits 100 e-mails/jour gratuits 500 e-mails/mois gratuits 100 e-mails/mois gratuits
E-mails marketing Oui Oui Oui Non
E-mails transactionnels Oui Oui Limité Oui (spécialisé)
SMS Oui Non Non Non
Automatisation Oui Oui Oui Limitée
Éditeur de modèles Visuel + code Code Visuel Code

Brevo se distingue par son support combiné e-mail et SMS à des prix compétitifs.

Cas d'utilisation réels

Flux de commande e-commerce. Une boutique en ligne utilise Brevo pour : la confirmation de commande (transactionnel), la notification d'expédition (transactionnel), la récupération de panier abandonné (automatisation marketing) et les promotions hebdomadaires (campagnes marketing). Le tout à partir d'une seule intégration.

Onboarding SaaS. Un outil de gestion de projet envoie des e-mails de bienvenue, des réinitialisations de mot de passe et des invitations d'équipe via l'API transactionnelle. Les e-mails marketing annoncent de nouvelles fonctionnalités aux utilisateurs abonnés.

Vérification par SMS. Une application fintech utilise l'API SMS de Brevo pour les codes d'authentification à deux facteurs. L'endpoint SMS transactionnel délivre les codes en quelques secondes, et les webhooks suivent les échecs de livraison pour une logique de réessai.

Conclusion

Voici ce que vous avez appris :

Vos prochaines étapes :

  1. Créez un compte Brevo et obtenez une clé API
  2. Envoyez votre premier e-mail transactionnel
  3. Créez un modèle dans l'éditeur visuel
  4. Configurez des gestionnaires de webhooks pour les rebonds et les désinscriptions
  5. Testez avec Apidog en développement

Testez les API d'e-mail Brevo avec Apidog - gratuit

button

FAQ

Quelle est la différence entre Brevo et Sendinblue ?Même produit, nouveau nom. Sendinblue a été renommé Brevo en 2023. Les API utilisent toujours api.brevo.com mais vous verrez des références à Sendinblue dans la documentation plus ancienne.

Combien d'e-mails puis-je envoyer gratuitement ?300 e-mails par jour sur le plan gratuit. Cela représente 9 000 e-mails par mois. Pour plus, passez à un plan payant à partir de 25 $/mois pour 20 000 e-mails.

Puis-je utiliser Brevo pour les e-mails froids (cold emails) ?Techniquement oui, mais c'est risqué. Les e-mails froids ont des taux de rebond et de spam élevés. Brevo surveille la réputation de l'expéditeur. Des taux de plainte élevés entraînent la suspension des comptes. Échauffez d'abord votre domaine et suivez les bonnes pratiques en matière d'e-mail.

Comment gérer les rebonds d'e-mails ?Écoutez les webhooks bounced. Les rebonds durs (e-mail invalide) doivent supprimer les contacts définitivement. Les rebonds doux (boîte de réception pleine, problèmes temporaires) peuvent être réessayés. Suivez le taux de rebond - s'il dépasse 5 %, votre réputation d'expéditeur diminue.

Quelle est la différence entre les e-mails marketing et transactionnels ?Les e-mails transactionnels sont déclenchés par des actions de l'utilisateur (achats, inscriptions) et sont envoyés à un seul destinataire. Les e-mails marketing sont des campagnes envoyées à de nombreux destinataires simultanément. Brevo les sépare pour des raisons de délivrabilité et de conformité.

Comment ajouter un lien de désinscription ?Brevo ajoute automatiquement des liens de désinscription aux e-mails marketing. Pour les e-mails transactionnels, ajoutez votre propre lien :

<a href="{{ unsubscribe_url }}">Se désinscrire</a>

Puis-je envoyer des e-mails depuis mon propre domaine ?Oui. Configurez les enregistrements SPF, DKIM et DMARC. Brevo fournit les valeurs dans Paramètres → Expéditeur & IP. Sans une authentification appropriée, les e-mails peuvent arriver dans le spam.

Comment programmer des e-mails dans un fuseau horaire spécifique ?Utilisez le paramètre scheduledAt avec un horodatage ISO 8601 :

{
  "scheduledAt": "2026-03-25T09:00:00-05:00"
}

Que se passe-t-il si j'atteins la limite de débit ?Vous recevrez une erreur 429. La réponse inclut l'en-tête X-RateLimit-Reset avec le nombre de secondes jusqu'à la réinitialisation. Implémentez un backoff exponentiel ou mettez les e-mails en file d'attente pour plus tard.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API