Email Spam Tester

API kontroly spamu: e-mail,
doručená pošta a doména

Pošlete nám jednu skutečnou zprávu, nebo zadejte jen doménu. Všechny odpovědi dostanete ve formátu JSON.

Bez klíče, bez účtu.

Požadavek

# 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'

Odpověď

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}]
}

Požadavek

# 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'

Odpověď

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"}
  ]}
}

Požadavek

# 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'

Odpověď

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"}]
}
Na této stránce

Test e-mailu

Přečteme jednu skutečnou zprávu od začátku do konce: obsah, podpis, hlavičky a server, který ji odeslal. Získáte skóre, seznam oprav a všechny kontroly, na kterých jsou založené.

Rychlý start

Tři volání. Bez klíče, bez účtu, bez registrace. Dva požadavky a jeden e-mail. Třetí volání je potřeba jen proto, že analýza trvá několik sekund.

  1. Rezervujte adresu

    Odešlete POST na koncový bod schránky. Získáte adresu, která přijme právě jednu zprávu a vyprší za hodinu, a také slug, podle kterého se identifikuje vše ostatní.

    Požadavek

    # 1. reserve a single-use address
    curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en'

    Odpověď

    {
      "address": "test-<slug>@t.email-spam-tester.com",
      "slug": "<slug>",
      "expires_at": "2026-01-01T12:00:00Z"
    }
  2. Odešlete na ni skutečnou zprávu

    Přes SMTP, z platformy, která bude kampaň odesílat. Polovina kontrol čte hlavičky přidané odesílací platformou, takže ručně vytvořená zpráva měří něco jiného.

    Požadavek

    # 2. send your message to that address, from your own platform
    To: test-<slug>@t.email-spam-tester.com
  3. Dotazujte se na stav a pak načtěte report

    Koncový bod stavu má několik set bajtů a sdělí vám, zda už má smysl načíst úplný report. Samotný report má několik tisíc řádků.

    Požadavek

    # 3. poll
    curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status'

    Odpověď

    {
      "slug": "<slug>",
      "analysis_status": "checks_ready",
      "ai_status": "running",
      "checks_done": 42,
      "checks_total": 42
    }

    Požadavek

    # 4. read the report once analysis_status is checks_ready
    curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>'

    Odpověď

    {
      "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"}}
      ]
    }

Rezervujte adresu, odešlete zprávu, kterou jste se chystali poslat svému seznamu, a načtěte report. V JSON je vše, co zobrazuje stránka, včetně skóre, všech 42 kontrol s jejich důkazy a oddílu standardu, o který se každé zjištění opírá.

Prvních 100,000 reportů je zdarma, bez klíče a bez účtu. Pokud napojujete agenta, a ne skript, je server MCP vhodnější než pravidelné dotazování.

Koncové body

Základní adresa https://email-spam-tester.com. Vše vrací JSON.

POST/api/v1/inbox

Rezervuje jednorázovou adresu. Oba parametry jsou volitelné.

langJazyk, ve kterém budou napsány plán oprav a zjištění jednotlivých kontrol, uvedený jako kód ISO. Určuje se nyní, protože zpráva dorazí přes SMTP o několik minut později a neobsahuje žádný údaj o tom, kdo na ni čeká. Neznámý kód použije jako náhradní jazyk angličtinu.
utm_source, utm_medium, utm_campaignPředávají se do naší analytiky. Užitečné, pokud měříte vlastní integraci.

GET/api/v1/tests/{slug}/status

Je nenáročný na pravidelné dotazování. Vrací pouze dvě stavová pole a informaci o průběhu kontrol, nic jiného.

Pravidelně se dotazujte na tento koncový bod, nikoli na report. analysis_status nejprve dosáhne hodnoty checks_ready a plán AI se objeví v ai_status přibližně o minutu později, takže volající, který chce pouze deterministické kontroly, nemusí na plán čekat.

GET/api/v1/tests/{slug}

