Mesajlar (işlemsel gönderim)
İşlemsel (transactional) gönderim yolu senkrondur: tek çağrı, tek SMTP zarfı, anında messageId. Zamanlanmış toplu gönderim için kampanya uçlarını kullanın.
Tekil/işlemsel gönderim
/public/v1/messagesscopesendHeader'lar
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
Idempotency-Key | string | hayır | 1–128 karakter, yalnız görünür ASCII. Bkz. Idempotency-Key. |
Gövde
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
from | string | hayır | Doğrulanmış kimlik adresi. Boşsa hesabın varsayılan kimliği kullanılır. Domain kimliğinde domain altındaki herhangi bir adres yazılabilir. |
to | string[] | evet | En az 1, en çok 50 adres. |
cc | string[] | hayır | CC alıcıları. |
bcc | string[] | hayır | BCC alıcıları. |
subject | string | evet | Konu. {{degisken}} desteklenir. |
html | string | html veya text'ten biri | HTML gövde. |
text | string | html veya text'ten biri | Düz metin gövde. Yalnız html verilirse text otomatik türetilir. |
variables | object | hayır | {{degisken}} değerleri — subject/html/text'e uygulanır (HTML-encode'lu). |
attachments | [{uploadId, fileName, size}] | hayır | Önceden POST /uploads ile yüklenmiş ek referansları. fileName/size bilgi amaçlıdır; sunucu yükleme kaydını esas alır. |
customerRef | string | hayır | Ölçüm/ayıklama etiketi — bkz. customerRef. Max 64, [A-Za-z0-9_-]. |
scheduledAt | string | — | Desteklenmez → 422 scheduling_not_supported. İşlemsel yol senkrondur; zamanlanmış toplu gönderim için kampanya ucunu kullanın. |
Tek zarf semantiği (önemli)
Mesaj tek bir SMTP zarfıdır — to+cc+bcc aynı çağrıda, tek messageId ile gönderilir (CC'li mesajda alıcı başına ayrı kopya üretilmez). Kredi, to+cc+bcc geçerli alıcı toplamı kadar düşer. accepted satırlarının hepsinde aynı messageId görünür.
Alıcı işleme sırası: normalize + üç liste genelinde tekilleştirme (hem to hem cc'de geçen adres yalnız to'da kalır) → sentaks (invalid_syntax) → bastırma (suppressed) → MX ön doğrulaması (mx_fail) → kredi. Elenen her adres yanıtın rejected listesinde gerekçesiyle raporlanır.
- Geçerli
toalıcısı kalmazsa: 422no_valid_recipients, kredi düşmez. - Kredi yetersizse: HTTP 200 döner, tüm geçerli alıcılar
rejected'areason: "quota"ile yazılır, kredi düşmez,messageIdalanı yazılmaz. - Zarf gönderilemezse (sağlayıcı arızası): 502
send_failed, düşülen kredinin tamamı iade edilir.
Bastırma kapsamı: işlemsel yolda yalnız campaign_and_transactional kapsamlı bastırma kayıtları süzer. Pazarlama aboneliğinden çıkan (scope=campaign) bir adrese işlemsel mail (randevu, şifre sıfırlama…) gitmeye devam eder — tasarımın amacı budur.
Idempotency-Key
Idempotency-Key header'ı (1–128 karakter, yalnız görünür ASCII) yalnız POST /messages'ta desteklenir:
- Aynı anahtar + aynı gövde 24 saat içinde tekrar gelirse saklanan yanıt aynen döner (ikinci gönderim yapılmaz, kredi tekrar düşmez). Tekrar yanıtında
Idempotency-Replayed: trueheader'ı bulunur. - Aynı anahtar + farklı gövde → 409
idempotency_conflict. - Yalnız başarılı (200) yanıtlar saklanır: hata yanıtı (422/429/502…) saklanmaz — sorunu giderip aynı anahtarla güvenle yeniden deneyebilirsiniz.
rejected.reasondeğerleri:invalid_syntax|mx_fail|suppressed|quota.
Hatalar
- 401invalid_api_key
- 403insufficient_scope
- 403account_suspended
- 429rate_limited
- 409idempotency_conflict
- 413attachments_too_large
- 422validation_error
- 422too_many_recipients
- 422identity_not_found
- 422identity_not_verified
- 422no_default_identity
- 422no_valid_recipients
- 422scheduling_not_supported
- 429daily_cap
- 502send_failed
Ek yükleme
/public/v1/uploadsscopesendmultipart/form-data, dosya alan adı `file`. Tekil dosya sınırı 20 MB (aşımı 413 attachments_too_large).
Gövde
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
file | file (multipart) | evet | Yüklenecek dosya. Tekil dosya ≤ 20 MB. |
uploadIdaynı hesabınPOST /messagesisteklerindeattachmentsalanında kullanılır; başka hesabın uploadId'si 404not_foundgörünür.- Yükleme kaydının ömrü (TTL) 24 saattir; mesaj başarıyla gönderilince ek kaydı temizlenir, gönderilemeyen istekte TTL ile düşer (yeniden deneme hakkı).
- Bir mesajın toplam ek boyutu 20 MB'ı aşamaz → 413
attachments_too_large. - Ekli mesaj Raw MIME olarak gönderilir; davranış (tek zarf, kredi, rejected) aynı kalır.
Mesaj durumu
/public/v1/messages/{id}scopereadPath parametreleri
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
id | string | evet | Gönderim yanıtındaki messageId (iç kayıt id'si de kabul edilir). |
statusunion'ı:sent|delivered|bounced|complained. Olay yoksasent.- Çok alıcılı zarfta en kötü durum önceliği uygulanır: tek alıcının bounce'u mesajı
bouncedgösterir (öncelik: bounce > complaint > delivery). cc/bccboşsa alan hiç yazılmaz.
Test gönderimi
/public/v1/messages/testscopesendPanel "test maili" özelliğinin API karşılığı. Tek alıcı.
Gövde
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
from | string | hayır | Çözümü POST /messages ile aynıdır (boşsa varsayılan kimlik). |
to | string | evet | Tek alıcı adresi. |
subject | string | evet | Konu. |
html | string | evet | HTML gövde. |
- Kredi düşmez; bastırma ve MX ön doğrulaması uygulanmaz.
- Ayrı bir oran sınırı yoktur (anahtar limiti 120/dk geçerlidir).
Adres bazlı geçmiş
/public/v1/recipients/{email}/historyscopereadPath parametreleri
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
email | string | evet | Sorgulanan alıcı adresi. |
Sorgu parametreleri
| Ad | Tip | Zorunlu | Açıklama |
|---|---|---|---|
from | string (ISO 8601) | hayır | Tarih aralığı başlangıcı. |
to | string (ISO 8601) | hayır | Tarih aralığı bitişi. |
kind:campaign|message. En yeni başta, en çok 500 satır.status: kampanya satırında rapor union'ı (delivered/pending/bounced/complained/suppressed/failed), mesaj satırında mesaj union'ı (sent/delivered/bounced/complained).