SingleMail
ENGiriş yap

API referansı

Bütün istekler https://api.singlemail.singleton.com.tr adresine, Authorization: Bearer sm_… başlığıyla yapılır. Gövde ve yanıtlar JSON'dur.

E-posta gönderme

POST /emails
{
  "from": "Destek <destek@firma.com>",
  "to": ["ali@ornek.com"],
  "subject": "Talebiniz alındı",
  "html": "<p>…</p>",
  "tags": [{ "name": "type", "value": "ticket" }]
}

→ 200 { "id": "abe55c23-533d-41ad-8971-2dad84ad985b" }
AlanTürAçıklama
fromstringTek bir gönderen: "adres@domain" ya da "Ad <adres@domain>". Ad kısmında @ , ; : < > " olamaz; domain doğrulanmış olmalı.
tostring | string[]Alıcı(lar).
subjectstringKonu.
html / textstringEn az biri zorunlu.
cc / bcc / reply_tostring | string[]İsteğe bağlı.
headersobjectEn fazla 20 özel başlık: List-Unsubscribe(-Post), In-Reply-To, References, X-*. From, Sender, Bcc gibi adres ve yönlendirme başlıkları reddedilir.
tags{name, value}[]Filtreleme ve webhook'larda geri dönen etiketler.
attachments{filename, content | path, content_type, content_id}[]content base64 ya da path herkese açık bir URL (SingleMail indirir, en fazla 10 MB). content_id ile inline görsel.
scheduled_atstringISO tarih ya da "in 10 minutes".

E-postalar

YöntemYolAçıklama
POST/emailsE-posta gönderir. Idempotency-Key başlığını destekler.
POST/emails/batchTek istekte en fazla 100 e-posta gönderir.
GET/emailsGönderilen e-postaları listeler (?limit, ?after).
GET/emails/:idTek bir e-postanın durumunu döner.
GET/emails/:id/eventsE-postanın olay geçmişi.
PATCH/emails/:idZamanlanmış e-postanın tarihini değiştirir.
POST/emails/:id/cancelZamanlanmış e-postayı iptal eder.

Domainler

YöntemYolAçıklama
POST/domainsDomain ekler, DNS kayıtlarını döner.
GET/domainsDomainleri listeler.
GET/domains/:idDomain ve DNS kayıtları.
PATCH/domains/:idAçılma/tıklama takibini açar veya kapatır.
POST/domains/:id/verifyDNS kayıtlarını kontrol eder.
DELETE/domains/:idDomaini siler.

API anahtarları

YöntemYolAçıklama
POST/api-keysAnahtar oluşturur (full_access veya sending_access).
GET/api-keysAnahtarları listeler.
DELETE/api-keys/:idAnahtarı iptal eder.

Webhook'lar

YöntemYolAçıklama
POST/webhooksWebhook ekler, imza anahtarını (whsec_…) döner.
GET/webhooksWebhook'ları listeler.
GET/webhooks/:idWebhook ve imza anahtarı.
PATCH/webhooks/:idAdres, olaylar veya durumu günceller.
DELETE/webhooks/:idWebhook'u siler.

Engelli adresler

YöntemYolAçıklama
POST/suppressionsAdresi engelli listesine ekler.
GET/suppressionsEngelli adresleri listeler.
DELETE/suppressions/:idOrEmailAdresi listeden çıkarır.

Sayfalama

Liste uçları { object: "list", has_more, data } döner. ?limit= (en fazla 100) ve bir önceki sayfanın son kaydının ID'siyle ?after= kullanın.

Hatalar

Hatalı istekler şu gövdeyle döner: { statusCode, name, message }

KodnameAnlamı
401missing_api_keyAuthorization başlığı yok.
401restricted_api_keySadece gönderim yetkili anahtarla yönetim ucu çağrıldı.
401restricted_api_keySadece gönderim yetkili anahtarla e-posta okuma/iptal denendi.
403invalid_api_keyAnahtar geçersiz.
429rate_limit_exceededBir IP'den 30 geçersiz anahtar denendi; 10 dakika bekleyin.
403project_suspendedProje ya da şirket yönetici tarafından askıya alındı.
403sending_pausedGeri dönme ya da şikâyet oranı yükseldiği için gönderim duraklatıldı; yöneticiniz inceleyip devam ettirir.
403plan_limit_reachedPlanınızın domain ya da proje sınırı doldu.
403validation_errorDomain kayıtlı veya doğrulanmış değil.
404not_foundKayıt bulunamadı.
409concurrent_idempotent_requestsAynı anahtarla ilk istek hâlâ işleniyor.
422validation_errorGövde hatalı; mesajda alan adı yazar.
422content_rejectedİçerik spam gibi görünüyor; yanıttaki score ve reasons nedenini söyler.
422phishing_suspectedForm, script, javascript: linki ya da IP adresine giden link var.
422attachment_rejectedÇalıştırılabilir ya da makrolu dosya eki.
422recipient_rejectedTek kullanımlık, yazım hatalı ya da e-posta almayan alıcı domaini.
422blocklistedPlatform kara listesindeki bir kelime ya da domain.
429rate_limit_exceededSaniyelik istek sınırı aşıldı.
429monthly_quota_exceededPlanınızın aylık gönderim sınırı doldu; ayın 1'inde (UTC) sıfırlanır.
429warmup_limit_exceededYeni hesaplar ilk günlerde saatte sınırlı sayıda alıcıya gönderebilir.
429daily_quota_exceededPlanın ya da projenin günlük sınırı doldu; gece yarısı (UTC) sıfırlanır.