Celý report. Vrací 202, dokud je adresa rezervovaná a zatím nic nedorazilo, a 200, jakmile něco dorazí.

GET/api/v1/tests/{slug}/message

Zpráva přesně tak, jak byla doručena: každá hlavička v pořadí přenosu, obě těla, seznam příloh a nezpracovaný zdroj. Načítá se samostatně, protože report se pravidelně načítá a tato data mohou mít až jeden megabajt.

Nezpracovaná zpráva se odstraní podle vlastního časovače, dříve než report. Poté tento endpoint odpoví důvodem namísto zdrojové zprávy.

PUT/api/v1/tests/{slug}/locale

Změní jazyk rezervace, která ještě nebyla použita. Pro agenta, který zjistí, v jakém jazyce jeho uživatel čte, až poté, co již požádal o adresu. Po přijetí zprávy je požadavek odmítnut, protože v té době již probíhá analýza.

Umístění v doručené poštěBeta

Odešlete jednu zprávu na seznam testovacích schránek a zjistěte, kam se dostala u Gmailu, Outlooku, Yahoo a dalších poskytovatelů: do Doručené pošty, Promoakcí nebo Spamu.

Rychlý start

  1. Vytvořte test

    Odešlete požadavek POST na endpoint pro umístění. Získáte značku a testovací schránky.

    Požadavek

    # 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}'

    Odpověď

    {
      "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"}
        ]
      }
    }
  2. Odešlete jednu zprávu do každé schránky

    Vložte značku do předmětu a odešlete zprávu z vaší běžné platformy na všechny adresy najednou.

    Požadavek

    # 2. one message to every address, with the marker in the subject
    Subject: October invoice est-3f9a1c7e2b4d6a80c5e1f2d3
    To: <seed>, <mailbox>, ...
  3. Dotazujte se na složky

    U každé adresy se doplní její poskytovatel a složka. Dotazování opakujte, dokud status nepřestane být waiting.

    Požadavek

    # 3. poll for the folders
    curl -s 'https://email-spam-tester.com/api/v1/placement/<slug>'

    Odpověď

    {
      "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"}
        ]
      }
    }

Koncové body

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.

Kontrola infrastruktury

Jeden požadavek GET zkontroluje nastavení e-mailu domény, aniž by cokoli odeslal, uchová výsledek a sdělí vám, co se od posledního spuštění změnilo. Není potřeba žádný klíč. V cron se níže uvedený řádek ukončí s nenulovým kódem, pokud je doména poškozená nebo se její nastavení změnilo způsobem, na kterém záleží.

Rychlý start

  1. Proveďte jeden požadavek GET

    Předejte doménu. ip přidá vaše odesílací adresy a selector určuje názvy selektorů DKIM, které se mají načíst.

    Požadavek

    curl -s 'https://email-spam-tester.com/api/v1/infra/check?domain=example.com&selector=mail&diff=true'
  2. Přečtěte si výsledek

    ok je odpověď pro skript a sections ukazuje, která část selhala.

    Odpověď

    {
      "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"}
        ]
      }
    }
  3. Přidejte to do cronu

    S diff=true se každý běh porovná s vaším posledním během a jq převede odpověď na návratový kód.

    Požadavek

    # 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)'
domainPovinné. Přijímá to, co nástroje: doménu, URL, e-mailovou adresu.
ipVaše odesílací adresa. Pro více adres ji opakujte, nejvýše 6krát.
selectorSelektor DKIM. Pro více selektorů jej opakujte, nejvýše 10krát. Každý selektor, který zadáte, musí existovat, jinak sekce dkim selže.
heloNázev, který váš server uvádí v HELO, porovnaný s jeho PTR.
accountPro koho je požadavek určen. Povinné s klíčem, který slouží více lidem.
checksSekce, které se mají spustit, oddělené čárkami. Ve výchozím nastavení všechny.
difftrue porovná toto spuštění s vaším posledním spuštěním pro danou doménu.
since7d, 12h nebo datum ve formátu ISO 8601. Porovná s vaším spuštěním nejbližším tomuto okamžiku v rozmezí 12 hodin, jinak s posledním spuštěním před ním. Zapne diff.
baselineID jednoho z vašich spuštění, se kterým se má porovnávat. Zapne diff.
freshtrue přeskočí 60sekundovou mezipaměť.

