Próbálja ki a sandboxban → Minden végpont egy gombbal, amely az élő szolgáltatáson futtatja. Itt semmihez sem szükséges kulcs, ezért az erről az oldalról indított kérés valódi: valódi címet foglal le, és beleszámít.
A folyamat
Két kérés és egy e-mail. A harmadik hívásra csak azért van szükség, mert az elemzés néhány másodpercig tart.
Foglalj le egy címet
Küldj POST-kérést a beérkező levelek végpontjára. Válaszként kapsz egy címet, amely pontosan egy üzenetet fogad, és egy óra múlva lejár, valamint azt a slugot, amely minden további művelet kulcsa.
Küldd el rá a tényleges üzenetet
SMTP-n keresztül, arról a platformról, amely a kampányt küldeni fogja. Az ellenőrzések fele a küldőplatform által hozzáadott fejléceket olvassa, ezért egy kézzel összeállított üzenet nem a megfelelő dolgot méri.
Kérdezd le az állapotot, majd olvasd el a jelentést
Az állapotvégpont néhány száz bájtos, és megmondja, hogy érdemes-e már lekérni a teljes jelentést. Maga a jelentés több ezer soros.
# 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"}} ] }
Hitelesítés
Nincs. Nem kell kulcsot kérni, fejlécet beállítani vagy fiókot létrehozni. A visszakapott slug maga a hozzáférés: aki birtokolja, elolvashatja a jelentést, más pedig nem tudja kitalálni.
Végpontok
Alapcím: https://email-spam-tester.com. Minden válasz JSON.
POST/api/v1/inbox
Lefoglal egy egyszer használatos címet. Mindkét paraméter opcionális.
| lang | Az a nyelv, amelyen a javítási terv és az ellenőrzésenkénti megállapítások készülnek, ISO-kódként megadva. Ezt most kell eldönteni, mert az üzenet percekkel később érkezik meg SMTP-n keresztül, és nem tartalmaz utalást arra, hogy ki vár rá. Ismeretlen kód esetén az alapértelmezett nyelv az angol. |
| utm_source, utm_medium, utm_campaign | Továbbítjuk az analitikai rendszerünknek. Hasznos, ha a saját integrációját méri. |
GET/api/v1/tests/{slug}/status
Kis költséggel lekérdezhető. Visszaadja a két állapotmezőt és azt, hogy meddig jutottak az ellenőrzések, mást nem.
GET/api/v1/tests/{slug}
A teljes jelentés. 202-es választ ad, amíg a cím le van foglalva, de még nem érkezett semmi, és 200-as választ, amint megérkezett.
GET/api/v1/tests/{slug}/message
Az üzenet pontosan úgy, ahogy kézbesítették: minden fejléc átviteli sorrendben, mindkét törzs, a mellékletek listája és a nyers forrás. Külön kérhető le, mert a jelentést rendszeresen lekérdezik, ez pedig akár egy megabájt méretű is lehet.
PUT/api/v1/tests/{slug}/locale
Módosítja egy még fel nem használt foglalás nyelvét. Olyan ügynök számára, amely azután tudja meg, hogy a felhasználója milyen nyelven olvas, hogy már bekérte a címet. Az üzenet megérkezése után a kérés elutasításra kerül, mert addigra már fut az elemzés.
GET/api/health
Üzemképesség. Nincs hitelesítés, nincsenek mellékhatások.
A jelentés olvasása
A választ tartalmazó mezők, abban a sorrendben, amelyben valószínűleg szüksége lesz rájuk.
| score_ours | 0-tól 100-ig. A mi modellünk. A hitelesítés és az infrastruktúra adja a súly nagy részét, mert ezek döntik el a kézbesítést, mielőtt egy szűrő egyetlen szót is elolvasna a szövegből. |
| score_compat | 0-tól 10-ig. Reprodukálja a SpamAssassin-stílusú számot, amelyet már össze szoktak hasonlítani, így a jelentés összevethető azzal, amit valaki máshol látott. |
| subscores | Ugyanaz a 0-tól 100-ig terjedő skála szakaszonként: auth, infra_spam, content, compliance. |
| checks[] | Mind a 41, mindegyik állapottal, egysoros megállapítással, a döntés alapjául szolgáló bizonyítékkal, valamint azzal, hogy mennyivel módosította a két pontszámot. |
| checks[].citations | A megállapítás forrása: az RFC szakasza szó szerint idézve, valamint az az oldal, amelyen a Google közli a saját követelményét. Kézzel összeállítva, nem generálva, ezért megbízhatók. |
| javítások[] | Mit kell módosítani, sorrendben, az egyes módosításokért járó pontokkal. A pontnövekedést a jelentés újbóli pontozásával számítjuk ki, nem becsléssel. |
| teljes | Hamis, ha egy ellenőrzést nem lehetett lefuttatni. Egy nem ellenőrzött elem soha nem felel meg, ezért a pontszámot tekintse optimistának, amíg ez az érték nem igaz. |
| jelentés_url | Az ember által olvasható oldal. Ezt adja át egy személynek egy falnyi JSON helyett. |
Állapotok
Egy ellenőrzés öt állapot egyikében lehet, és a közülük kettő közötti különbség fontosabb, mint amilyennek látszik.
| megfelelt | Az ellenőrzés lefutott, és nem talált hibát. |
| figyelmeztetés | Érdemes javítani. Pontlevonással jár. |
| nem felelt meg | Rontja a kézbesítést. Több pontba kerül. |
| kihagyás | Nem volt alkalmazható. Nincsenek ellenőrizendő mellékletek, nincs értékelendő HTML-rész. Nem számít sikeresnek. |
| hiba | Nem tudtuk megállapítani. Kizártuk a pontszámból és megjelöltük, ahelyett, hogy sikeresnek számítottuk volna. |
Az analysis_status lehetséges értékei: received, analyzing, checks_ready, failed. Az ai_status lehetséges értékei: pending, running, ready, fallback, error. A determinisztikus jelentés a checks_ready állapotnál végleges; az ai_status csak a tervet adja hozzá.
Milyen válasz érkezhet
| 202 | A cím le van foglalva, és még nem érkezett üzenet. A törzs tartalmazza a címet, a lejáratot és a nyelvet, így az a hívó is meg tudja jeleníteni, amely nem hozta létre a foglalást. |
| 404 | Nincs ilyen slug. Soha nem létezett, vagy a foglalás el lett felejtve. |
| 410 | A cím lejárt, mielőtt üzenet érkezett volna. |
| 409 | Megpróbálta módosítani a nyelvet, miután az üzenet már megérkezett. |
| 429 | Az Ön címére vonatkozó ingyenes tesztelési korlát. Jelenleg nincs személyenkénti korlát ennél a szolgáltatásnál; ha valaha bevezetnek egyet, a törzs jelzi, hogy mikor áll vissza. |
Négy fontos tudnivaló
Címenként egy üzenet
A másodikat elutasítjuk. A korábbi jelentésed változatlan marad, éppen ez a lényeg.
Egy óra a használatára
A cím lejár; a jelentés nem. A jelentések hivatkozásai állandók, így a jegybe beillesztett hivatkozás továbbra is működik.
Küldés a platformról
Ha egy kampányt személyes fiókból tesztelsz, azzal azt a fiókot méred. A hitelesítési szakaszban szinte minden a küldési infrastruktúráról szól, nem a szövegről.
Újratesztelés a javítás után
A várható javulást javításonként számítjuk ki, és az értékek nem adódnak össze. A második jelentés mutatja a valós értéket.
Gépi használatra
- /api/openapi.json Az OpenAPI-leírás, amely ugyanabból a kódból készül, amely az API-t kiszolgálja.
- /llms.txt, /llms-full.txt Az oldal rövid térképe nyelvi modellek számára, az llms.txt konvenció szerint, valamint egy hosszabb változat, amely egyetlen fájlban tartalmazza a teljes ciklust és a jelentés mezőit.
- /mcp Egy azonos képességű, blokkoló várakozást biztosító MCP-kiszolgáló, amely jobb, mint a modellen belülről végzett lekérdezéses várakozás.
- For agents Az ügynökoldal: mikor érdemes ezt használni, hogyan kell értelmezni egy kihagyott ellenőrzést egy sikereshez képest, és mely megállapítások olyan DNS-rekordok, amelyeket egy személynek kell módosítania, nem pedig olyan szövegek, amelyeket egy ügynök szerkeszthet.
Először próbáljon ki egyet kézzel
Körülbelül egy percet vesz igénybe, és pontosan megmutatja, mit ír le a JSON.