Spam kontrol API'si: e-posta,
gelen kutusu ve alan adı
Bize gerçek bir mesaj gönderin veya yalnızca bir alan adı verin. Her şey JSON olarak yanıtlanır.
Anahtar yok, hesap yok.
İstek
# reserve a single-use address
$ curl -sX POST '.../api/v1/inbox?lang=en'
# send your message to that address, then
$ curl -s '.../api/v1/tests/k7m2x9qplw4tz8vn3b6c/status'
# read the report
$ curl -s '.../api/v1/tests/k7m2x9qplw4tz8vn3b6c'
Yanıt
200 OK
{
"address": "test-k7m2x9qplw4tz8vn3b6c@t.email-spam-tester.com",
"slug": "k7m2x9qplw4tz8vn3b6c",
"expires_at": "2026-10-31T13:00:00Z"
}200 OK
{
"analysis_status": "checks_ready",
"ai_status": "running",
"checks_done": 42,
"checks_total": 42
}200 OK
{
"score_ours": 86.4,
"score_compat": 9.2,
"subscores": {"auth": 100.0, "infra_spam": 78.1, "content": 92.0},
"complete": true,
"checks": [{"id": "auth.dmarc", "status": "warn"}],
"fixes": [{"id": "dmarc-enforce", "gain_ours": 4.0}]
}İstek
# create a test
$ curl -sX POST '.../api/v1/placement' \
-d '{"public_results_accepted":true}'
# put the marker in the subject, send once to all, then
$ curl -s '.../api/v1/placement/wR3kP9xLq2vT8mZc'
Yanıt
201 Created
{
"marker": "est-3f9a1c7e2b4d6a80c5e1f2d3",
"status": "waiting",
"results": [{"provider": "gmail", "placement": "pending"}],
"fleet": {"status": "observing", "results": [
{"provider": "yahoo", "placement": "pending"},
{"provider": "outlook", "placement": "pending"}
]}
}200 OK
{
"status": "complete",
"results": [{"provider": "gmail", "placement": "primary"}],
"fleet": {"status": "finished", "results": [
{"provider": "yahoo", "placement": "inbox"},
{"provider": "outlook", "placement": "spam"}
]}
}İstek
# no email needed, one GET
$ curl -s '.../api/v1/infra/check?domain=example.com'
# compare with your last run
$ curl -s '.../api/v1/infra/check?domain=example.com&diff=true' \
| jq '.diff'
Yanıt
200 OK
{
"domain": "example.com",
"ok": false,
"status": "fail",
"score": 78,
"coverage": {"answered": 7, "total": 8},
"sections": {"ptr": {"status": "fail", "core": true}}
}200 OK
{
"changed": true,
"worsened": true,
"status_from": "pass",
"score_from": 100,
"changes": [{"path": "dkim.key.mail.sha256", "kind": "removed",
"severity": "critical", "effect": "worsened"}]
}İhtiyacınız olanı seçin
Bu sayfada
E-posta testi
Gerçek bir mesajı baştan sona inceleriz: içerik, imza, başlıklar ve mesajı gönderen sunucu. Bir puan, düzeltme listesi ve bunların arkasındaki tüm kontrolleri alırsınız.
Hızlı başlangıç
Üç çağrı. Anahtar yok, hesap yok, kayıt yok. İki istek ve bir e-posta. Üçüncü çağrı yalnızca analiz birkaç saniye sürdüğü için vardır.
Bir adres ayırın
Gelen kutusu uç noktasına POST isteği gönderin. Tam olarak bir ileti kabul eden ve bir saat içinde süresi dolan bir adresin yanı sıra diğer her şeyin anahtar olarak kullandığı kısa adı alırsınız.
İstek
# 1. reserve a single-use address curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en'Yanıt
{ "address": "test-<slug>@t.email-spam-tester.com", "slug": "<slug>", "expires_at": "2026-01-01T12:00:00Z" }Gerçek iletiyi bu adrese gönderin
SMTP üzerinden, kampanyayı gönderecek platformdan gönderin. Kontrollerin yarısı gönderim platformunuzun eklediği üstbilgileri okur, bu nedenle elle oluşturulan bir ileti yanlış şeyi ölçer.
İstek
# 2. send your message to that address, from your own platform To: test-<slug>@t.email-spam-tester.comDurumu yoklayın, ardından raporu okuyun
Durum uç noktası birkaç yüz bayttır ve tam raporu almaya değip değmediğini bildirir. Raporun kendisi birkaç bin satırdır.
İstek
# 3. poll curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status'Yanıt
{ "slug": "<slug>", "analysis_status": "checks_ready", "ai_status": "running", "checks_done": 42, "checks_total": 42 }İstek
# 4. read the report once analysis_status is checks_ready curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>'Yanıt
{ "report_url": "https://email-spam-tester.com/t/<slug>", "score_ours": 86.4, "score_compat": 9.2, "subscores": {"auth": 100.0, "infra_spam": 78.1, "content": 92.0, "compliance": 75.0}, "complete": true, "checks": [ { "id": "auth.dmarc", "status": "warn", "title": "DMARC result", "summary": "DMARC passes, but the policy is p=none.", "weight_ours": -4.0, "evidence": {"policy": "none", "aligned": "dkim"}, "citations": {"standards": [{"title": "RFC 9989 §4.7", "quote": "..."}]} } ], "fixes": [ {"id": "dmarc-enforce", "gain_ours": 4.0, "gain_compat": 0.0, "fix": {"title": "Move DMARC to quarantine", "severity": "medium"}} ] }
Bir adres ayırın, listenize göndermek üzere olduğunuz iletiyi gönderin, raporu okuyun. Puan, kanıtlarıyla birlikte 42 kontrolün tamamı ve her bulgunun dayandığı standart bölümü dahil olmak üzere sayfada gösterilen her şey JSON içindedir.
İlk 100.000 rapor ücretsizdir; anahtar ve hesap gerekmez. Bir betik yerine bir ajan bağlıyorsanız, MCP sunucusu yoklamadan daha uygundur.
Uç Noktalar
Temel adres https://email-spam-tester.com. Her şey JSON olarak yanıt verir.
POST/api/v1/inbox
Tek kullanımlık bir adres ayırır. Her iki parametre de isteğe bağlıdır.
| lang | Düzeltme planının ve denetim başına bulguların yazılacağı dilin ISO kodu. Buna şimdi karar verilir çünkü ileti dakikalar sonra SMTP üzerinden gelir ve onu kimin beklediğine dair hiçbir ipucu taşımaz. Bilinmeyen bir kod için varsayılan olarak İngilizce kullanılır. |
| utm_source, utm_medium, utm_campaign | Analiz sistemimize aynen iletilir. Kendi entegrasyonunuzu ölçüyorsanız kullanışlıdır. |
GET/api/v1/tests/{slug}/status
Sık sorgulamak düşük maliyetlidir. İki durum alanını ve denetimlerin ne kadar ilerlediğini döndürür, başka hiçbir şey döndürmez.
GET/api/v1/tests/{slug}
Raporun tamamı. Adres ayrılmışken ve henüz hiçbir şey ulaşmamışken 202, ulaştıktan sonra 200 yanıtını verir.
GET/api/v1/tests/{slug}/message
İleti tam olarak teslim edildiği şekliyle: iletim sırasındaki her başlık, her iki gövde, ek listesi ve ham kaynak. Rapor sorgulandığı ve bunun boyutu bir megabayta ulaşabildiği için ayrı olarak alınır.
PUT/api/v1/tests/{slug}/locale
Henüz kullanılmamış bir rezervasyonun dilini değiştirir. Adresi zaten istemiş olan ve kullanıcısının hangi dili okuduğunu sonradan öğrenen bir aracı içindir. İleti ulaştıktan sonra reddedilir, çünkü o zamana kadar analiz çalışmaya başlamıştır.
Gelen kutusu yerleşimiBeta
Test gelen kutuları listesine bir mesaj gönderin ve Gmail, Outlook, Yahoo ve diğer sağlayıcılarda nereye ulaştığını görün: Gelen Kutusu, Tanıtımlar veya Spam.
Hızlı başlangıç
Bir test oluşturun
Yerleşim uç noktasına POST isteği gönderin. Bir işaretleyici ve test gelen kutularını alırsınız.
İstek
# 1. create a test curl -sX POST 'https://email-spam-tester.com/api/v1/placement' \ -H 'Content-Type: application/json' \ -d '{"public_results_accepted":true}'Yanıt
{ "slug": "<slug>", "marker": "est-3f9a1c7e2b4d6a80c5e1f2d3", "status": "waiting", "deadline": "2026-10-31T12:30:00Z", "poll_after_seconds": 60, "results": [ {"address": "<seed>", "provider": "gmail", "kind": "Gmail", "placement": "pending", "observed_at": null} ], "fleet": { "status": "observing", "results": [ {"address": "<mailbox>", "provider": "yahoo", "available": true, "placement": "pending", "coverage": "pending"} ] } }Her gelen kutusuna bir ileti gönderin
İşaretleyiciyi konuya ekleyin ve normal platformunuzdan tüm adreslere tek seferde gönderin.
İstek
# 2. one message to every address, with the marker in the subject Subject: October invoice est-3f9a1c7e2b4d6a80c5e1f2d3 To: <seed>, <mailbox>, ...Klasörleri sorgulayın
Her adres için sağlayıcı ve klasör bilgileri doldurulur. Durum waiting olmaktan çıkana kadar sorgulayın.
İstek
# 3. poll for the folders curl -s 'https://email-spam-tester.com/api/v1/placement/<slug>'Yanıt
{ "status": "complete", "received": 2, "total": 2, "results": [ {"address": "<seed>", "provider": "gmail", "kind": "Gmail", "placement": "primary", "observed_at": "2026-10-31T12:04:11Z"}, {"address": "<seed>", "provider": "gmail", "kind": "Google Workspace", "placement": "promotions", "observed_at": "2026-10-31T12:04:11Z"} ], "fleet": { "status": "finished", "results": [ {"address": "<mailbox>", "provider": "yahoo", "available": true, "placement": "inbox", "coverage": "ok"}, {"address": "<mailbox>", "provider": "outlook", "available": true, "placement": "spam", "coverage": "ok"} ] } }
Uç Noktalar
An optional test using public GMass seed inboxes and available project test mailboxes, alone or alongside the email score. Explain to the sender that GMass receives their email and publishes its subject, sender name and placement before creating a test. Use all test mailboxes for non-confidential test messages only.
GET /api/v1/placement/availability
Returns providers: the provider identifiers of currently healthy,
admitted project mailboxes. No addresses or credentials are exposed. This read does
not create a test or contact GMass. Actual recipients are allocated at creation and
may differ as availability or capacity changes.
POST /api/v1/placement
Send JSON {"public_results_accepted":true}. Returns HTTP 201 with
slug, marker, results (the seed addresses),
deadline and expires_at. Limit: 20 tests per IP per UTC day.
For one-send combined testing, first reserve an email score address and include
its score_slug in the placement creation JSON. Repeated creation for
that score returns the same placement test. Send the marked email to the score
address, every returned seed and every available fleet.results address;
keep the main /t/<score_slug>
report link. Creating a link after the score address was used or expired returns HTTP 409.
GET /api/v1/placement/by-score/{score_slug}
Read and refresh the placement run attached to the main email test. The response has the same format and polling limits as the standalone endpoint below. HTTP 404 means placement was not included or its stored results have been removed.
GET /api/v1/placement/{slug}
Use poll_after_seconds (normally 60 seconds) while the page is open.
Upstream errors trigger a shared cooldown. Add the marker to the subject and
send through the sender's normal platform to every seed. Observations are saved for
30 days. Collection ends after 30 minutes or when all seeds have results.
status: waiting, complete or timed_out. Each result has an address,
provider, kind, placement and observed_at. Placement is primary, promotions, inbox,
updates, social, forums, spam, unknown, pending or not_observed. Missing results do
not mean Spam; Promotions is an inbox category. provider_error indicates
an upstream outage without discarding saved observations. HTTP 404 means unknown,
410 expired, 429 quota exhausted, and 503 no test inboxes available at creation.
The optional fleet object contains independently collected project
mailbox results, with status observing, settling or finished. Refresh
every 30 seconds until it finishes, even when Gmail has completed. Each fleet result
includes address, provider, available,
placement, category and coverage. Exclude
unavailable addresses from new sends; retain their saved observations. Category
data may be unavailable even when the physical folder is known.
If GMass is unavailable at creation but project mailboxes can be allocated,
provider is fleet and the top-level seed results are empty.
Use fleet.results; do not interpret an empty Gmail list as successful
delivery. Existing runs never gain new recipient addresses silently.
Altyapı denetimi
Tek bir GET, hiçbir şey göndermeden bir alan adının posta yapılandırmasını denetler, sonucu saklar ve son çalıştırmanızdan bu yana nelerin değiştiğini bildirir. Anahtar gerekmez. cron içinde aşağıdaki satır, alan adı bozuk olduğunda veya yapılandırması önemli bir şekilde değiştiğinde sıfır olmayan bir çıkış koduyla sonlanır.
Hızlı başlangıç
Tek bir GET isteği yapın
Alan adını iletin. ip, gönderim adreslerinizi ekler ve selector, okunacak DKIM seçicilerini belirtir.
İstek
curl -s 'https://email-spam-tester.com/api/v1/infra/check?domain=example.com&selector=mail&diff=true'Sonucu okuyun
ok, bir betik için yanıttır ve sections, hangi bölümün başarısız olduğunu gösterir.
Yanıt
{ "id": "ir_01JB8Y4T2M6K9QZ7H3V5N1XWDA", "domain": "example.com", "checked_at": "2026-10-31T12:00:00Z", "ok": false, "status": "fail", "score": 78, "coverage": {"answered": 7, "total": 8}, "ips": [{"ip": "203.0.113.5", "sources": ["mx", "spf"], "managed": false}], "sections": { "dkim": {"status": "pass", "core": true, "findings": [], "data": {}}, "ptr": {"status": "fail", "core": true, "findings": [], "data": {}} }, "not_checked": [ {"check": "dkim_signature", "reason": "needs_a_message"}, {"check": "alignment", "reason": "needs_a_message"} ], "diff": { "baseline": {"id": "ir_01JB2...", "checked_at": "2026-10-24T12:00:00Z"}, "first_run": false, "changed": true, "worsened": true, "status_from": "pass", "score_from": 100, "changes": [ {"path": "dkim.key.mail.sha256", "section": "dkim", "kind": "removed", "severity": "critical", "effect": "worsened", "from": "9f2c...", "to": null} ], "not_compared": [ {"path": "blocklist_ip.203.0.113.5.bl.spamcop.net.listed", "reason": "lookup_failed"} ] } }cron'a ekleyin
diff=true ile her çalıştırma son çalıştırmanızla karşılaştırılır ve jq, yanıtı bir çıkış koduna dönüştürür.
İstek
# exits non-zero if the domain is broken or its setup changed curl -s 'https://email-spam-tester.com/api/v1/infra/check?domain=example.com&selector=mail&diff=true' \ | jq -e '.ok and (.diff.changed | not)'
| domain | Gerekli. Araçların kabul ettiği değerleri kabul eder: bir alan adı, URL veya e-posta adresi. |
| ip | Gönderim adresiniz. Daha fazlası için bunu en fazla 6 kez tekrarlayın. |
| selector | Bir DKIM seçicisi. Daha fazlası için bunu en fazla 10 kez tekrarlayın. İlettiğiniz her seçici mevcut olmalıdır, aksi takdirde DKIM bölümü başarısız olur. |
| helo | Sunucunuzun HELO sırasında verdiği ad; PTR kaydıyla karşılaştırılır. |
| account | İsteğin kimin için olduğu. Birçok kişiye hizmet veren bir anahtarla kullanıldığında gereklidir. |
| checks | Çalıştırılacak bölümler, virgülle ayrılmış olarak. Varsayılan olarak tümü. |
| diff | true, bu çalıştırmayı alan adındaki son çalıştırmanızla karşılaştırır. |
| since | 7d, 12h veya bir ISO 8601 tarihi. 12 saat içinde o ana en yakın çalıştırmanızla, aksi takdirde ondan önceki son çalıştırmayla karşılaştırır. diff'i açar. |
| baseline | Karşılaştırılacak çalıştırmalarınızdan birinin kimliği. diff'i açar. |
| fresh | true, 60 saniyelik önbelleği atlar. |
Yanıtı okuma
Tamamlanan bir kontrol 200 yanıtını verir ve karar gövdede yer alır. status, gerekli bölümler arasındaki en kötü durumdur: spf, dkim, dmarc, ptr, blocklist_ip, blocklist_domain, mx ve smtp. Gerekli bir bölümdeki unknown, warn olarak sayılır. status pass veya warn olduğunda ok true olur. score, yanıt veren gerekli bölümler üzerinden 0 ile 100 arasında değişir ve hatalar ile unknown durumları geçerli ağırlığın yarısından azını bıraktığında null olur. mta_sts, tls_rpt, bimi, dnssec, dane, ns ve registration raporlanır ve karşılaştırılır, ancak ok veya score üzerinde etkileri yoktur.
Bir bölüm pass, warn, fail, error (kontrol edemedik), unknown (karar vermek için çok az bilgi var) veya skipped (geçerli değil) olabilir. skipped sonucu etkilemez ve nedeni not_checked içinde yer alır. dkim_signature ve alignment her zaman bulunur, çünkü gerçek bir ileti gerektirirler.
ip ve selector neyi değiştirir
PTR ve engelleme listeleri adreslerle ilgilidir, dolayısıyla bir çalıştırma için bazı adresler gerekir. İlettiğiniz ip değerlerini kullanır. Hiçbiri yoksa MX ana bilgisayarlarınızdan ve kök SPF kaydındaki tek adresli ip4: ve ip6: terimlerinden en fazla dört tane alır. Bilinen bir e-posta sağlayıcısının adresleri managed olarak listelenir ve kontrol edilmeden bırakılır; geriye hiçbir şey kalmazsa ptr ve blocklist_ip skipped yanıtını verir. Bir selector DNS üzerinden okunamaz, dolayısıyla çalıştırma sizin ilettiğinizi, önceki çalıştırmalarınızın bulduklarını ve yaygın adların bir listesini dener. Hiçbir şey bulamamak hiçbir şeyi kanıtlamaz ve dkim unknown yanıtını verir. Kendi sunucunuzdan gönderim yapıyorsanız ikisini de iletin.
Neler değişti
diff.changes içindeki her girdinin bir path, bir kind (added, removed, changed), bir severity (critical, warning, info) ve bir effect (worsened, improved, neutral) alanı vardır. Yalnızca critical ve warning, diff.changed değerini ayarlar; bu nedenle aynı uzunlukta yenilenmiş bir DKIM anahtarı, yeni bir MX adresi veya yenilenmiş bir sertifika cron satırının başarısız olmasına neden olmaz. diff.worsened, herhangi bir değişikliğin effect değerini izler. İlk çalıştırmada karşılaştırılacak hiçbir şey yoktur ve diff.first_run bunu belirtir.
Referans her zaman size ait bir çalıştırmadır, dolayısıyla sizin iki çalıştırmanız arasında başka birinin domaini kontrol etmesi hiçbir şeyi gizlemez. Bu kez okuyamadığımız her şey, son bilinen değeri korunarak diff.not_compared içine gider; bu, bir kesinti sırasında yapılan değişikliğin arama yeniden çalıştığında görünmesi anlamına gelir. Farklı bir ip veya selector içeren çalıştırma aynı seride kalır ve istemediği öğeler de karşılaştırılmaz.
Zamanlanmış bir kontrol neden anahtar kullanmalıdır
Anahtar olmadan geçmişiniz IP adresinizin anahtarlı özetine ait olur; bu nedenle adres değiştiğinde sona erer ve aynı adresin arkasındaki kişiler geçmişi paylaşır: bir iş arkadaşınızın çalıştırması referansınızı değiştirir. Authorization: Bearer içinde kişisel bir API anahtarı kullanıldığında geçmiş anahtarı izler. Anahtarlı çalıştırmalar 365 gün saklanır ve yalnızca bu anahtarla açılır. Anahtarsız çalıştırmalar 30 gün saklanır ve id değerine sahip herkes tarafından açılabilir.
IP başına dakikada 6 ve günde 50 istek ya da anahtar başına dakikada 30 ve günde 500 istek. Bunun üzerinde yanıt, Retry-After ile birlikte 429 olur. 60 saniye içindeki aynı istek önbellekten gelir, cached: true olarak işaretlenir, çalıştırma kaydı oluşturmaz ve kotaya dahil edilmez. Saklanan çalıştırmaları okumak istemci başına dakikada 120 isteğe izin verir. Retry-After ile birlikte 503, çok fazla kontrolün çalıştığı veya saklanan çalıştırmalar okunurken depolamanın kullanılamadığı anlamına gelir. 401, anahtarın yanlış olduğunu belirtir. 422, şu detail.code değerlerinden birini taşır: invalid_domain, invalid_ip, invalid_selector, invalid_check, invalid_since, unknown_baseline veya account_required.
Uç Noktalar
GET/api/v1/infra/check
Kontrolü çalıştırır. Parametreler yukarıdaki tablodadır.
GET/api/v1/infra/runs/{public_id}
Kayıtlı tek bir çalıştırmanın tamamı. Mevcut değilse veya başka bir anahtara aitse 404 döndürür.
GET/api/v1/infra/domains/{domain}/runs
Bir alan adına yönelik çalıştırmalarınız, en yeniden en eskiye: kimlik, zaman, durum, puan ve değişiklik sayısı. limit (1 ile 100 arasında, varsayılan olarak 30) ve bir çalıştırma kimliği olan before parametrelerini alır.
GET/api/v1/infra/diff
Kayıtlı iki çalıştırma arasındaki aynı karşılaştırma, ?from=<id>&to=<id>. Her ikisine de erişiminiz olmalıdır.
GET/api/v1/infra/checks
Ağırlığı, puan sürümü ve sınırlarıyla birlikte her bölüm.
Tekil kontroller
Her çağrı bir soruyu yanıtlar ve geçmiş tutmaz. Üstbilgi aracı dışında her araç, altyapı kontrolünün bir bölümünü kendi başına çalıştırır; üstbilgi aracı ise daha önce aldığınız bir iletiyi okur.
Hızlı başlangıç
Bir kontrol seçin
Aşağıdaki listeden aracı seçin ve istediği alan adını, adresi veya IP'yi iletin.
İstek
curl -s 'https://email-spam-tester.com/api/v1/tools/spf?domain=example.com'Durumu ve bulguları okuyun
Her araç bir durum ve bulgularıyla yanıt verir. Bunlardan sonraki alanlar araca göre değişir.
Yanıt
{ "tool": "spf", "query": {"domain": "example.com"}, "checked_at": "2026-10-31T12:00:00Z", "duration_ms": 412, "status": "fail", "findings": [ {"code": "spf.too_many_lookups", "level": "fail", "params": {"limit": 10, "count": 12}, "message": "RFC 7208 §4.6.4 allows at most 10 DNS lookups, and this record needs 12, so receivers return permerror."} ], "record": "v=spf1 include:_spf.example.net ~all", "lookups": {"count": 12, "limit": 10, "void": 0} }
Uç Noktalar
GET/api/v1/tools/spf
Bir alan adının SPF kaydı: söz dizimi, izlenen her include ve redirect ve tüm ağacın on sınırına karşı kullandığı DNS sorguları. ?domain=example.com parametresini geçirin.
GET/api/v1/tools/dmarc
Bir alan adının DMARC kaydı veya alan adının böyle bir kaydı yoksa kurumsal alan adının DMARC kaydı: etiketler, politika ve her harici rapor adresinin raporları almayı kabul edip etmediği. ?domain=example.com parametresini geçirin.
GET/api/v1/tools/dkim
Bir seçici için yayımlanan DKIM anahtarı: mevcut olup olmadığı ve çözümlenip çözümlenmediği, türü ve boyutu ve iptal ve test bayrakları. ?domain=example.com&selector=s1 parametrelerini geçirin.
GET/api/v1/tools/blocklist
Raporun kullandığı DNS engelleme listelerinde kontrol edilen bir IPv4 adresi, bir IPv6 adresi veya bir alan adı ve her listenin yanıtı. ?target=203.0.113.5 parametresini geçirin.
GET/api/v1/tools/mx
Bir alan adının MX kayıtları, gönderenlerin bunları denediği sırayla ve her ana makinenin IPv4 ve IPv6 adresleriyle birlikte gösterilir. Null MX, MX kaydı olmayan bir alan adı, IP adresi veya CNAME olan ana makineler ve çözümlenemeyen ana makineler raporlanır; MTA-STS ve TLS-RPT kayıtları da raporlanır. ?domain=example.com parametresini iletin.
GET/api/v1/tools/bimi
Bir alan adının BIMI yapılandırması dört adımda gösterilir: BIMI'nin gerektirdiği DMARC politikası, default._bimi konumundaki kayıt, Tiny PS profiline göre denetlenen SVG logosu ve türü, alan adları ve sona erme tarihiyle birlikte marka sertifikası. ?domain=example.com parametresini, default dışında bir seçici için de &selector= parametresini iletin.
GET/api/v1/tools/ptr
Bir adresin PTR kayıtları ve bu adlardan herhangi birinin yeniden bu adrese çözümlenip çözümlenmediği. Başarısız olan bir sorgu error durumunu verir; eksik bir kayıt fail durumunu verir. ?ip=8.8.8.8 iletin.
GET/api/v1/tools/mta-sts
Bir alan adının MTA-STS kaydı ve işaret ettiği politika dosyası: mod, listelenen ana bilgisayarlar ve politikanın kapsam dışında bıraktığı MX ana bilgisayarları. ?domain=example.com iletin.
GET/api/v1/tools/tls-rpt
Bir alan adının TLS-RPT kaydı ve raporlarını alan adresler. ?domain=example.com iletin.
GET/api/v1/tools/dnssec
Bir alan adının bölgesinin DNSKEY ve DS kayıtlarına göre imzalı, imzasız veya bozuk olup olmadığı. Geçersiz bir imza, çözümleyici kesintisinden ayrı değerlendirilir. ?domain=example.com iletin.
GET/api/v1/tools/dane
MX ana bilgisayarlarının TLSA kayıtları, sertifika okunabildiğinde bir ana bilgisayarın sunduğu sertifikayla karşılaştırılır. ?domain=example.com iletin.
GET/api/v1/tools/smtp
İlk iki MX ana bilgisayarındaki STARTTLS ve sertifika: TLS sürümü, düzenleyen, sona erme tarihi ve zincir ile adın geçerli olup olmadığı. Yalnızca sorguladığınız alan adı altındaki ana bilgisayarlara bağlanır ve posta sağlayıcılarını atlarız; adres başına bir sonuç 6 saat boyunca paylaşılır. Posta gönderilmez. ?domain=example.com iletin.
GET/api/v1/tools/ns
Bir alan adının ad sunucuları ve bölgesinde bir SOA kaydı olup olmadığı. Tek bir ad sunucusu uyarıdır. ?domain=example.com iletin.
GET/api/v1/tools/registration
RDAP verilerine göre bir alan adının kaydının ne zaman sona ereceği. 30 günden az süre kalması uyarıdır. RDAP hizmeti olmayan bir bölge skipped yanıtını verir. ?domain=example.com iletin.
POST/api/v1/tools/header
Alınan bir iletinin JSON {"headers": "..."} olarak veya text/plain biçiminde gönderilen başlıkları: gecikmeler, TLS ve saat sapmasıyla birlikte adım adım rota, alıcının kendi Authentication-Results başlığı, From, DKIM d= ve Return-Path alan adlarının hizalanması ve DKIM, ARC, abonelikten çıkma ve spam filtresi başlıkları. İlk boş satırdan sonraki her şey okunmadan atılır. Başlıklar bellekte işlenir ve saklanmaz, önbelleğe alınmaz veya günlüğe kaydedilmez.
Alan adını her gece kontrol edin.
E-postayı gönderilmeden önce test edin.
Her üründe ortak
Erişim, anahtarlar, rapor biçimi, durumlar, hatalar, ayrıca makineler için OpenAPI ve llms.txt.
Kimlik Doğrulama
Yoktur. Talep edilecek anahtar, ayarlanacak başlık veya oluşturulacak hesap yoktur. Aldığınız slug erişim yetkisidir: onu elinde bulunduran herkes bu raporu okuyabilir ve başka hiç kimse onu tahmin edemez.
Kişisel API anahtarları
Everything above works without a key. A key is for automation platforms such as
Zapier, where every user's calls come from the platform's servers and per-IP limits
would be shared by all of them. With a key, limits count per key (50 tests a day,
3 with placement, 5 permanent mailboxes), the key's tests form a history, and the
key can keep permanent mailboxes whose reports only it can read. Send the key as
Authorization: Bearer est_live_… on any call on this page. The routes
below also take account, a short name of your choosing
([A-Za-z0-9_-], up to 64 characters) that keeps separate lists under one
key. GET /api/v1/installations/tests requires it; pass the same one on
POST /api/v1/inbox so the test shows up there. The Zapier integration
uses zapier.
POST /api/v1/keys
Send JSON {"email":"you@example.com"}. Returns HTTP 201 with
key and email. The key is shown once; only its hash is
kept. Asking again gives a new key and leaves the earlier ones working. Limit: 5 keys
per IP per UTC day. The form on /zapier/ calls this.
GET /api/v1/keys/me
Returns email, key_prefix and created_at of
the key in the header, or HTTP 401. Use it to check a key.
GET /api/v1/installations/tests
The key's tests, newest first: ?account=…&limit=50 (up to 100),
and before=<slug> for the next page. Each item has
slug, created_at, analysis_status
(waiting or expired before an email arrived),
score_ours, score_compat, placement and
changes, the checks that moved since the previous test of the same
sending domain. Read the full report at /api/v1/tests/{slug}.
POST /api/v1/installations/mailboxes
Send JSON {"domain":"example.com","account":"…"}. Returns the
permanent mailbox of that sending domain: id, address,
domain, state, daily_cap and
created. HTTP 201 when it is new, 200 when it already existed, 409 when
the key keeps as many mailboxes as it may. Subscribe the address to a newsletter or
a sequence and every email that arrives is checked. GET on the same
path with ?account=… lists them, and DELETE
/api/v1/installations/mailboxes/{mailbox_id} stops one.
GET /api/v1/installations/mailboxes/{mailbox_id}/letters
The emails that arrived, oldest first, paged with after_id and
next_after_id. settled=true ends the page before the first
email still being checked, so paging never skips one. newest=true turns
the order round, for a quick look at the latest; settled does nothing
with it. Each has
test_id, slug, received_at,
analysis_status, score_ours, score_compat,
subject, from_addr and kind.
GET /api/v1/installations/letters/{slug}
The report of one email in a permanent mailbox, the same JSON as
/api/v1/tests/{slug} with report_url null: there is no
public page for it. HTTP 410 once the report has expired.
Raporu okuma
Yanıtı taşıyan alanlar, muhtemelen isteyeceğiniz sırayla.
| score_ours | 0 ile 100 arası. Bizim modelimiz. Kimlik doğrulama ve altyapı ağırlığın çoğunu taşır, çünkü bir filtre metindeki tek bir kelimeyi okumadan önce teslimata onlar karar verir. |
| score_compat | 0 ile 10 arası. Kullanıcıların zaten karşılaştırdığı SpamAssassin tarzı sayıyı yeniden üretir, böylece rapor birinin başka bir yerde gördüğü sonuçla karşılaştırılabilir. |
| subscores | Her bölüm için aynı 0 ile 100 arası ölçek: auth, infra_spam, content, compliance. |
| checks[] | 42 kontrolün tamamı; her biri bir durum, tek satırlık bir bulgu, kararın dayandığı kanıt ve iki puana maliyetiyle birlikte. |
| checks[].citations | Bulgunun kaynağı: RFC'nin ilgili bölümü, birebir alıntısı ve Google'ın kendi gereksinimini belirttiği sayfa. Oluşturulmak yerine elle derlenmiştir, bu nedenle bunlara güvenilebilir. |
| düzeltmeler[] | Yapılacak değişiklikler, sırasıyla ve her değişikliğin sağlayacağı puanlarla birlikte. Kazanımlar tahmin edilmez, rapor yeniden puanlanarak hesaplanır. |
| tamamlandı | Bir kontrol çalıştırılamadığında False olur. Kontrol edilmemiş bir öğe hiçbir zaman başarılı sayılmaz, bu nedenle true olana kadar puanı iyimser kabul edin. |
| rapor_url | İnsan tarafından okunabilen sayfa. JSON yığını yerine bunu bir kişiye verin. |
Durumlar
Bir kontrol beş durumdan birindedir ve bunlardan ikisi arasındaki fark göründüğünden daha önemlidir.
| başarılı | Kontrol çalıştı ve herhangi bir sorun bulmadı. |
| uyarı | Düzeltilmeye değer. Puan kaybettirir. |
| başarısız | Teslimata mal olur. Daha fazla puana mal olur. |
| atla | Uygulanmadı. Taranacak ek yok, değerlendirilecek HTML bölümü yok. Başarılı sayılmaz. |
| hata | Sonucu belirleyemedik. Başarılı sayılmak yerine puanlamaya dahil edilmedi ve işaretlendi. |
analysis_status received, analyzing, checks_ready, failed değerlerini alır. ai_status pending, running, ready, fallback, error değerlerini alır. Belirlenimci rapor checks_ready durumunda nihaidir; ai_status yalnızca planı ekler.
Neler dönebilir
| 202 | Adres rezerve edilmiştir ve henüz hiçbir ileti ulaşmamıştır. Gövde adresi, sona erme zamanını ve dili içerir; böylece rezervasyonu oluşturmamış bir çağıran da bunları gösterebilir. |
| 404 | Böyle bir slug yok. Ya hiç var olmadı ya da rezervasyon unutuldu. |
| 410 | Adres, bir ileti ulaşmadan önce sona erdi. |
| 409 | İleti zaten ulaştıktan sonra dili değiştirmeyi denediniz. |
| 429 | Adresiniz için ücretsiz test sınırı. Şu anda bu hizmette kişi başına bir sınır yoktur; ileride belirlenirse gövde, sınırın ne zaman sıfırlanacağını belirtir. |
Bilinmesi gereken dört şey
Adres başına bir ileti
İkinci ileti reddedilir. Önceki raporunuz olduğu gibi kalır, amaç da budur.
Kullanmak için bir saat
Adresin süresi dolar; raporun dolmaz. Rapor bağlantıları kalıcıdır, dolayısıyla bir destek kaydına yapıştırılan bağlantı çalışmaya devam eder.
Platformdan gönderin
Bir kampanyayı kişisel bir hesaptan test etmek, o hesabı ölçer. Kimlik doğrulama bölümündeki hemen hemen her şey metinle değil, gönderim altyapısıyla ilgilidir.
Düzelttikten sonra yeniden test edin
Beklenen kazanımlar her seferinde tek bir düzeltme için hesaplanır ve birleşmez. İkinci rapor doğru değeri verir.
Makineler için
- /api/openapi.json API'ye hizmet veren aynı koddan oluşturulan OpenAPI açıklaması.
- /llms.txt, /llms-full.txt Dil modelleri için bu sitenin llms.txt kuralına uygun kısa bir haritası ve tüm döngü ile rapor alanlarını tek bir dosyada içeren daha uzun bir sürümü.
- /mcp Aynı özelliğe ve engelleyici beklemeye sahip bir MCP sunucusu; bu, model içinden yoklama yapmaktan daha iyidir.
- For agents Aracı sayfası: bunun ne zaman kullanılacağı, atlanan bir kontrolün başarılı bir kontrole kıyasla nasıl okunacağı ve hangi bulguların bir aracının düzenleyebileceği metinler yerine bir kişinin değiştirmesi gereken DNS kayıtları olduğu.
GET/api/health
Canlılık denetimi. Kimlik doğrulama yok, yan etki yok.
Önce birini elle deneyin
Yaklaşık bir dakika sürer ve JSON'ın neyi açıkladığını tam olarak gösterir.
Bir test adresi alınKorumalı alan.
Her uç nokta, onu canlı hizmet üzerinde çalıştıran bir düğmeyle birlikte. Burada hiçbir şey için anahtar gerekmez, bu nedenle bu sayfadan gönderdiğiniz bir istek gerçektir: gerçek bir adres ayırır ve sayılır.
Korumalı alanda deneyin