Čtení odpovědi

Dokončená kontrola odpoví kódem 200 a výsledek je v těle. status je nejhorší stav povinných sekcí: spf, dkim, dmarc, ptr, blocklist_ip, blocklist_domain, mx a smtp. unknown v povinné sekci se počítá jako warn. ok má hodnotu true, když je status pass nebo warn. score má hodnotu od 0 do 100 podle povinných sekcí, které vrátily odpověď, a má hodnotu null, když kvůli stavům error a unknown zbývá méně než polovina příslušné váhy. mta_sts, tls_rpt, bimi, dnssec, dane, ns a registration se vykazují a porovnávají, ale nemají vliv na ok ani score.

Sekce může mít stav pass, warn, fail, error (kontrolu se nepodařilo provést), unknown (příliš málo podkladů) nebo skipped (nepoužije se). skipped nemá na výsledek žádný vliv a důvod je uveden v not_checked. dkim_signature a alignment jsou vždy přítomné, protože vyžadují skutečnou zprávu.

Co mění ip a selector

PTR a seznamy blokovaných položek se týkají adres, takže běh nějaké potřebuje. Použije hodnoty ip, které předáte. Pokud žádné nepředáte, vezme až čtyři z vašich hostitelů MX a z výrazů ip4: a ip6: s jedinou adresou v kořenovém záznamu SPF. Adresy známého poskytovatele e-mailových služeb jsou uvedeny jako managed a nekontrolují se, a pokud žádné jiné nezbudou, ptr a blocklist_ip vrátí skipped. selector nelze načíst z DNS, takže běh vyzkouší váš, ty, které našly vaše dřívější běhy, a seznam běžných názvů. Pokud nic nenajde, nic to nedokazuje a dkim vrátí unknown. Pokud odesíláte z vlastního serveru, předejte obojí.

Co se změnilo

Každá položka v diff.changes má path, kind (added, removed, changed), severity (critical, warning, info) a effect (worsened, improved, neutral). Pouze critical a warning nastaví diff.changed, takže změna DKIM klíče na klíč stejné délky, nová adresa MX nebo obnovený certifikát nezpůsobí selhání řádku cronu. diff.worsened se řídí hodnotou effect libovolné změny. Při prvním spuštění není s čím porovnávat a diff.first_run to uvádí.

Referenčním bodem je vždy váš vlastní běh, takže pokud mezi dvěma vašimi běhy zkontroluje doménu někdo jiný, nic se tím neskryje. Vše, co se tentokrát nepodařilo načíst, přejde do diff.not_compared se zachovanou poslední známou hodnotou, což znamená, že se změna provedená během výpadku zobrazí, jakmile bude vyhledávání znovu fungovat. Běh s jiným ip nebo selector zůstává ve stejné řadě a to, na co se nedotazoval, se také neporovnává.

Proč by plánovaná kontrola měla používat klíč

Bez klíče patří vaše historie k hashi s klíčem odvozenému z vaší IP adresy, takže při změně adresy skončí, a lidé za jednou adresou ji sdílejí: běh kolegy posune váš referenční bod. S osobním klíčem API v Authorization: Bearer je historie vázána na klíč. Běhy s klíčem se uchovávají 365 dní a lze je otevřít pouze s tímto klíčem. Běhy bez klíče se uchovávají 30 dní a může je otevřít kdokoli, kdo zná jejich id.

