Kısaca
Brevo API'leri, pazarlama e-postalarını, işlemsel e-postaları ve SMS mesajlarını programlı olarak göndermenizi sağlar. Bir API anahtarıyla kimlik doğrulaması yapar, api.brevo.com adresine istek gönderir ve teslimat ile etkileşimi izlemek için web kancalarını kullanırsınız. Test için Apidog'u kullanarak yükleri doğrulayın, web kancası işleyicilerini test edin ve entegrasyonunuzun geri dönenleri ve abonelikten çıkmaları doğru şekilde ele aldığından emin olun.
Giriş
Brevo (eski adıyla Sendinblue), 500.000'den fazla işletme için günlük milyonlarca e-posta işler. Pazarlama kampanyaları, işlemsel e-postalar, SMS pazarlaması ve otomasyon iş akışlarını yönetir.
E-posta API'leri basit görünür - bir mesaj gönder, bitti. Ancak üretim e-posta sistemleri, geri dönenleri, spam şikayetlerini, abonelikten çıkmaları ve teslimat zamanlamasını yönetmelidir. Brevo bu karmaşıklığı sizin için yönetir.
API üç ana kullanım senaryosunu kapsar:
- Pazarlama kampanyaları - Kişi listelerine toplu e-postalar
- İşlemsel e-postalar - Şifre sıfırlamaları, sipariş onayları, bildirimler
- SMS mesajları - Doğrulama kodları, uyarılar, pazarlama metinleri
Kimlik Doğrulama ve Kurulum
Bir API anahtarı edinin
- Brevo'ya giriş yapın
- SMTP & API → API Anahtarları'na gidin
- Uygun izinlere sahip yeni bir anahtar oluşturun
- Güvenli bir şekilde saklayın
API anahtarı api-key başlığına eklenir:
curl -X GET "https://api.brevo.com/v3/account" \
-H "accept: application/json" \
-H "api-key: your-api-key-here"
API taban URL'si
Tüm istekler şuraya gider:
https://api.brevo.com/v3/
Oran Sınırları
Brevo, isteklere plana göre sınırlar getirir:
- Ücretsiz: 300 istek/dakika
- Başlangıç: 600 istek/dakika
- İşletme: 1200 istek/dakika
Kullanımı izlemek için X-RateLimit-Remaining başlığını kontrol edin.
İşlemsel E-postalar Gönderme
İşlemsel e-postalar, kullanıcı eylemleri tarafından tetiklenen bireysel mesajlardır. Şifre sıfırlamaları, sipariş onayları, hoş geldiniz e-postaları gibi düşünebilirsiniz.
Basit bir e-posta gönderin
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": "Uygulamanız",
"email": "noreply@yourapp.com"
},
"to": [
{
"email": "user@example.com",
"name": "John Doe"
}
],
"subject": "Platformumuza Hoş Geldiniz",
"htmlContent": "<html><body><h1>Hoş Geldiniz!</h1><p>Kaydolduğunuz için teşekkür ederiz.</p></body></html>",
"textContent": "Hoş Geldiniz! Kaydolduğunuz için teşekkür ederiz."
}'
Yanıt:
{
"messageId": "<20260324123456.123456@relay.brevo.com>"
}
Şablonları Kullanma
Brevo'nun görsel düzenleyicisinde şablonlar oluşturun, ardından ID ile gönderin:
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"
}
}'
Şablon değişkenleri çift parantez kullanır:
<p>Merhaba {{params.name}},</p>
<p>Siparişiniz {{params.order_number}} kargoya verildi.</p>
<p><a href="{{params.tracking_url}}">Paketinizi takip edin</a></p>
Eklerle gönderin
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: 'Uygulamanız', email: 'noreply@yourapp.com' },
to: [{ email: 'user@example.com' }],
subject: 'Faturanız',
htmlContent: '<p>Lütfen faturanızı ekte bulabilirsiniz.</p>',
attachment: [
{
name: 'invoice.pdf',
content: base64EncodedPdfContent
}
]
})
})
Pazarlama Kampanyaları
Pazarlama e-postaları, kişi listelerine gönderilir. Brevo, abonelikten çıkma bağlantılarını, zamanlamayı ve analitikleri yönetir.
Bir kampanya oluşturun
curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"name": "Mart Bülteni",
"subject": "Mart'ta Yenilikler",
"sender": {
"name": "Markanız",
"email": "newsletter@yourbrand.com"
},
"type": "classic",
"htmlContent": "<html><body>Bülten içeriği buraya...</body></html>",
"recipients": {
"listIds": [12, 15]
},
"scheduledAt": "2026-03-25T09:00:00+00:00"
}'
Hemen gönderin
curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
-H "api-key: your-api-key"
Kampanya istatistiklerini alın
curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
-H "api-key: your-api-key"
Yanıt şunları içerir:
{
"statistics": {
"delivered": 4850,
"opened": 1455,
"clicked": 291,
"unsubscribed": 12,
"bounces": 150
}
}
Kişi Yönetimi
Kişiler, e-posta gönderdiğiniz kişilerdir. Onları listelere ayırın ve özel nitelikler ekleyin.
Bir kişi oluşturun
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
}'
updateEnabled: true bayrağı, var olan kişileri başarısız olmak yerine günceller.
Kişi ayrıntılarını alın
curl -X GET "https://api.brevo.com/v3/contacts/user@example.com" \
-H "api-key: your-api-key"
Listeye ekle
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"]
}'
Listeden çıkar
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"]
}'
Bir kişinin aboneliğini iptal edin
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 Pazarlaması
Brevo, SMS API'si aracılığıyla küresel olarak SMS mesajları gönderir.
Bir SMS gönderin
curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"sender": "Uygulamanız",
"recipient": "+15551234567",
"content": "Doğrulama kodunuz: 123456",
"type": "transactional"
}'
Pazarlama SMS'i gönderin
curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
-H "api-key: your-api-key" \
-H "content-type: application/json" \
-d '{
"sender": "Markanız",
"recipient": "+15551234567",
"content": "Flaş indirim! Sadece bugün %50 indirim. Abonelikten çıkmak için DUR yazın.",
"type": "marketing"
}'
SMS istatistiklerini alın
curl -X GET "https://api.brevo.com/v3/transactionalSMS/statistics?startDate=2026-03-01&endDate=2026-03-31" \
-H "api-key: your-api-key"
İzleme için Web Kancaları
Web kancaları, uygulamanıza e-posta olayları hakkında bildirim gönderir: teslim edildi, açıldı, tıklandı, geri döndü, abonelikten çıktı.
Web kancalarını yapılandırın
Brevo panosunda: Ayarlar → Web Kancaları → Web kancası ekle
İzlenecek olaylar:
delivered- E-posta gelen kutusuna ulaştıopened- Alıcı e-postayı açtıclicked- Alıcı bir bağlantıya tıkladıbounced- E-posta geri döndü (kalıcı veya geçici)spam- Spam olarak işaretlendiunsubscribed- Alıcı abonelikten çıktı
Web kancası yükünü işleyin
app.post('/webhooks/brevo', (req, res) => {
const event = req.body
switch (event.event) {
case 'delivered':
console.log(`Email ${event.messageId} ${event.email} adresine teslim edildi.`)
break
case 'opened':
console.log(`E-posta ${event.email} tarafından ${event.date} tarihinde açıldı.`)
break
case 'bounced':
console.log(`Geri Dönüş: ${event.email} - ${event.reason}`)
// Kişiyi geçersiz olarak işaretle
markContactBounced(event.email)
break
case 'spam':
console.log(`${event.email} adresinden spam şikayeti.`)
// Tüm listelerden kaldır
removeFromAllLists(event.email)
break
case 'unsubscribed':
console.log(`Abonelikten çıktı: ${event.email}`)
break
}
res.status(200).send('OK')
})
Apidog ile Test Etme
E-posta API'lerinin karmaşık hata modları vardır. Şablonları, geri dönenleri ve web kancalarını test etmeniz gerekir. Apidog size yardımcı olur.

