Încearcă în sandbox → Fiecare endpoint, cu un buton care îl rulează pe serviciul live. Nimic de aici nu necesită o cheie, așadar o solicitare pe care o trimiți de pe această pagină este una reală: rezervă o adresă reală și este contorizată.
Bucla
Două cereri și un e-mail. Al treilea apel există doar pentru că analiza durează câteva secunde.
Rezervă o adresă
Trimite o cerere POST către endpointul inbox. Primești o adresă care acceptă exact un mesaj și expiră într-o oră, împreună cu identificatorul slug pe baza căruia este indexat tot restul.
Trimite-i mesajul real
Prin SMTP, de pe platforma care va trimite campania. Jumătate dintre verificări citesc anteturile adăugate de platforma de trimitere, astfel încât un mesaj compus manual măsoară altceva.
Interoghează starea, apoi citește raportul
Endpointul de stare are câteva sute de octeți și îți spune dacă merită să preiei deja raportul complet. Raportul propriu-zis are câteva mii de linii.
# 1. reserve a single-use address curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en' { "address": "test-<slug>@t.email-spam-tester.com", "slug": "<slug>", "expires_at": "2026-01-01T12:00:00Z" }
# 2. send your message to that address, then poll curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status' { "slug": "<slug>", "analysis_status": "checks_ready", "ai_status": "running", "checks_done": 39, "checks_total": 39 }
# 3. read the report once analysis_status is checks_ready curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>' { "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"}} ] }
Autentificare
Nu există. Nicio cheie de solicitat, niciun antet de setat, niciun cont de creat. Slugul pe care îl primiți este capabilitatea: oricine îl deține poate citi raportul respectiv și nimeni altcineva nu îl poate ghici.
Endpointuri
Adresa de bază https://email-spam-tester.com. Totul răspunde cu JSON.
POST/api/v1/inbox
Rezervă o adresă de unică folosință. Ambii parametri sunt opționali.
| lang | Limba în care vor fi scrise planul de remediere și constatările pentru fiecare verificare, sub forma unui cod ISO. Este stabilită acum deoarece mesajul sosește prin SMTP câteva minute mai târziu și nu conține niciun indiciu despre cine îl așteaptă. Pentru un cod necunoscut se folosește implicit engleza. |
| utm_source, utm_medium, utm_campaign | Transmise către sistemul nostru de analiză. Util dacă vă măsurați propria integrare. |
GET/api/v1/tests/{slug}/status
Poate fi interogat frecvent. Returnează cele două câmpuri de stare și progresul verificărilor, fără nimic altceva.
GET/api/v1/tests/{slug}
Raportul complet. Răspunde cu 202 cât timp adresa este rezervată și încă nu a sosit nimic, apoi cu 200 după ce mesajul a sosit.
GET/api/v1/tests/{slug}/message
Mesajul exact așa cum a fost livrat: fiecare antet în ordinea transmisiei, ambele corpuri, lista atașamentelor și sursa brută. Este preluat separat deoarece raportul este interogat periodic, iar acesta poate ajunge la un megabyte.
PUT/api/v1/tests/{slug}/locale
Schimbă limba unei rezervări care nu a fost încă utilizată. Pentru un agent care află ce limbă citește utilizatorul său după ce a solicitat deja adresa. Refuzată după sosirea mesajului, deoarece până atunci analiza este în curs.
GET/api/health
Stare activă. Fără autentificare, fără efecte secundare.
Citirea raportului
Câmpurile care conțin răspunsul, în ordinea în care probabil le doriți.
| score_ours | De la 0 la 100. Modelul nostru. Autentificarea și infrastructura au cea mai mare pondere, deoarece ele decid livrarea înainte ca un filtru să citească vreun cuvânt din text. |
| score_compat | De la 0 la 10. Reproduce valoarea în stil SpamAssassin pe care oamenii o compară deja, astfel încât raportul să poată fi comparat cu ceea ce a văzut cineva în altă parte. |
| subscores | Aceeași scară de la 0 la 100 pentru fiecare secțiune: auth, infra_spam, content, compliance. |
| checks[] | Toate cele 41, fiecare cu o stare, o constatare pe un singur rând, dovezile pe baza cărora a fost stabilită și impactul asupra celor două scoruri. |
| checks[].citations | De unde provine constatarea: secțiunea din RFC, citată textual, și pagina unde Google își precizează propria cerință. Selectate manual, nu generate, astfel încât să fie de încredere. |
| fixes[] | Ce trebuie schimbat, în ordine, împreună cu punctele pe care le valorează fiecare schimbare. Câștigurile sunt calculate prin reevaluarea raportului, nu estimate. |
| complete | Fals atunci când o verificare nu a putut rula. Un element neverificat nu este niciodată unul trecut, deci considerați scorul optimist până când această valoare devine adevărată. |
| report_url | Pagina într-un format ușor de citit. Dați-o unei persoane în locul unui zid de JSON. |
Stări
O verificare are una dintre cinci stări, iar diferența dintre două dintre ele contează mai mult decât pare.
| pass | Verificarea a rulat și nu a găsit nimic în neregulă. |
| warn | Merită remediat. Costă puncte. |
| fail | Va afecta livrarea. Costă mai multe puncte. |
| omis | Nu s-a aplicat. Niciun atașament de scanat, nicio parte HTML de evaluat. Nu este o trecere. |
| eroare | Nu am putut determina rezultatul. Este exclus din scor și semnalat, în loc să fie considerat o trecere. |
analysis_status trece prin received, analyzing, checks_ready, failed. ai_status trece prin pending, running, ready, fallback, error. Raportul determinist este final la checks_ready; ai_status doar adaugă planul.
Ce poate fi returnat
| 202 | Adresa este rezervată și nu a sosit niciun mesaj. Corpul răspunsului conține adresa, data expirării și limba, astfel încât un apelant care nu a creat rezervarea o poate afișa în continuare. |
| 404 | Nu există un astfel de slug. Fie nu a existat niciodată, fie rezervarea a fost uitată. |
| 410 | Adresa a expirat înainte de sosirea unui mesaj. |
| 409 | Ați încercat să schimbați limba după ce mesajul sosise deja. |
| 429 | Limita de teste gratuite pentru adresa dvs. În prezent, acest serviciu nu are o limită per persoană; dacă va fi stabilită vreodată una, corpul răspunsului indică momentul la care se resetează. |
Patru lucruri de știut
Un mesaj per adresă
Al doilea este refuzat. Raportul anterior rămâne intact, acesta fiind scopul.
O oră pentru utilizare
Adresa expiră; raportul nu. Linkurile rapoartelor sunt permanente, astfel încât unul inserat într-un tichet continuă să funcționeze.
Trimiteți de pe platformă
Testarea unei campanii dintr-un cont personal măsoară acel cont. Aproape totul din secțiunea de autentificare se referă la infrastructura de trimitere, nu la text.
Retestați după remediere
Îmbunătățirile estimate sunt calculate pentru câte o remediere și nu se cumulează. Al doilea raport indică valoarea reală.
Pentru sisteme automate
- /api/openapi.json Descrierea OpenAPI, generată din același cod care deservește API-ul.
- /llms.txt, /llms-full.txt O hartă scurtă a acestui site pentru modelele lingvistice, conform convenției llms.txt, și o versiune mai lungă cu întreaga buclă și câmpurile raportului într-un singur fișier.
- /mcp Un server MCP cu aceeași funcționalitate și o așteptare blocantă, care este mai eficientă decât interogarea repetată din interiorul unui model.
- For agents Pagina pentru agenți: când să folosești acest instrument, cum să interpretezi o verificare omisă în raport cu una reușită și care constatări sunt înregistrări DNS pe care trebuie să le modifice o persoană, nu text pe care îl poate edita un agent.
Încearcă mai întâi unul manual
Durează aproximativ un minut și îți arată exact ceea ce descrie JSON.