6 požadavků za minutu a 50 za den pro každou IP nebo 30 a 500 pro každý klíč. Po překročení limitu je odpovědí 429 s Retry-After. Identický požadavek během 60 sekund pochází z mezipaměti, je označen jako cached: true, nevytvoří žádný běh a nezapočítává se. Čtení uložených běhů umožňuje 120 požadavků za minutu pro každého klienta. 503 s Retry-After znamená, že běží příliš mnoho kontrol, nebo při čtení uložených běhů, že úložiště není dostupné. 401 znamená nesprávný klíč. 422 obsahuje detail.code: invalid_domain, invalid_ip, invalid_selector, invalid_check, invalid_since, unknown_baseline nebo account_required.

Koncové body

GET/api/v1/infra/check

Spustí kontrolu. Parametry jsou v tabulce výše.

GET/api/v1/infra/runs/{public_id}

Jeden uložený běh, celý. 404, pokud neexistuje nebo patří jinému klíči.

GET/api/v1/infra/domains/{domain}/runs

Vaše běhy domény, od nejnovějšího: id, čas, stav, skóre a počet změn. Přijímá limit (1 až 100, ve výchozím nastavení 30) a before, id běhu.

GET/api/v1/infra/diff

Stejné porovnání mezi dvěma uloženými běhy, ?from=<id>&to=<id>. Potřebujete přístup k oběma.

GET/api/v1/infra/checks

Každá sekce se svou vahou, verzí skóre a limity.

Jednotlivé kontroly

Každé volání odpoví na jednu otázku a neuchovává historii. Nástroj samostatně spustí jednu část kontroly infrastruktury, s výjimkou nástroje pro hlavičky, který přečte zprávu, již jste obdrželi.

Rychlý start

  1. Vyberte kontrolu

    Vyberte nástroj z níže uvedeného seznamu a předejte mu doménu, adresu nebo IP, kterou požaduje.

    Požadavek

    curl -s 'https://email-spam-tester.com/api/v1/tools/spf?domain=example.com'
  2. Přečtěte stav a zjištění

    Každý nástroj odpoví stavem a svými zjištěními. Následující pole závisí na nástroji.

    Odpověď

    {
      "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}
    }

Koncové body

Všechny vracejí 200 se stavem a seznamem zjištění, z nichž každé obsahuje kód a jeho parametry. Stav je pass, warn, fail nebo error a nástroj sdílený s kontrolou infrastruktury může také vrátit unknown nebo skipped. Vyhledání, jehož časový limit vypršel, nebo seznam, který odmítl dotaz, se nikdy nepočítá jako pass. Napříč nástroji je povoleno 30 požadavků za minutu a 300 za den na jednu IP; nad tento limit je odpovědí 429 s Retry-After.

GET/api/v1/tools/spf

Záznam SPF domény: jeho syntaxe, všechna následovaná include a redirect a počet vyhledávání DNS, který celý strom spotřebuje z limitu deseti. Předejte ?domain=example.com.

GET/api/v1/tools/dmarc

Záznam DMARC domény, nebo její organizační domény, pokud vlastní záznam nemá: značky, zásady a zda každá externí adresa pro hlášení souhlasila s přijímáním hlášení. Předejte ?domain=example.com.

GET/api/v1/tools/dkim

Klíč DKIM publikovaný pro selektor: zda existuje a lze jej dekódovat, jeho typ a velikost a příznaky odvolání a testování. Předejte ?domain=example.com&selector=s1.

GET/api/v1/tools/blocklist

Adresa IPv4, adresa IPv6 nebo doména zkontrolovaná vůči blokovacím seznamům DNS, které sestava používá, včetně odpovědi každého seznamu. Předejte ?target=203.0.113.5.

GET/api/v1/tools/mx

Záznamy MX domény v pořadí, ve kterém je odesílatelé zkoušejí, s adresami IPv4 a IPv6 každého hostitele. Hlásí se Null MX, doména bez MX, hostitelé, kteří jsou adresami IP nebo CNAME, a hostitelé, které nelze přeložit, stejně jako záznamy MTA-STS a TLS-RPT. Zadejte ?domain=example.com.

