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.
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
- Melden Sie sich bei Brevo an.
- Navigieren Sie zu SMTP & API → API-Schlüssel.
- Legen Sie einen neuen Schlüssel mit passenden Berechtigungen an.
- 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"
API-Basis-URL
Alle Anfragen verwenden diese Basis-URL:
https://api.brevo.com/v3/
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."
}'
Antwort:
{
"messageId": "<20260324123456.123456@relay.brevo.com>"
}
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"
}
}'
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>
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 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"
}'
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"
Beispiel-Antwort:
{
"statistics": {
"delivered": 4850,
"opened": 1455,
"clicked": 291,
"unsubscribed": 12,
"bounces": 150
}
}
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
}'
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"
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"]
}'
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 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"
}'
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 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:
deliveredopenedclickedbouncedspamunsubscribed
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 haben komplexe Fehlermodi. Testen Sie Vorlagen, Bounces und Webhooks mit Apidog.
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>/)
})
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 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')
})
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: Fehlende Felder in der Payload.
Behebung: Details der Fehlermeldung prüfen:
{
"code": "invalid_parameter",
"message": "sender.email is required"
}
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')
}
404 Contact not found
Ursache: Kontakt existiert nicht.
Behebung: Beim Erstellen updateEnabled: true setzen:
{
"email": "new@example.com",
"updateEnabled": true
}
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-keyHeader. - 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:
- Brevo-Konto erstellen und API-Schlüssel generieren
- Erste Transaktions-E-Mail senden
- Vorlage im visuellen Editor erstellen
- Webhook-Handler für Bounces und Abmeldungen einrichten
- 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>
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"
}
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)