Roskaposti-API: sähköposti,
postilaatikko ja verkkotunnus
Lähetä meille yksi oikea viesti tai anna meille vain verkkotunnus. Kaikki vastaukset ovat JSON-muodossa.
Ei avainta, ei tiliä.
Pyyntö
# 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'
Vastaus
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}]
}Pyyntö
# 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'
Vastaus
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"}
]}
}Pyyntö
# 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'
Vastaus
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"}]
}Valitse tarvitsemasi
Tällä sivulla
Sähköpostitesti
Luemme yhden oikean viestin alusta loppuun: sisällön, allekirjoituksen, otsakkeet ja sen lähettäneen palvelimen. Saat pistemäärän, korjausluettelon ja kaikki niiden taustalla olevat tarkistukset.
Pika-aloitus
Kolme kutsua. Ei avainta, tiliä eikä rekisteröitymistä. Kaksi pyyntöä ja yksi sähköposti. Kolmas kutsu tarvitaan vain siksi, että analyysi kestää muutaman sekunnin.
Varaa osoite
Lähetä POST-pyyntö inbox-päätepisteeseen. Saat osoitteen, joka hyväksyy täsmälleen yhden viestin ja vanhenee tunnissa, sekä tunnisteen, johon kaikki muu perustuu.
Pyyntö
# 1. reserve a single-use address curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en'Vastaus
{ "address": "test-<slug>@t.email-spam-tester.com", "slug": "<slug>", "expires_at": "2026-01-01T12:00:00Z" }Lähetä oikea viesti siihen
Lähetä se SMTP:n kautta alustalta, joka lähettää kampanjan. Puolet tarkistuksista lukee lähetysalustan lisäämiä otsakkeita, joten käsin laadittu viesti mittaa väärää asiaa.
Pyyntö
# 2. send your message to that address, from your own platform To: test-<slug>@t.email-spam-tester.comKysy tilaa ja lue sitten raportti
Tilapäätepisteen vastaus on muutaman sadan tavun kokoinen ja kertoo, kannattaako koko raportti jo hakea. Itse raportti on useita tuhansia rivejä pitkä.
Pyyntö
# 3. poll curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status'Vastaus
{ "slug": "<slug>", "analysis_status": "checks_ready", "ai_status": "running", "checks_done": 42, "checks_total": 42 }Pyyntö
# 4. read the report once analysis_status is checks_ready curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>'Vastaus
{ "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"}} ] }
Varaa osoite, lähetä viesti, jonka olit aikeissa lähettää listallesi, ja lue raportti. Kaikki sivulla näkyvä on JSON-vastauksessa, mukaan lukien pisteet, kaikki 42 tarkistusta todisteineen ja standardin kohta, johon kukin havainto perustuu.
Ensimmäiset 100 000 raporttia ovat ilmaisia, eikä avainta tai tiliä tarvita. Jos integroit agenttia komentosarjan sijaan, MCP-palvelin sopii paremmin kuin toistuva kysely.
Päätepisteet
Perusosoite https://email-spam-tester.com. Kaikki vastaukset ovat JSON-muodossa.
POST/api/v1/inbox
Varaa kertakäyttöisen osoitteen. Molemmat parametrit ovat valinnaisia.
| lang | Kieli, jolla korjaussuunnitelma ja tarkistuskohtaiset havainnot kirjoitetaan, ISO-koodina. Tämä päätetään nyt, koska viesti saapuu SMTP:n kautta minuutteja myöhemmin eikä sisällä tietoa siitä, kuka sitä odottaa. Tuntemattoman koodin tapauksessa käytetään englantia. |
| utm_source, utm_medium, utm_campaign | Välitetään analytiikkaamme. Hyödyllinen, jos mittaat omaa integraatiotasi. |
GET/api/v1/tests/{slug}/status
Kevyt pollata. Palauttaa kaksi tilakenttää ja tarkistusten etenemisen, eikä mitään muuta.
GET/api/v1/tests/{slug}
Koko raportti. Palauttaa 202, kun osoite on varattu eikä mitään ole vielä saapunut, ja 200, kun viesti on saapunut.
GET/api/v1/tests/{slug}/message
Viesti täsmälleen toimitetussa muodossa: kaikki otsakkeet siirtojärjestyksessä, molemmat viestirungot, liiteluettelo ja raakalähde. Haetaan erikseen, koska raporttia pollataan ja tämän koko voi nousta megatavuun.
PUT/api/v1/tests/{slug}/locale
Vaihtaa sellaisen varauksen kielen, jota ei ole vielä käytetty. Tarkoitettu agentille, joka saa tietää käyttäjänsä lukeman kielen vasta pyydettyään jo osoitetta. Pyyntö hylätään viestin saavuttua, koska analyysi on silloin jo käynnissä.
Saapuneet-kansioon sijoittuminenBeta
Lähetä yksi viesti testipostilaatikoiden luetteloon ja katso, mihin se päätyi Gmailissa, Outlookissa, Yahoossa ja muilla palveluntarjoajilla: Saapuneet-, Tarjoukset- vai Roskaposti-kansioon.
Pika-aloitus
Luo testi
Tee POST-pyyntö placement-päätepisteeseen. Saat vastauksena tunnisteen ja testipostilaatikot.
Pyyntö
# 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}'Vastaus
{ "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"} ] } }Lähetä yksi viesti jokaiseen postilaatikkoon
Lisää tunniste aiheeseen ja lähetä viesti tavalliselta alustaltasi kaikkiin osoitteisiin yhdellä kertaa.
Pyyntö
# 2. one message to every address, with the marker in the subject Subject: October invoice est-3f9a1c7e2b4d6a80c5e1f2d3 To: <seed>, <mailbox>, ...Kysele kansioita
Jokaiselle osoitteelle täytetään sen palveluntarjoaja ja kansio. Kysele, kunnes tila ei enää ole waiting.
Pyyntö
# 3. poll for the folders curl -s 'https://email-spam-tester.com/api/v1/placement/<slug>'Vastaus
{ "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"} ] } }
Päätepisteet
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.
Infrastruktuurin tarkistus
Yksi GET-pyyntö tarkistaa verkkotunnuksen sähköpostimääritykset lähettämättä mitään, säilyttää tuloksen ja kertoo, mikä on muuttunut edellisen suorituksesi jälkeen. Avainta ei tarvita. cronissa alla oleva rivi palauttaa nollasta poikkeavan poistumiskoodin, kun verkkotunnus on virheellinen tai sen määritykset ovat muuttuneet merkityksellisellä tavalla.
Pika-aloitus
Tee yksi GET-pyyntö
Anna verkkotunnus. ip lisää lähetysosoitteesi, ja selector nimeää luettavat DKIM-valitsimet.
Pyyntö
curl -s 'https://email-spam-tester.com/api/v1/infra/check?domain=example.com&selector=mail&diff=true'Lue tulos
ok on vastaus skriptille, ja sections näyttää, mikä osa epäonnistui.
Vastaus
{ "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"} ] } }Lisää se croniin
Kun diff=true, jokaista ajoa verrataan edelliseen ajoosi, ja jq muuntaa vastauksen poistumiskoodiksi.
Pyyntö
# 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 | Pakollinen. Hyväksyy samat tiedot kuin työkalut: verkkotunnuksen, URL-osoitteen tai sähköpostiosoitteen. |
| ip | Lähettävä osoitteesi. Toista se useampia osoitteita varten, enintään 6 kertaa. |
| selector | DKIM-valitsin. Toista se useampia valitsimia varten, enintään 10 kertaa. Jokaisen antamasi valitsimen on oltava olemassa, tai DKIM-osio epäonnistuu. |
| helo | Nimi, jonka palvelimesi antaa HELO-komennossa, verrattuna sen PTR-tietueeseen. |
| account | Kenelle pyyntö on tarkoitettu. Pakollinen avaimen kanssa, joka palvelee useita käyttäjiä. |
| checks | Suoritettavat osiot pilkuilla erotettuina. Oletuksena kaikki osiot. |
| diff | true vertaa tätä suoritusta verkkotunnuksen edelliseen suoritukseesi. |
| since | 7d, 12h tai ISO 8601 -päivämäärä. Vertaa suoritukseesi, joka on lähimpänä kyseistä ajankohtaa 12 tunnin sisällä, muussa tapauksessa viimeiseen sitä edeltävään suoritukseen. Ottaa diffin käyttöön. |
| baseline | Yhden vertailtavan suorituksesi tunniste. Ottaa diffin käyttöön. |
| fresh | true ohittaa 60 sekunnin välimuistin. |
Vastauksen lukeminen
Valmistunut tarkistus palauttaa 200, ja tulos on vastausrungossa. status on vaadituista osioista heikoin: spf, dkim, dmarc, ptr, blocklist_ip, blocklist_domain, mx ja smtp. Vaaditun osion unknown lasketaan warn-tilaksi. ok on true, kun status on pass tai warn. score on 0–100 vastanneiden vaadittujen osioiden perusteella ja null, kun virheiden ja unknown-tilojen vuoksi sovellettavasta painosta jää alle puolet. mta_sts, tls_rpt, bimi, dnssec, dane, ns ja registration raportoidaan ja niitä verrataan, mutta ne eivät vaikuta ok- tai score-arvoon.
Osion tila voi olla pass, warn, fail, error (emme voineet tarkistaa), unknown (tietoja on liian vähän) tai skipped (ei sovellu). skipped ei vaikuta tulokseen, ja syy on not_checked-kentässä. dkim_signature ja alignment ovat aina mukana, koska ne tarvitsevat oikean viestin.
Mitä ip ja selector muuttavat
PTR ja estolistat koskevat osoitteita, joten ajo tarvitsee niitä. Se käyttää antamiasi ip-arvoja. Jos niitä ei ole, se ottaa enintään neljä osoitetta MX-palvelimistasi sekä juuritason SPF-tietueen yhden osoitteen ip4:- ja ip6:-ehdoista. Tunnetun sähköpostipalveluntarjoajan osoitteet merkitään managed-tilaan ja jätetään tarkistamatta, ja jos mitään ei jää jäljelle, ptr ja blocklist_ip palauttavat skipped. Selectoria ei voi lukea DNS:stä, joten ajo kokeilee antamaasi selectoria, aiempien ajojesi löytämiä selectoreita ja yleisten nimien luetteloa. Se, ettei mitään löydy, ei todista mitään, ja dkim palauttaa unknown. Jos lähetät omalta palvelimeltasi, anna molemmat.
Mikä muuttui
Jokaisella diff.changes-kohteella on path, kind (added, removed, changed), severity (critical, warning, info) ja effect (worsened, improved, neutral). Vain critical ja warning asettavat diff.changed-arvon, joten samanpituiseen vaihdettu DKIM-avain, uusi MX-osoite tai uusittu varmenne ei aiheuta cron-rivin epäonnistumista. diff.worsened määräytyy minkä tahansa muutoksen effect-arvon perusteella. Ensimmäisellä suorituskerralla vertailtavaa ei ole, ja diff.first_run ilmaisee tämän.
Vertailutaso on aina oma ajosi, joten se, että joku muu tarkistaa verkkotunnuksen kahden ajosi välissä, ei peitä mitään. Kaikki, mitä emme tällä kertaa voineet lukea, siirtyy diff.not_compared-kohtaan viimeksi tunnetun arvonsa kanssa, mikä tarkoittaa, että käyttökatkon aikana tehty muutos tulee näkyviin, kun haku toimii jälleen. Ajo, jolla on eri ip tai selector, pysyy samassa sarjassa, eikä myöskään asioita, joita se ei pyytänyt, verrata.
Miksi ajoitetun tarkistuksen kannattaa käyttää avainta
Ilman avainta historiasi kuuluu IP-osoitteesi avaimelliseen tiivisteeseen, joten se päättyy osoitteen vaihtuessa, ja saman osoitteen takana olevat käyttäjät jakavat sen: kollegan ajo siirtää vertailutasoasi. Kun Authorization: Bearer -otsakkeessa on henkilökohtainen API-avain, historia seuraa avainta. Avaimella tehdyt ajot säilytetään 365 päivää, ja ne voi avata vain kyseisellä avaimella. Ilman avainta tehdyt ajot säilytetään 30 päivää, ja ne voi avata kuka tahansa, jolla on niiden tunnus.
6 pyyntöä minuutissa ja 50 päivässä IP-osoitetta kohden tai 30 ja 500 avainta kohden. Tämän ylityttyä vastaus on 429 ja sisältää Retry-After-otsakkeen. Täsmälleen sama pyyntö 60 sekunnin sisällä tulee välimuistista, merkitään cached: true -arvolla, ei kirjoita ajoa eikä sitä lasketa mukaan. Tallennettujen ajojen lukeminen sallii 120 pyyntöä minuutissa asiakasta kohden. 503 ja Retry-After tarkoittavat, että tarkistuksia on käynnissä liikaa tai tallennettuja ajoja luettaessa tallennustila ei ole käytettävissä. 401 tarkoittaa väärää avainta. 422 sisältää detail.code-arvon: invalid_domain, invalid_ip, invalid_selector, invalid_check, invalid_since, unknown_baseline tai account_required.
Päätepisteet
GET/api/v1/infra/check
Suorittaa tarkistuksen. Parametrit ovat yllä olevassa taulukossa.
GET/api/v1/infra/runs/{public_id}
Yksi tallennettu ajo kokonaisuudessaan. 404, jos sitä ei ole olemassa tai se kuuluu toiselle avaimelle.
GET/api/v1/infra/domains/{domain}/runs
Sinun verkkotunnukselle tekemäsi ajot, uusin ensin: id, aika, tila, pistemäärä ja muutosten määrä. Ottaa parametrit limit (1–100, oletuksena 30) ja before, joka on ajon id.
GET/api/v1/infra/diff
Sama vertailu kahden tallennetun ajon välillä, ?from=<id>&to=<id>. Sinulla on oltava pääsy molempiin.
GET/api/v1/infra/checks
Jokainen osio painoineen, pistemäärän versioineen ja rajoineen.
Yksittäiset tarkistukset
Jokainen kutsu vastaa yhteen kysymykseen eikä säilytä historiaa. Työkalu suorittaa yhden infrastruktuurin tarkistuksen osan itsenäisesti lukuun ottamatta otsaketyökalua, joka lukee jo vastaanottamasi viestin.
Pika-aloitus
Valitse tarkistus
Valitse työkalu alla olevasta luettelosta ja anna sen pyytämä verkkotunnus, osoite tai IP-osoite.
Pyyntö
curl -s 'https://email-spam-tester.com/api/v1/tools/spf?domain=example.com'Lue tila ja havainnot
Jokainen työkalu vastaa tilalla ja havainnoillaan. Niiden jälkeiset kentät riippuvat työkalusta.
Vastaus
{ "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} }
Päätepisteet
GET/api/v1/tools/spf
Verkkotunnuksen SPF-tietue: sen syntaksi, jokainen seurattu include ja redirect sekä koko puun aiheuttamien DNS-hakujen määrä suhteessa kymmenen haun rajaan. Anna ?domain=example.com.
GET/api/v1/tools/dmarc
Verkkotunnuksen DMARC-tietue tai sen organisaatiotason verkkotunnuksen tietue, jos sillä ei ole omaa: tunnisteet, käytäntö ja se, onko kukin ulkoinen raporttiosoite suostunut vastaanottamaan raportteja. Anna ?domain=example.com.
GET/api/v1/tools/dkim
Valitsimelle julkaistu DKIM-avain: onko se olemassa ja voidaanko se dekoodata, sen tyyppi ja koko sekä kumoamis- ja testaustunnisteet. Anna ?domain=example.com&selector=s1.
GET/api/v1/tools/blocklist
IPv4-osoite, IPv6-osoite tai verkkotunnus tarkistettuna raportin käyttämistä DNS-estolistoista sekä kunkin listan vastaus. Anna ?target=203.0.113.5.
GET/api/v1/tools/mx
Verkkotunnuksen MX-tietueet siinä järjestyksessä, jossa lähettäjät kokeilevat niitä, sekä jokaisen isäntäkoneen IPv4- ja IPv6-osoitteet. Null MX, verkkotunnus ilman MX-tietuetta, IP-osoitteita tai CNAME-tietueita olevat isäntäkoneet ja isäntäkoneet, joiden osoitetta ei voida selvittää, raportoidaan, samoin kuin MTA-STS- ja TLS-RPT-tietueet. Anna ?domain=example.com.
GET/api/v1/tools/bimi
Verkkotunnuksen BIMI-määritys neljässä vaiheessa: BIMI:n edellyttämä DMARC-käytäntö, tietue osoitteessa default._bimi, Tiny PS -profiilia vasten tarkistettu SVG-logo ja merkkivarmenne sekä sen tyyppi, verkkotunnukset ja vanhenemisaika. Anna ?domain=example.com ja &selector=, jos valitsin on muu kuin default.
GET/api/v1/tools/ptr
Osoitteen PTR-tietueet ja se, ratkeaako jokin näistä nimistä takaisin kyseiseen osoitteeseen. Epäonnistunut haku antaa tilaksi error; puuttuva tietue antaa tilaksi fail. Anna ?ip=8.8.8.8.
GET/api/v1/tools/mta-sts
Verkkotunnuksen MTA-STS-tietue ja sen osoittama käytäntötiedosto: tila, luetellut palvelimet ja kaikki MX-palvelimet, jotka käytäntö jättää pois. Anna ?domain=example.com.
GET/api/v1/tools/tls-rpt
Verkkotunnuksen TLS-RPT-tietue ja osoitteet, jotka vastaanottavat sen raportit. Anna ?domain=example.com.
GET/api/v1/tools/dnssec
DNSKEY- ja DS-tietueiden perusteella se, onko verkkotunnuksen vyöhyke allekirjoitettu, allekirjoittamaton vai virheellinen. Virheellinen allekirjoitus erotetaan resolverin käyttökatkosta. Anna ?domain=example.com.
GET/api/v1/tools/dane
MX-palvelinten TLSA-tietueet verrattuina palvelimen esittämään varmenteeseen, kun varmenne voitiin lukea. Anna ?domain=example.com.
GET/api/v1/tools/smtp
STARTTLS ja kahden ensimmäisen MX-palvelimen varmenne: TLS-versio, myöntäjä, vanhenemispäivä sekä se, ovatko ketju ja nimi kelvollisia. Muodostamme yhteyden vain pyytämääsi verkkotunnukseen kuuluviin palvelimiin ja ohitamme sähköpostipalveluntarjoajat, ja yhtä osoitekohtaista tulosta käytetään yhteisesti 6 tunnin ajan. Sähköpostia ei lähetetä. Anna ?domain=example.com.
GET/api/v1/tools/ns
Verkkotunnuksen nimipalvelimet ja se, onko sen vyöhykkeellä SOA-tietue. Yksi nimipalvelin aiheuttaa varoituksen. Anna ?domain=example.com.
GET/api/v1/tools/registration
RDAP-tietojen perusteella ajankohta, jolloin verkkotunnuksen rekisteröinti päättyy. Alle 30 jäljellä olevaa päivää aiheuttaa varoituksen. Vyöhykkeelle, jolla ei ole RDAP-palvelua, palautetaan skipped. Anna ?domain=example.com.
POST/api/v1/tools/header
Vastaanotetun viestin otsakkeet, lähetettyinä JSON-muodossa {"headers": "..."} tai muodossa text/plain: reitti hyppy hypyltä viiveineen, TLS-tietoineen ja kellojen poikkeamineen, vastaanottajan oma Authentication-Results, From-, DKIM d=- ja Return-Path-verkkotunnusten kohdistus sekä DKIM-, ARC-, tilauksen peruutus- ja roskapostisuodattimen otsakkeet. Kaikki ensimmäisen tyhjän rivin jälkeen ohitetaan lukematta. Otsakkeet käsitellään muistissa, eikä niitä tallenneta, välimuistiteta tai kirjata lokiin.
Tarkista verkkotunnus joka yö.
Testaa sähköposti ennen kuin se lähtee.
Kaikille tuotteille yhteistä
Käyttöoikeudet, avaimet, raporttimuoto, tilat, virheet sekä OpenAPI ja koneille tarkoitettu llms.txt.
Todennus
Sitä ei ole. Ei pyydettävää avainta, asetettavaa otsaketta eikä luotavaa tiliä. Palautettu slug-tunniste toimii käyttöoikeutena: sen haltija voi lukea raportin, eivätkä muut voi arvata sitä.
Henkilökohtaiset API-avaimet
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.
Raportin lukeminen
Vastauksen sisältävät kentät siinä järjestyksessä, jossa todennäköisesti haluat ne.
| score_ours | 0–100. Oma mallimme. Todennuksella ja infrastruktuurilla on suurin paino, koska ne ratkaisevat toimituksen ennen kuin suodatin lukee sanaakaan viestin tekstistä. |
| score_compat | 0–10. Toistaa SpamAssassin-tyylisen luvun, johon ihmiset jo vertaavat tuloksia, jotta raporttia voi verrata muualla nähtyihin tuloksiin. |
| subscores | Sama asteikko 0–100 osiota kohden: auth, infra_spam, content, compliance. |
| checks[] | Kaikki 42, jokaisessa tila, yhden rivin havainto, päätöksen perustana ollut näyttö ja vaikutus kumpaankin pistemäärään. |
| checks[].citations | Mistä havainto on peräisin: RFC:n kohta sanatarkasti lainattuna ja sivu, jolla Google ilmoittaa oman vaatimuksensa. Koottu käsin eikä generoitu, joten niihin voi luottaa. |
| korjaukset[] | Mitä muuttaa, missä järjestyksessä ja kuinka monta pistettä kustakin muutoksesta saa. Parannukset lasketaan pisteyttämällä raportti uudelleen, niitä ei arvioida. |
| valmis | Epätosi, kun tarkistusta ei voitu suorittaa. Tarkistamaton kohde ei koskaan ole hyväksytty, joten pidä pisteytystä optimistisena, kunnes arvo on tosi. |
| raportin_url | Ihmisen luettavissa oleva sivu. Anna se henkilölle JSON-tekstiseinän sijaan. |
Tilat
Tarkistuksella on yksi viidestä tilasta, ja kahden niistä välinen ero on merkityksellisempi kuin miltä näyttää.
| hyväksytty | Tarkistus suoritettiin, eikä siinä havaittu ongelmia. |
| varoitus | Kannattaa korjata. Vähentää pisteitä. |
| hylätty | Heikentää toimitettavuutta. Maksaa enemmän pisteitä. |
| ohitettu | Ei soveltunut. Ei tarkistettavia liitteitä eikä arvioitavaa HTML-osaa. Ei tarkoita läpäisyä. |
| virhe | Emme pystyneet selvittämään tulosta. Se jätetään pisteytyksen ulkopuolelle ja merkitään, eikä sitä lasketa läpäisyksi. |
analysis_status voi olla received, analyzing, checks_ready tai failed. ai_status voi olla pending, running, ready, fallback tai error. Deterministinen raportti on lopullinen tilassa checks_ready; ai_status lisää vain suunnitelman.
Mitä voidaan palauttaa
| 202 | Osoite on varattu, eikä viestiä ole saapunut. Runko sisältää osoitteen, vanhenemisajan ja kielen, joten kutsuja, joka ei luonut varausta, voi silti näyttää sen. |
| 404 | Tällaista tunnistetta ei ole. Sitä ei ole koskaan ollut, tai varaus unohdettiin. |
| 410 | Osoite vanheni ennen viestin saapumista. |
| 409 | Yritit vaihtaa kieltä sen jälkeen, kun viesti oli jo saapunut. |
| 429 | Osoitteesi ilmaisten testien raja. Tässä palvelussa ei tällä hetkellä ole henkilökohtaista rajaa; jos sellainen joskus asetetaan, runko kertoo, milloin se nollautuu. |
Neljä tietämisen arvoista asiaa
Yksi viesti osoitetta kohden
Toinen viesti hylätään. Aiempi raporttisi säilyy muuttumattomana, mikä on tarkoituskin.
Tunti aikaa käyttää sitä
Osoite vanhenee, mutta raportti ei. Raporttilinkit ovat pysyviä, joten tukipyyntöön liitetty linkki toimii jatkossakin.
Lähetä alustalta
Kampanjan testaaminen henkilökohtaiselta tililtä mittaa kyseistä tiliä. Lähes kaikki todennusosiossa koskee lähetysinfrastruktuuria, ei tekstiä.
Testaa uudelleen korjauksen jälkeen
Odotetut parannukset lasketaan yksi korjaus kerrallaan, eivätkä ne summaudu. Toinen raportti antaa rehellisen luvun.
Koneille
- /api/openapi.json OpenAPI-kuvaus, joka luodaan samasta APIa palvelevasta koodista.
- /llms.txt, /llms-full.txt Lyhyt kartta tästä sivustosta kielimalleille llms.txt-käytännön mukaisesti sekä pidempi versio, jossa koko kierros ja raportin kentät ovat yhdessä tiedostossa.
- /mcp MCP-palvelin, jolla on sama toiminnallisuus ja estävä odotus, mikä on parempi kuin kysely mallin sisältä.
- For agents Agenttisivu: milloin tätä kannattaa käyttää, miten ohitettua tarkistusta tulkitaan suhteessa läpäistyyn tarkistukseen ja mitkä havainnot ovat DNS-tietueita, jotka henkilön on muutettava, eivätkä tekstiä, jota agentti voi muokata.
GET/api/health
Toimivuustarkistus. Ei todennusta, ei sivuvaikutuksia.
Kokeile ensin yhtä käsin
Se kestää noin minuutin ja näyttää täsmälleen, mitä JSON kuvaa.
Hanki testiosoiteSandbox.
Jokainen päätepiste, painikkeella, joka suorittaa sen reaaliaikaista palvelua vasten. Mikään täällä ei vaadi avainta, joten tältä sivulta lähettämäsi pyyntö on todellinen: se varaa todellisen osoitteen ja se lasketaan mukaan.
Kokeile sandboxissa