GET/api/v1/tools/bimi

Nastavení BIMI domény ve čtyřech krocích: zásada DMARC vyžadovaná službou BIMI, záznam na adrese default._bimi, logo SVG zkontrolované podle profilu Tiny PS a certifikát značky s jeho typem, doménami a datem vypršení platnosti. Zadejte ?domain=example.com a &selector= pro jiný selektor než default.

GET/api/v1/tools/ptr

Záznamy PTR adresy a to, zda některý z těchto názvů ukazuje zpět na tuto adresu. Neúspěšné vyhledání vrátí stav error; chybějící záznam vrátí stav fail. Zadejte ?ip=8.8.8.8.

GET/api/v1/tools/mta-sts

Záznam MTA-STS domény a soubor zásad, na který odkazuje: režim, uvedení hostitelé a všichni hostitelé MX, které zásady vynechávají. Předejte ?domain=example.com.

GET/api/v1/tools/tls-rpt

Záznam TLS-RPT domény a adresy, které přijímají jeho hlášení. Předejte ?domain=example.com.

GET/api/v1/tools/dnssec

Zda je zóna domény podepsaná, nepodepsaná nebo poškozená, podle jejích záznamů DNSKEY a DS. Chybný podpis se rozlišuje od výpadku resolveru. Předejte ?domain=example.com.

GET/api/v1/tools/dane

Záznamy TLSA hostitelů MX porovnané s certifikátem, který hostitel předkládá, pokud bylo možné tento certifikát načíst. Předejte ?domain=example.com.

GET/api/v1/tools/smtp

STARTTLS a certifikát na prvních dvou hostitelích MX: verze TLS, vydavatel, datum vypršení platnosti a zda jsou řetězec a název platné. Připojujeme se pouze k hostitelům v doméně, na kterou jste se dotázali, a přeskakujeme poskytovatele e-mailových služeb, přičemž jeden výsledek pro každou adresu se sdílí po dobu 6 hodin. Žádný e-mail se neodesílá. Předejte ?domain=example.com.

GET/api/v1/tools/ns

Jmenné servery domény a zda její zóna obsahuje záznam SOA. Jeden jmenný server je warn. Předejte ?domain=example.com.

GET/api/v1/tools/registration

Kdy vyprší registrace domény, podle RDAP. Pokud zbývá méně než 30 dní, jde o warn. Zóna bez služby RDAP odpoví skipped. Předejte ?domain=example.com.

POST/api/v1/tools/header

Záhlaví přijaté zprávy odeslané jako JSON {"headers": "..."} nebo jako text/plain: trasa po jednotlivých skocích se zpožděními, TLS a odchylkou hodin, vlastní Authentication-Results příjemce, zarovnání domén From, DKIM d= a Return-Path a záhlaví DKIM, ARC, pro odhlášení odběru a filtru spamu. Vše za prvním prázdným řádkem je bez přečtení zahozeno. Záhlaví se zpracovávají v paměti a neukládají se, nepřidávají se do mezipaměti ani se nezaznamenávají do protokolu.

Kontrolujte doménu každou noc.
Otestujte e-mail před odesláním.

Společné pro všechny produkty

Přístup, klíče, formát reportu, stavy, chyby a také OpenAPI a llms.txt pro stroje.

Ověřování

Žádné není. Není třeba žádat o klíč, nastavovat hlavičku ani vytvářet účet. Vrácený slug funguje jako přístupový údaj: kdokoli ho má, může daný report číst, a nikdo jiný ho nemůže uhodnout.

To také znamená, že se slug vyplatí chránit jako heslo. Report ukazuje předmět, odesílatele, adresu pro vrácené zprávy a úplný zdroj zprávy komukoli, kdo má odkaz.

Osobní API klíče

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.

Čtení reportu

Pole, která obsahují odpověď, v pořadí, v jakém je pravděpodobně budete potřebovat.

