DEV Community

Cover image for Brevo APIs für SMS Marketing nutzen
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Brevo APIs für SMS Marketing nutzen

TL;DR

Mit den Brevo APIs können Sie Marketing-E-Mails, Transaktions-E-Mails und SMS-Nachrichten programmgesteuert versenden. Sie authentifizieren sich mit einem API-Schlüssel, senden Anfragen an api.brevo.com und verwenden Webhooks, um Zustellung und Engagement zu verfolgen. Nutzen Sie Apidog, um Payloads zu validieren, Webhook-Handler zu testen und sicherzustellen, dass Ihre Integration Bounces und Abmeldungen korrekt verarbeitet.

Testen Sie Apidog noch heute

Einleitung

Brevo (ehemals Sendinblue) verarbeitet täglich Millionen von E-Mails für über 500.000 Unternehmen. Es verwaltet Marketingkampagnen, Transaktions-E-Mails, SMS-Marketing und Automatisierungs-Workflows.

E-Mail-APIs wirken simpel – Nachricht senden, fertig. In der Produktion müssen jedoch Bounces, Spam-Beschwerden, Abmeldungen und Zustellzeiten berücksichtigt werden. Brevo übernimmt diese Komplexität für Sie.

Die API unterstützt drei Hauptanwendungsfälle:

  • Marketingkampagnen – Massen-E-Mails an Kontaktlisten
  • Transaktions-E-Mails – Passwortzurücksetzungen, Bestellbestätigungen, Benachrichtigungen
  • SMS-Nachrichten – Verifizierungscodes, Benachrichtigungen, Marketing-SMS

💡 Tipp: Bei der E-Mail-Integration in Ihre App hilft Apidog, Vorlagen zu testen, Webhook-Payloads zu validieren und Kompatibilität über verschiedene Clients sicherzustellen. Simulieren Sie Brevo-Antworten und testen Sie Fehlerfälle – ohne echte E-Mails zu versenden.

Authentifizierung und Einrichtung

API-Schlüssel abrufen

  1. Melden Sie sich bei Brevo an.
  2. Navigieren Sie zu SMTP & API → API-Schlüssel.
  3. Legen Sie einen neuen Schlüssel mit passenden Berechtigungen an.
  4. Speichern Sie den Schlüssel sicher.

Der API-Schlüssel wird im api-key Header übergeben:

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

API-Basis-URL

Alle Anfragen verwenden diese Basis-URL:

https://api.brevo.com/v3/
Enter fullscreen mode Exit fullscreen mode

Ratenbegrenzungen

Brevo limitiert Anfragen je nach Tarif:

  • Kostenlos: 300 Anfragen/Minute
  • Starter: 600 Anfragen/Minute
  • Business: 1200 Anfragen/Minute

Prüfen Sie den X-RateLimit-Remaining Header, um Ihre Nutzung zu überwachen.

Transaktions-E-Mails senden

Transaktions-E-Mails werden durch Benutzeraktionen ausgelöst, z. B. Passwort-Resets, Bestellbestätigungen oder Willkommensnachrichten.

Eine einfache E-Mail senden

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."
  }'
Enter fullscreen mode Exit fullscreen mode

Antwort:

{
  "messageId": "<20260324123456.123456@relay.brevo.com>"
}
Enter fullscreen mode Exit fullscreen mode

Vorlagen verwenden

Erstellen Sie Vorlagen im Brevo-Editor und senden Sie sie per Template-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"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Vorlagenvariablen nutzen doppelte geschweifte Klammern:

<p>Hallo {{params.name}},</p>
<p>Ihre Bestellung {{params.order_number}} wurde versandt.</p>
<p><a href="{{params.tracking_url}}">Verfolgen Sie Ihr Paket</a></p>
Enter fullscreen mode Exit fullscreen mode

Mit Anhängen senden

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>Bitte finden Sie Ihre Rechnung im Anhang.</p>',
    attachment: [
      {
        name: 'invoice.pdf',
        content: base64EncodedPdfContent
      }
    ]
  })
})
Enter fullscreen mode Exit fullscreen mode

Marketingkampagnen

Marketing-E-Mails werden an Kontaktlisten gesendet. Brevo regelt Abmeldungen, Zeitplanung und Reporting.

Kampagne erstellen

curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "name": "March Newsletter",
    "subject": "What'\''s New in March",
    "sender": {
      "name": "Your Brand",
      "email": "newsletter@yourbrand.com"
    },
    "type": "classic",
    "htmlContent": "<html><body>Newsletter content here...</body></html>",
    "recipients": {
      "listIds": [12, 15]
    },
    "scheduledAt": "2026-03-25T09:00:00+00:00"
  }'
Enter fullscreen mode Exit fullscreen mode

Sofort senden

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

Kampagnenstatistiken abrufen

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

Beispiel-Antwort:

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

Kontaktverwaltung

Verwalten Sie Empfänger in Listen und mit individuellen Attributen.

Kontakt erstellen

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
  }'