1. E-posta göndermeyi taklit edin
Geliştirme sırasında gerçek e-posta göndermeyin. Yanıtı taklit edin:
pm.test('E-posta API'si geçerli yükü kabul eder', () => {
const response = pm.response.json()
pm.expect(response).to.have.property('messageId')
pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})

2. Web kancası işlemeyi test edin
Apidog'da sahte web kancası yükleri oluşturun:
{
"event": "bounced",
"email": "invalid@example.com",
"messageId": "<12345@relay.brevo.com>",
"reason": "hard_bounce",
"date": "2026-03-24T12:00:00Z",
"subject": "Platformumuza Hoş Geldiniz"
}
Web kancası uç noktanıza gönderin ve kodunuzun bunu işlediğini doğrulayın.
3. Şablonları doğrulayın
Şablon yüklerini saklayın ve değişkenlerin doğru şekilde değiştirildiğini test edin:
pm.test('Şablon değişkenleri geçerlidir', () => {
const payload = pm.request.body.toJSON()
pm.expect(payload.params).to.have.property('name')
pm.expect(payload.params).to.have.property('order_number')
})
4. Ortam ayrımı
# Geliştirme
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@yourapp.com
# Üretim
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@yourapp.com
Brevo e-posta API'lerini Apidog ile test edin - ücretsiz
Yaygın Hatalar ve Düzeltmeleri
400 Bad Request - Gerekli alan eksik
Neden: Yükte gerekli alanlar eksik.
Düzeltme: Belirginlikler için hata mesajını kontrol edin:
{
"code": "invalid_parameter",
"message": "sender.email gereklidir"
}
401 Yetkilendirilmemiş
Neden: Geçersiz veya eksik API anahtarı.
Düzeltme: api-key başlığının doğru ayarlandığını doğrulayın. Anahtarın iptal edilip edilmediğini kontrol edin.
402 Ödeme Gerekli
Neden: Hesap limitleri aştı veya kredi eksik.
Düzeltme:
- E-posta için: Planınızın e-posta limitlerini kontrol edin
- SMS için: SMS kredisi satın alın
429 Çok Fazla İstek
Neden: Oran sınırı aşıldı.
Düzeltme: Üstel geri çekilme uygulayın:
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('Oran sınırı aşıldı')
}
404 Kişi bulunamadı
Neden: Var olmayan bir kişiyi güncellemeye çalışılıyor.
Düzeltme: Kişi oluştururken updateEnabled: true kullanın:
{
"email": "new@example.com",
"updateEnabled": true
}
Bu, kişiyi oluşturur veya günceller.
Alternatifler ve Karşılaştırmalar
| Özellik | Brevo | SendGrid | Mailchimp | Postmark |
|---|---|---|---|---|
| Fiyatlandırma | Günde 300 e-posta ücretsiz | Günde 100 e-posta ücretsiz | Ayda 500 e-posta ücretsiz | Ayda 100 e-posta ücretsiz |
| Pazarlama e-postaları | Evet | Evet | Evet | Hayır |
| İşlemsel e-postalar | Evet | Evet | Sınırlı | Evet (uzmanlaşmış) |
| SMS | Evet | Hayır | Hayır | Hayır |
| Otomasyon | Evet | Evet | Evet | Sınırlı |
| Şablon düzenleyici | Görsel + kod | Kod | Görsel | Kod |
Brevo, rekabetçi fiyatlarla birleşik e-posta ve SMS desteğiyle öne çıkıyor.
Gerçek Dünya Kullanım Senaryoları
E-ticaret sipariş akışı. Bir online mağaza Brevo'yu şunlar için kullanır: sipariş onayı (işlemsel), kargo bildirimi (işlemsel), terk edilmiş sepet kurtarma (pazarlama otomasyonu) ve haftalık promosyonlar (pazarlama kampanyaları). Hepsi tek bir entegrasyondan.
SaaS katılımı. Bir proje yönetimi aracı, işlemsel API aracılığıyla hoş geldiniz e-postaları, şifre sıfırlamaları ve ekip davetiyeleri gönderir. Pazarlama e-postaları, izin veren kullanıcılara yeni özellikleri duyurur.
SMS doğrulaması. Bir finans teknolojisi uygulaması, iki faktörlü kimlik doğrulama kodları için Brevo'nun SMS API'sini kullanır. İşlemsel SMS uç noktası kodları saniyeler içinde teslim eder ve web kancaları, yeniden deneme mantığı için teslimat hatalarını izler.
Sonuç
İşte öğrendikleriniz:
- Brevo API'leri pazarlama, işlemsel e-posta ve SMS'i yönetir
api-keybaşlığıyla kimlik doğrulaması yapın- Tutarlı, bakımı kolay e-postalar için şablonları kullanın
- Hedefli kampanyalar için kişileri ve listeleri yönetin
- Web kancaları teslimatı, açılmaları, tıklamaları ve geri dönenleri izler
- Gerçek kullanıcılara göndermeden önce Apidog ile test edin
Sonraki adımlarınız:
- Bir Brevo hesabı oluşturun ve bir API anahtarı edinin
- İlk işlemsel e-postanızı gönderin
- Görsel düzenleyicide bir şablon oluşturun
- Geri dönenler ve abonelikten çıkanlar için web kancası işleyicilerini kurun
- Geliştirmede Apidog ile test edin
Brevo e-posta API'lerini Apidog ile test edin - ücretsiz
Sıkça Sorulan Sorular
Brevo ile Sendinblue arasındaki fark nedir?Aynı ürün, yeni isim. Sendinblue 2023'te Brevo olarak yeniden markalandı. API'ler hala api.brevo.com kullanıyor ancak eski belgelerde Sendinblue referanslarını göreceksiniz.
Ücretsiz kaç e-posta gönderebilirim?Ücretsiz planda günde 300 e-posta. Bu, ayda 9.000 e-posta demektir. Daha fazlası için, 20.000 e-posta için aylık 25 dolardan başlayan ücretli bir plana yükseltin.
Brevo'yu soğuk e-postalar için kullanabilir miyim?Teknik olarak evet, ancak riskli. Soğuk e-postaların geri dönüş ve spam oranları yüksektir. Brevo, gönderen itibarını izler. Yüksek şikayet oranları hesapların askıya alınmasına neden olur. Önce alan adınızı ısıtın ve e-posta en iyi uygulamalarını takip edin.
E-posta geri dönenlerini nasıl hallederim?bounced web kancalarını dinleyin. Kalıcı geri dönenler (geçersiz e-posta) kişileri kalıcı olarak kaldırmalıdır. Geçici geri dönenler (posta kutusu dolu, geçici sorunlar) yeniden denenebilir. Geri dönüş oranını takip edin - %5'i aşarsa, gönderen itibarınız düşer.
Pazarlama ve işlemsel e-postalar arasındaki fark nedir?İşlemsel e-postalar kullanıcı eylemleri (satın alımlar, kayıtlar) tarafından tetiklenir ve tek bir alıcıya gider. Pazarlama e-postaları, aynı anda birçok alıcıya gönderilen kampanyalardır. Brevo, teslim edilebilirlik ve uyumluluk nedenleriyle bunları ayırır.
Abonelikten çıkma bağlantısı nasıl eklenir?Brevo, pazarlama e-postalarına otomatik olarak abonelikten çıkma bağlantıları ekler. İşlemsel e-postalar için kendi bağlantınızı ekleyin:
<a href="{{ unsubscribe_url }}">Abonelikten çık</a>
Kendi alan adımdan e-posta gönderebilir miyim?Evet. SPF, DKIM ve DMARC kayıtlarını kurun. Brevo değerleri Ayarlar → Gönderen ve IP bölümünde sağlar. Uygun kimlik doğrulama olmadan, e-postalar spam kutusuna düşebilir.
E-postaları belirli bir saat diliminde nasıl zamanlarım?scheduledAt parametresini ISO 8601 zaman damgası ile kullanın:
{
"scheduledAt": "2026-03-25T09:00:00-05:00"
}
Oran sınırına ulaşırsam ne olur?429 hatası alırsınız. Yanıt, sıfırlamaya kadar geçen saniye cinsinden X-RateLimit-Reset başlığını içerir. Üstel geri çekilme uygulayın veya e-postaları daha sonrası için sıraya koyun.