score_ours0 až 100. Náš model. Ověřování a infrastruktura mají největší váhu, protože rozhodují o doručení dříve, než filtr přečte jediné slovo textu zprávy.
score_compat0 až 10. Reprodukuje číslo ve stylu SpamAssassin, které už lidé porovnávají, takže je report srovnatelný s tím, co někdo viděl jinde.
subscoresStejná škála od 0 do 100 pro každou sekci: auth, infra_spam, content, compliance.
checks[]Všech 42, každá se stavem, jednořádkovým zjištěním, podklady, podle nichž bylo rozhodnuto, a dopadem na obě skóre.
checks[].citationsOdkud zjištění pochází: část RFC citovaná doslovně a stránka, na které Google uvádí vlastní požadavek. Ručně sestavené, nikoli generované, takže se na ně lze spolehnout.
fixes[]Co změnit, v daném pořadí, včetně počtu bodů, které každá změna přinese. Přínosy se počítají opětovným vyhodnocením reportu, nejsou odhadované.
completeFalse, pokud kontrolu nebylo možné spustit. Nezkontrolovaná položka nikdy nemá stav pass, proto považujte skóre za optimistické, dokud nebude true.
report_urlStránka čitelná pro člověka. Předejte ji člověku místo stěny JSON.

Stavy

Kontrola má jeden z pěti stavů a rozdíl mezi dvěma z nich je důležitější, než se zdá.

passKontrola proběhla a nezjistila žádný problém.
warnStojí za opravu. Ubírá body.
failZhorší doručitelnost. Stojí více bodů.
přeskočenoNevztahovalo se. Žádné přílohy ke kontrole, žádná část HTML k vyhodnocení. Nejde o úspěšný výsledek.
chybaNepodařilo se nám to zjistit. Výsledek je vyloučen z bodového hodnocení a označen příznakem, namísto aby byl započítán jako úspěšný.

analysis_status nabývá hodnot received, analyzing, checks_ready, failed. ai_status nabývá hodnot pending, running, ready, fallback, error. Deterministický report je ve stavu checks_ready konečný; ai_status už pouze přidává plán.

Co může přijít v odpovědi

202Adresa je rezervována a žádná zpráva nedorazila. Tělo obsahuje adresu, dobu vypršení platnosti a jazyk, takže ji může zobrazit i volající, který rezervaci nevytvořil.
404Takový slug neexistuje. Buď nikdy neexistoval, nebo byla rezervace zapomenuta.
410Platnost adresy vypršela dříve, než dorazila zpráva.
409Pokusili jste se změnit jazyk poté, co již zpráva dorazila.
429Limit bezplatných testů pro vaši adresu. Tato služba nyní nemá žádný limit na osobu; pokud bude někdy nastaven, tělo uvádí, kdy se resetuje.

Čtyři důležité věci

Jedna zpráva na adresu

Druhá zpráva je odmítnuta. Váš předchozí report zůstane beze změny, což je smyslem tohoto omezení.

Hodina na použití

Adresa vyprší; report nikoli. Odkazy na report jsou trvalé, takže odkaz vložený do požadavku podpory zůstane funkční.

Odesílejte z platformy

Testování kampaně z osobního účtu měří tento účet. Téměř vše v části o ověřování se týká infrastruktury pro odesílání, nikoli textu.

Po opravě test zopakujte

Očekávaná zlepšení se počítají vždy pro jednu opravu a nesčítají se. Druhý report uvádí skutečné číslo.

Pro stroje

GET/api/health

Kontrola dostupnosti. Bez ověřování, bez vedlejších účinků.

Nejprve jeden vyzkoušejte ručně

Zabere to asi minutu a ukáže vám přesně to, co popisuje JSON.

Získat testovací adresu

Sandbox.

Každý endpoint obsahuje tlačítko, které ho spustí proti živé službě. Nic zde nevyžaduje klíč, takže požadavek, který z této stránky odešlete, je skutečný: rezervuje skutečnou adresu a započítává se.

Vyzkoušet v sandboxu