Koruma hataları

Spam ve kötüye kullanım koruması bir gönderimi reddettiğinde yanıtta hangi kontrolün devreye girdiği ve sebepleri de gelir. Engellenen gönderim saklanmaz ve kotanızdan düşmez. Toplu gönderimde bir e-posta reddedilirse hiçbiri gönderilmez; mesaj [3] gibi sırasıyla başlar.

422
{
  "statusCode": 422,
  "name": "content_rejected",
  "message": "Email content looks like spam (score 9.5): …",
  "check": "content",
  "score": 9.5,
  "reasons": [
    "Spam phrases: kazandiniz, hemen tikla (+3)",
    "Subject is in capital letters (+1.5)",
    "Uses a link shortener (+2)"
  ],
  "details": [
    { "code": "spam_phrases", "params": { "phrases": "kazandiniz, hemen tikla", "points": 3 } },
    { "code": "spam_subject_caps", "params": { "points": 1.5 } },
    { "code": "spam_shortener", "params": { "points": 2 } }
  ]
}

reasons İngilizce metindir ve değişebilir. Kendi arayüzünüzde sebebi göstermek ya da kodla karar vermek için aynı sırayla gelen details dizisindeki sabit code ve params alanlarını kullanın. Olası kodlar:

codecheckparamsÖrnek
reputation_bounce_ratereputationrate, limitSon 24 saatte geri dönme oranı %7,4 (sınır %5,0)
reputation_complaint_ratereputationrate, limitSon 24 saatte spam şikâyeti oranı %0,42 (sınır %0,30)
reputation_pausedreputation—İtibar koruması gönderimi duraklattı
reputation_review_requiredreputation—Projeyi bir yöneticinin inceleyip devam ettirmesi gerekiyor
warmup_limitwarmuphourly, daysYeni hesaplar ilk 7 gün saatte en fazla 300 alıcıya gönderebilir
recipient_disposablerecipientsrecipient, domainTek kullanımlık e-posta adresi: kisi@mailinator.com
recipient_typorecipientsrecipient, domain, suggestionYazım hatası olabilir: ahmet@gmial.com — gmail.com mu demek istediniz?
recipient_reservedrecipientsrecipient, domainTest için ayrılmış, e-posta alamayan domain: test@example.com
recipient_no_mxrecipientsrecipient, domainfirma-yok.com.tr domaininin e-posta sunucusu yok: info@firma-yok.com.tr
blocklist_keywordblocklistkeywordKara listedeki ifade: "deneme bonusu"
blocklist_link_domainblocklistdomainKara listedeki domaine link: kumar-sitesi.example
blocklist_recipient_domainblocklistdomainAlıcı domaini kara listede: rakip.example
blocklist_sender_domainblocklistdomainGönderen domaini kara listede: kumar-sitesi.example
attachment_extensionattachmentsfilename, extÇalıştırılabilir ek: fatura.pdf.exe
attachment_content_typeattachmentsfilename, contentTypeEngellenen içerik türünde ek (application/x-msdownload): kurulum
phishing_formphishing—HTML form içeriyor (e-posta bilgi toplamamalı)
phishing_scriptphishing—Script, iframe ya da gömülü nesne içeriyor
phishing_event_handlerphishing—Satır içi JavaScript olayı içeriyor (onclick vb.)
phishing_js_linkphishing—javascript: ya da data: linki içeriyor
phishing_userinfophishinghostLink gerçek hedefini kullanıcı@sunucu hilesiyle gizliyor: evil.example.net
phishing_ip_linkphishinghostDoğrudan IP adresine link: 185.12.4.9
spam_phrasescontentphrases, pointsSpam kalıpları: kazandiniz, hemen tikla (+3)
spam_subject_capscontentpointsKonu tamamen büyük harf (+1,5)
spam_subject_exclamationcontentpointsKonuda çok fazla ünlem (+1)
spam_money_symbolscontentpointsPara sembolleri ($$$) (+1)
spam_shortenercontentpointsLink kısaltıcı kullanılmış (+2)
spam_punycodecontentpointsBenzer görünümlü (punycode) domaine link (+1,5)
spam_link_mismatchcontenthost, pointsLink metni başka bir domain gösteriyor, hedefi farklı: secure-login.example.net (+3)
spam_many_linkscontentpointsÇok fazla link (+1)
spam_lurecontentpointsBaşka domaine giden hesap ya da ödeme tuzağı (+2,5)
spam_image_onlycontentpointsMetni olmayan, yalnızca görselden oluşan e-posta (+2)

Kendi linklerinizi tam adresle kullanmak, konuyu büyük harfle yazmamak ve link metninde başka bir domain göstermemek çoğu içerik reddini önler. Yanlış bir ret düşünüyorsanız SingleMail yöneticinizle görüşün; hesabınız için kontrolü ayarlayabilir.