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. Verwenden Sie für Tests Apidog, um Payloads zu validieren, Webhook-Handler zu testen und sicherzustellen, dass Ihre Integration Bounces und Abmeldungen korrekt verarbeitet.
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 scheinen einfach zu sein – eine Nachricht senden, fertig. Produktions-E-Mail-Systeme müssen jedoch Bounces, Spam-Beschwerden, Abmeldungen und Zustellzeiten handhaben. Brevo verwaltet diese Komplexität, damit Sie es nicht tun müssen.
Die API deckt drei Hauptanwendungsfälle ab:
- Marketingkampagnen – Massen-E-Mails an Kontaktlisten
- Transaktions-E-Mails – Passwortzurücksetzungen, Bestellbestätigungen, Benachrichtigungen
- SMS-Nachrichten – Verifizierungscodes, Benachrichtigungen, Marketing-SMS
Authentifizierung und Einrichtung
API-Schlüssel abrufen
- Melden Sie sich bei Brevo an
- Gehen Sie zu SMTP & API → API-Schlüssel
- Erstellen Sie einen neuen Schlüssel mit entsprechenden Berechtigungen
- Speichern Sie ihn 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"
API-Basis-URL
Alle Anfragen gehen an:
https://api.brevo.com/v3/
Ratenbegrenzungen
Brevo begrenzt Anfragen je nach Plan:
- Kostenlos: 300 Anfragen/Minute
- Starter: 600 Anfragen/Minute
- Business: 1200 Anfragen/Minute
Überprüfen Sie den X-RateLimit-Remaining Header, um die Nutzung zu verfolgen.
Transaktions-E-Mails senden
Transaktions-E-Mails sind individuelle Nachrichten, die durch Benutzeraktionen ausgelöst werden. Denken Sie an Passwortzurücksetzungen, Bestellbestätigungen, Willkommens-E-Mails.
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."
}'
Antwort:
{
"messageId": "<20260324123456.123456@relay.brevo.com>"
}
Vorlagen verwenden
Erstellen Sie Vorlagen im visuellen Editor von Brevo und senden Sie sie dann per 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"
}
}'
Vorlagenvariablen verwenden 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>
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
}
]
})
})
Marketingkampagnen
Marketing-E-Mails gehen an Kontaktlisten. Brevo verwaltet Abmeldelinks, Planung und Analysen.
Eine 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"
}'
Sofort senden
curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
-H "api-key: your-api-key"
Kampagnenstatistiken abrufen
curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
-H "api-key: your-api-key"
Die Antwort enthält:
{
"statistics": {
"delivered": 4850,
"opened": 1455,
"clicked": 291,
"unsubscribed": 12,
"bounces": 150
}
}
Kontaktverwaltung
Kontakte sind die Personen, denen Sie E-Mails senden. Organisieren Sie sie in Listen und fügen Sie benutzerdefinierte Attribute hinzu.
Einen 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
}'
Das Flag updateEnabled: true aktualisiert bestehende Kontakte anstatt fehlzuschlagen.
Kontaktdetails abrufen
curl -X GET "https://api.brevo.com/v3/contacts/user@example.com" \
-H "api-key: your-api-key"
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"]
}'
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"]
}'
Einen 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
}'
SMS-Marketing
Brevo versendet SMS-Nachrichten weltweit über seine SMS-API.
Eine 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"
}'
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"
}'
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"
Webhooks zur Nachverfolgung
Webhooks benachrichtigen Ihre App über E-Mail-Ereignisse: zugestellt, geöffnet, geklickt, gebounced, abgemeldet.
Webhooks konfigurieren
Im Brevo-Dashboard: Einstellungen → Webhooks → Webhook hinzufügen
Zu verfolgende Ereignisse:
delivered– E-Mail wurde im Posteingang zugestelltopened– Empfänger hat die E-Mail geöffnetclicked– Empfänger hat auf einen Link geklicktbounced– E-Mail wurde gebounced (Hard Bounce oder Soft Bounce)spam– Als Spam markiertunsubscribed– Empfänger hat sich abgemeldet
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')
})
Testen mit Apidog
E-Mail-APIs weisen komplexe Fehlermodi auf. Sie müssen Vorlagen, Bounces und Webhooks testen. Apidog hilft dabei.