Enter fullscreen mode Exit fullscreen mode

Das Flag updateEnabled: true überschreibt bestehende Kontakte.

Kontaktdetails abrufen

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

Zu Liste hinzufügen

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"]
  }'
Enter fullscreen mode Exit fullscreen mode

Aus Liste entfernen

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"]
  }'
Enter fullscreen mode Exit fullscreen mode

Kontakt abmelden

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
  }'
Enter fullscreen mode Exit fullscreen mode

SMS-Marketing

Brevo unterstützt weltweiten SMS-Versand.

SMS senden

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "YourApp",
    "recipient": "+15551234567",
    "content": "Your verification code is: 123456",
    "type": "transactional"
  }'
Enter fullscreen mode Exit fullscreen mode

Marketing-SMS senden

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "YourBrand",
    "recipient": "+15551234567",
    "content": "Flash sale! 50% off today only. Reply STOP to unsubscribe.",
    "type": "marketing"
  }'
Enter fullscreen mode Exit fullscreen mode

SMS-Statistiken abrufen

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

Webhooks zur Nachverfolgung

Webhooks informieren Ihre App über E-Mail-Ereignisse: zugestellt, geöffnet, geklickt, gebounced, abgemeldet.

Webhooks konfigurieren

Gehen Sie im Brevo-Dashboard zu Einstellungen → Webhooks → Webhook hinzufügen.

Typische Ereignisse:

  • delivered
  • opened
  • clicked
  • bounced
  • spam
  • unsubscribed

Webhook-Payload verarbeiten

app.post('/webhooks/brevo', (req, res) => {
  const event = req.body

  switch (event.event) {
    case 'delivered':
      console.log(`E-Mail ${event.messageId} zugestellt an ${event.email}`)
      break
    case 'opened':
      console.log(`E-Mail geöffnet von ${event.email} am ${event.date}`)
      break
    case 'bounced':
      console.log(`Bounce: ${event.email} - ${event.reason}`)
      // Kontakt als ungültig markieren
      markContactBounced(event.email)
      break
    case 'spam':
      console.log(`Spam-Beschwerde von ${event.email}`)
      // Aus allen Listen entfernen
      removeFromAllLists(event.email)
      break
    case 'unsubscribed':
      console.log(`Abgemeldet: ${event.email}`)
      break
  }

  res.status(200).send('OK')
})
Enter fullscreen mode Exit fullscreen mode

Testen mit Apidog

E-Mail-APIs haben komplexe Fehlermodi. Testen Sie Vorlagen, Bounces und Webhooks mit Apidog.

Apidog Screenshot

1. E-Mail-Versand simulieren

Versenden Sie beim Entwickeln keine echten E-Mails. Simulieren Sie die Antwort:

pm.test('E-Mail-API akzeptiert gültige Payload', () => {
  const response = pm.response.json()
  pm.expect(response).to.have.property('messageId')
  pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})
Enter fullscreen mode Exit fullscreen mode

Apidog Screenshot

2. Webhook-Verarbeitung testen

Erstellen Sie simulierte Webhook-Payloads in Apidog:

{
  "event": "bounced",
  "email": "invalid@example.com",
  "messageId": "<12345@relay.brevo.com>",
  "reason": "hard_bounce",
  "date": "2026-03-24T12:00:00Z",
  "subject": "Welcome to Our Platform"
}
Enter fullscreen mode Exit fullscreen mode

Senden Sie diese an Ihren Webhook-Endpunkt und prüfen Sie, ob Ihr Code korrekt reagiert.

3. Vorlagen validieren

Testen Sie, ob Vorlagenvariablen korrekt ersetzt werden:

pm.test('Vorlagenvariablen sind gültig', () => {
  const payload = pm.request.body.toJSON()
  pm.expect(payload.params).to.have.property('name')
  pm.expect(payload.params).to.have.property('order_number')
})
Enter fullscreen mode Exit fullscreen mode

4. Umgebungstrennung

# Entwicklung
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@yourapp.com

# Produktion
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@yourapp.com
Enter fullscreen mode Exit fullscreen mode

Testen Sie Brevo E-Mail APIs mit Apidog – kostenlos.

Häufige Fehler und Behebungen

400 Bad Request – Erforderliches Feld fehlt

Ursache: Fehlende Felder in der Payload.

Behebung: Details der Fehlermeldung prüfen:

{
  "code": "invalid_parameter",
  "message": "sender.email is required"
}
Enter fullscreen mode Exit fullscreen mode

401 Unauthorized

Ursache: Ungültiger oder fehlender API-Schlüssel.

Behebung: Prüfen Sie den api-key Header und stellen Sie sicher, dass der Schlüssel gültig ist.

402 Payment Required

Ursache: Limits überschritten oder kein Guthaben.

Behebung:

  • Für E-Mails: Plan-Limits prüfen
  • Für SMS: SMS-Guthaben aufladen

429 Too Many Requests

Ursache: Ratenlimit überschritten.

Behebung: Exponentielles Backoff implementieren:

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('Rate limit exceeded')
}
Enter fullscreen mode Exit fullscreen mode

404 Contact not found

Ursache: Kontakt existiert nicht.

Behebung: Beim Erstellen updateEnabled: true setzen:

{
  "email": "new@example.com",
  "updateEnabled": true
}
Enter fullscreen mode Exit fullscreen mode

Alternativen und Vergleiche

Funktion Brevo SendGrid Mailchimp Postmark
Preise 300 E-Mails/Tag kostenlos 100 E-Mails/Tag kostenlos 500 E-Mails/Monat kostenlos 100 E-Mails/Monat kostenlos
Marketing-E-Mails Ja Ja Ja Nein
Transaktions-E-Mails Ja Ja Eingeschränkt Ja (spezialisiert)
SMS Ja Nein Nein Nein
Automatisierung Ja Ja Ja Eingeschränkt
Vorlagen-Editor Visuell + Code Code Visuell Code

Brevo kombiniert E-Mail- und SMS-Support zu wettbewerbsfähigen Preisen.

Praktische Anwendungsfälle

E-Commerce-Workflow: Online-Shops nutzen Brevo für Bestellbestätigungen, Versandbenachrichtigungen, Warenkorbabbrecher (Marketing-Automation) und wöchentliche Aktionen – alles über eine Integration.

SaaS-Onboarding: Projektmanagement-Tools senden Willkommensmails, Passwort-Resets und Teameinladungen via Transaktions-API. Feature-Updates laufen über Marketing-E-Mails.

SMS-Verifizierung: Fintech-Apps nutzen Brevo-SMS für 2FA-Codes. Webhooks überwachen Zustellfehler und steuern Wiederholungslogik.

Fazit

Das haben Sie gelernt:

  • Mit Brevo APIs können Sie Marketing, Transaktions-E-Mails und SMS steuern.
  • Authentifizierung erfolgt über den api-key Header.
  • Nutzen Sie Vorlagen für konsistente E-Mails.
  • Kontakt- und Listenmanagement für gezielte Kampagnen.
  • Webhooks tracken Zustellung, Öffnungen, Klicks und Bounces.
  • Testen Sie alles mit Apidog, bevor Sie an echte Nutzer senden.

Nächste Schritte:

  1. Brevo-Konto erstellen und API-Schlüssel generieren
  2. Erste Transaktions-E-Mail senden
  3. Vorlage im visuellen Editor erstellen
  4. Webhook-Handler für Bounces und Abmeldungen einrichten
  5. Entwicklung mit Apidog testen

Testen Sie Brevo E-Mail APIs mit Apidog – kostenlos

FAQ

Was ist der Unterschied zwischen Brevo und Sendinblue?

Gleiches Produkt, neuer Name. Sendinblue wurde 2023 zu Brevo. Die APIs laufen über api.brevo.com, ältere Dokus können noch Sendinblue erwähnen.

Wie viele E-Mails kann ich kostenlos versenden?

300 E-Mails/Tag im Free-Plan (9.000/Monat). Mehr gibt’s ab 25 $/Monat für 20.000 E-Mails.

Kann ich Brevo für Cold Emails nutzen?

Technisch ja, aber riskant. Cold Mails erzeugen viele Bounces/Spams. Hohe Beschwerderaten führen zur Sperrung. Domain vorwärmen und Best Practices beachten.

Wie gehe ich mit E-Mail-Bounces um?

Hören Sie auf bounced Webhooks. Hard Bounces → Kontakt löschen. Soft Bounces → erneuter Versuch. Über 5 % Bounces gefährden Ihre Absenderreputation.

Was ist der Unterschied zwischen Marketing- und Transaktions-E-Mails?

Transaktions-E-Mails werden durch Aktionen ausgelöst und gehen an Einzelpersonen. Marketing-E-Mails sind Kampagnen an viele Empfänger. Brevo trennt die beiden Typen für bessere Zustellbarkeit.

Wie füge ich einen Abmeldelink hinzu?

Brevo fügt Marketing-E-Mails automatisch einen Abmeldelink hinzu. Bei Transaktions-E-Mails Link manuell einbauen:

<a href="{{ unsubscribe_url }}">Abmelden</a>
Enter fullscreen mode Exit fullscreen mode

Kann ich E-Mails von meiner eigenen Domain versenden?

Ja. SPF, DKIM und DMARC einrichten (Werte unter Einstellungen → Absender & IP). Ohne Authentifizierung landen Mails oft im Spam.

Wie plane ich E-Mails in einer bestimmten Zeitzone?

Mit dem Parameter scheduledAt als ISO 8601 Zeitstempel:

{
  "scheduledAt": "2026-03-25T09:00:00-05:00"
}
Enter fullscreen mode Exit fullscreen mode

Was passiert bei Ratenlimit-Überschreitung?

Sie erhalten einen 429-Fehler. Die Antwort enthält X-RateLimit-Reset. Backoff implementieren oder E-Mails für später einreihen.

Top comments (0)