1. E-Mail-Versand simulieren
Senden Sie während der Entwicklung 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>/)
})

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"
}
Senden Sie es an Ihren Webhook-Endpunkt und überprüfen Sie, ob Ihr Code es verarbeitet.
3. Vorlagen validieren
Speichern Sie Vorlagen-Payloads und testen Sie, ob Variablen 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')
})
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
Testen Sie Brevo E-Mail APIs mit Apidog – kostenlos
Häufige Fehler und Behebungen
400 Bad Request – Erforderliches Feld fehlt
Ursache: Payload fehlen erforderliche Felder.
Behebung: Überprüfen Sie die Fehlermeldung auf Details:
{
"code": "invalid_parameter",
"message": "sender.email is required"
}
401 Unauthorized
Ursache: Ungültiger oder fehlender API-Schlüssel.
Behebung: Überprüfen Sie, ob der api-key Header korrekt gesetzt ist. Überprüfen Sie, ob der Schlüssel nicht widerrufen wurde.
402 Payment Required
Ursache: Konto hat Limits überschritten oder es fehlen Guthaben.
Behebung:
- Für E-Mails: Überprüfen Sie die E-Mail-Limits Ihres Plans
- Für SMS: SMS-Guthaben kaufen
429 Too Many Requests
Ursache: Ratenbegrenzung überschritten.
Behebung: Implementieren Sie exponentielles Backoff:
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')
}
404 Contact not found
Ursache: Versuch, einen nicht existierenden Kontakt zu aktualisieren.
Behebung: Verwenden Sie updateEnabled: true beim Erstellen von Kontakten:
{
"email": "new@example.com",
"updateEnabled": true
}
Dies erstellt oder aktualisiert den Kontakt.
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 zeichnet sich durch kombinierten E-Mail- und SMS-Support zu wettbewerbsfähigen Preisen aus.
Praktische Anwendungsfälle
E-Commerce-Bestellablauf. Ein Online-Shop verwendet Brevo für: Bestellbestätigung (transaktional), Versandbenachrichtigung (transaktional), Wiederherstellung abgebrochener Warenkörbe (Marketing-Automatisierung) und wöchentliche Werbeaktionen (Marketingkampagnen). Alles aus einer Integration.
SaaS-Onboarding. Ein Projektmanagement-Tool sendet Willkommens-E-Mails, Passwortzurücksetzungen und Teameinladungen über die Transaktions-API. Marketing-E-Mails informieren angemeldete Benutzer über neue Funktionen.
SMS-Verifizierung. Eine Fintech-App verwendet die SMS-API von Brevo für Zwei-Faktor-Authentifizierungscodes. Der transaktionale SMS-Endpunkt liefert Codes innerhalb von Sekunden, und Webhooks verfolgen Zustellfehler für die Wiederholungslogik.
Fazit
Hier ist, was Sie gelernt haben:
- Brevo APIs verwalten Marketing, Transaktions-E-Mails und SMS
- Authentifizierung mit dem
api-keyHeader - Verwenden Sie Vorlagen für konsistente, wartbare E-Mails
- Verwalten Sie Kontakte und Listen für gezielte Kampagnen
- Webhooks verfolgen Zustellung, Öffnungen, Klicks und Bounces
- Testen Sie mit Apidog, bevor Sie an echte Benutzer senden
Ihre nächsten Schritte:
- Erstellen Sie ein Brevo-Konto und erhalten Sie einen API-Schlüssel
- Senden Sie Ihre erste Transaktions-E-Mail
- Erstellen Sie eine Vorlage im visuellen Editor
- Richten Sie Webhook-Handler für Bounces und Abmeldungen ein
- Testen Sie mit Apidog in der Entwicklung
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 in Brevo umbenannt. APIs verwenden immer noch api.brevo.com, aber Sie werden in älteren Dokumentationen Verweise auf Sendinblue finden.
Wie viele E-Mails kann ich kostenlos versenden?300 E-Mails pro Tag im kostenlosen Plan. Das sind 9.000 E-Mails pro Monat. Für mehr E-Mails können Sie auf einen kostenpflichtigen Plan upgraden, der ab 25 $/Monat für 20.000 E-Mails erhältlich ist.
Kann ich Brevo für Cold Emails verwenden?Technisch ja, aber es ist riskant. Cold Emails haben hohe Bounce- und Spam-Raten. Brevo überwacht die Absenderreputation. Hohe Beschwerderaten führen zur Sperrung von Konten. Wärmen Sie Ihre Domain zuerst auf und befolgen Sie die Best Practices für E-Mails.
Wie gehe ich mit E-Mail-Bounces um?Hören Sie auf bounced Webhooks. Hard Bounces (ungültige E-Mail) sollten Kontakte dauerhaft entfernen. Soft Bounces (Postfach voll, temporäre Probleme) können erneut versucht werden. Verfolgen Sie die Bounce-Rate – wenn sie 5 % übersteigt, sinkt Ihre Absenderreputation.
Was ist der Unterschied zwischen Marketing- und Transaktions-E-Mails?Transaktions-E-Mails werden durch Benutzeraktionen (Käufe, Anmeldungen) ausgelöst und gehen an einen Empfänger. Marketing-E-Mails sind Kampagnen, die gleichzeitig an viele Empfänger gesendet werden. Brevo trennt sie aus Gründen der Zustellbarkeit und Compliance.
Wie füge ich einen Abmeldelink hinzu?Brevo fügt Marketing-E-Mails automatisch Abmeldelinks hinzu. Für Transaktions-E-Mails fügen Sie Ihren eigenen Link hinzu:
<a href="{{ unsubscribe_url }}">Abmelden</a>
Kann ich E-Mails von meiner eigenen Domain versenden?Ja. Richten Sie SPF-, DKIM- und DMARC-Einträge ein. Brevo stellt die Werte unter Einstellungen → Absender & IP bereit. Ohne ordnungsgemäße Authentifizierung können E-Mails im Spam landen.
Wie plane ich E-Mails in einer bestimmten Zeitzone?Verwenden Sie den Parameter scheduledAt mit einem ISO 8601 Zeitstempel:
{
"scheduledAt": "2026-03-25T09:00:00-05:00"
}
Was passiert, wenn ich das Ratenlimit erreiche?Sie erhalten einen 429-Fehler. Die Antwort enthält den X-RateLimit-Reset Header mit den Sekunden bis zum Zurücksetzen. Implementieren Sie exponentielles Backoff oder stellen Sie E-Mails für später in die Warteschlange.
