सैंडबॉक्स में आज़माएँ → हर एंडपॉइंट के साथ एक बटन है, जो उसे लाइव सेवा पर चलाता है। यहाँ किसी कुंजी की आवश्यकता नहीं है, इसलिए इस पेज से भेजा गया अनुरोध वास्तविक होता है: यह एक वास्तविक पता आरक्षित करता है और इसकी गणना होती है।
चक्र
दो अनुरोध और एक ईमेल। तीसरी कॉल केवल इसलिए है क्योंकि विश्लेषण में कुछ सेकंड लगते हैं।
एक पता आरक्षित करें
इनबॉक्स एंडपॉइंट पर POST करें। आपको ऐसा पता मिलता है जो ठीक एक संदेश स्वीकार करता है और एक घंटे में समाप्त हो जाता है, साथ ही वह स्लग भी मिलता है जिस पर बाकी सब कुछ आधारित है।
उस पर वास्तविक संदेश भेजें
SMTP पर, उस प्लेटफ़ॉर्म से जो अभियान भेजेगा। आधी जाँचें आपके भेजने वाले प्लेटफ़ॉर्म द्वारा जोड़े गए हेडर पढ़ती हैं, इसलिए हाथ से बनाया गया संदेश गलत चीज़ को मापता है।
स्थिति की पोलिंग करें, फिर रिपोर्ट पढ़ें
स्थिति एंडपॉइंट कुछ सौ बाइट का है और आपको बताता है कि पूरी रिपोर्ट अभी फ़ेच करने योग्य है या नहीं। रिपोर्ट स्वयं कई हज़ार पंक्तियों की होती है।
# 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"}} ] }
प्रमाणीकरण
कोई नहीं है। अनुरोध करने के लिए कोई कुंजी नहीं, सेट करने के लिए कोई हेडर नहीं, बनाने के लिए कोई खाता नहीं। आपको वापस मिलने वाला स्लग ही क्षमता है: जिसके पास यह है, वह उस रिपोर्ट को पढ़ सकता है, और कोई अन्य इसका अनुमान नहीं लगा सकता।
एंडपॉइंट
मूल पता https://email-spam-tester.com। हर चीज़ JSON में उत्तर देती है।
POST/api/v1/inbox
एक बार उपयोग होने वाला पता आरक्षित करता है। दोनों पैरामीटर वैकल्पिक हैं।
| lang | ISO कोड के रूप में वह भाषा, जिसमें सुधार योजना और प्रत्येक जाँच के निष्कर्ष लिखे जाएँगे। यह अभी तय किया जाता है क्योंकि संदेश कुछ मिनट बाद SMTP के माध्यम से आता है और इसमें इसका कोई संकेत नहीं होता कि कौन इसकी प्रतीक्षा कर रहा है। किसी अज्ञात कोड के लिए English का उपयोग किया जाता है। |
| utm_source, utm_medium, utm_campaign | हमारे विश्लेषण तंत्र को भेजे जाते हैं। यदि आप अपने एकीकरण का मापन कर रहे हैं, तो उपयोगी हैं। |
GET/api/v1/tests/{slug}/status
बार-बार पोल करना सस्ता है। दो स्थिति फ़ील्ड और जाँचों की प्रगति लौटाता है, और कुछ नहीं।
GET/api/v1/tests/{slug}
पूरी रिपोर्ट। जब तक पता आरक्षित है और अभी कुछ नहीं आया है, तब तक 202 में उत्तर देता है, और आते ही 200 में।
GET/api/v1/tests/{slug}/message
संदेश ठीक उसी तरह जैसे वह डिलीवर हुआ था: वायर क्रम में प्रत्येक हेडर, दोनों बॉडी, अटैचमेंट सूची और कच्चा स्रोत। इसे अलग से प्राप्त किया जाता है क्योंकि रिपोर्ट को पोल किया जाता है और इसका आकार एक मेगाबाइट तक हो सकता है।
PUT/api/v1/tests/{slug}/locale
ऐसे reservation की भाषा बदलता है जिसका अभी तक उपयोग नहीं हुआ है। ऐसे agent के लिए, जो पता पहले ही मांग लेने के बाद यह जानता है कि उसका user कौन-सी भाषा पढ़ता है। संदेश पहुंच जाने के बाद अनुरोध अस्वीकार कर दिया जाता है, क्योंकि तब तक analysis चल रहा होता है।
GET/api/health
सक्रियता। कोई authentication नहीं, कोई side effect नहीं।
रिपोर्ट पढ़ना
वे fields जिनमें उत्तर होता है, उस क्रम में जिसमें आप शायद उन्हें देखना चाहेंगे।
| score_ours | 0 से 100। हमारा model। Authentication और infrastructure का भार सबसे अधिक होता है, क्योंकि किसी filter द्वारा copy का एक भी शब्द पढ़े जाने से पहले वे delivery तय करते हैं। |
| score_compat | 0 से 10। उस SpamAssassin-शैली की संख्या को दोहराता है जिसकी लोग पहले से तुलना करते हैं, ताकि रिपोर्ट की तुलना उस चीज़ से की जा सके जिसे किसी ने कहीं और देखा था। |
| subscores | प्रति section वही 0 से 100 का scale: auth, infra_spam, content, compliance। |
| checks[] | सभी 41, प्रत्येक में एक status, एक-पंक्ति का finding, वह evidence जिस पर निर्णय लिया गया और दोनों scores पर उसकी लागत। |
| checks[].citations | निष्कर्ष कहाँ से आया है: RFC का अनुभाग, शब्दशः उद्धृत, और वह पृष्ठ जहाँ Google अपनी आवश्यकता बताता है। इन्हें जनरेट करने के बजाय हाथ से संकलित किया गया है, इसलिए इन पर भरोसा किया जा सकता है। |
| सुधार[] | क्या बदलना है, क्रम में, और प्रत्येक बदलाव के लिए मिलने वाले अंक। लाभ की गणना रिपोर्ट को फिर से स्कोर करके की जाती है, इसका अनुमान नहीं लगाया जाता। |
| पूर्ण | जब कोई जाँच नहीं चल सकी, तो असत्य। बिना जाँचा गया आइटम कभी भी पास नहीं होता, इसलिए इसके सत्य होने तक स्कोर को आशावादी मानें। |
| रिपोर्ट_यूआरएल | मनुष्य के पढ़ने योग्य पृष्ठ। JSON का ढेर देने के बजाय किसी व्यक्ति को यह दें। |
स्थितियाँ
किसी जाँच की पाँच स्थितियों में से एक होती है, और उनमें से दो के बीच का अंतर जितना दिखता है उससे अधिक महत्वपूर्ण है।
| पास | जाँच चली और उसे कुछ भी गलत नहीं मिला। |
| चेतावनी | इसे ठीक करना उचित है। इससे अंक कटते हैं। |
| विफल | आपकी डिलीवरी पर असर पड़ेगा। अधिक अंक कटेंगे। |
| छोड़ा गया | लागू नहीं हुआ। स्कैन करने के लिए कोई अटैचमेंट नहीं, आकलन करने के लिए कोई HTML भाग नहीं। इसे पास नहीं माना गया। |
| त्रुटि | हम इसका पता नहीं लगा सके। इसे पास मानकर गिनने के बजाय स्कोर से बाहर रखा गया और फ़्लैग किया गया। |
analysis_status के मान received, analyzing, checks_ready, failed होते हैं। ai_status के मान pending, running, ready, fallback, error होते हैं। नियतात्मक रिपोर्ट checks_ready पर अंतिम होती है; ai_status केवल योजना जोड़ता है।
क्या वापस आ सकता है
| 202 | पता आरक्षित है और कोई संदेश नहीं आया है। बॉडी में पता, समाप्ति समय और भाषा होती है, इसलिए जिस कॉलर ने आरक्षण नहीं बनाया था, वह भी इसे दिखा सकता है। |
| 404 | ऐसा कोई स्लग नहीं है। या तो वह कभी अस्तित्व में नहीं था, या आरक्षण भुला दिया गया था। |
| 410 | संदेश आने से पहले ही पते की अवधि समाप्त हो गई। |
| 409 | आपने संदेश के पहले ही आ जाने के बाद भाषा बदलने की कोशिश की। |
| 429 | आपके पते के लिए निःशुल्क परीक्षण की सीमा। इस सेवा पर अभी प्रति व्यक्ति कोई सीमा नहीं है; यदि कभी कोई सीमा निर्धारित की जाती है, तो बॉडी बताती है कि वह कब रीसेट होती है। |
जानने योग्य चार बातें
प्रति पते एक संदेश
दूसरा संदेश अस्वीकार कर दिया जाता है। आपकी पिछली रिपोर्ट जस की तस रहती है, और यही इसका उद्देश्य है।
इस्तेमाल के लिए एक घंटा
पता समाप्त हो जाता है; रिपोर्ट नहीं। रिपोर्ट के लिंक स्थायी होते हैं, इसलिए टिकट में चिपकाया गया लिंक काम करता रहता है।
प्लेटफ़ॉर्म से भेजें
व्यक्तिगत खाते से किसी अभियान का परीक्षण उस खाते को मापता है। प्रमाणीकरण अनुभाग में लगभग सब कुछ भेजने वाले इन्फ़्रास्ट्रक्चर के बारे में है, टेक्स्ट के बारे में नहीं।
ठीक करने के बाद फिर परीक्षण करें
अपेक्षित सुधारों की गणना एक बार में एक सुधार के लिए की जाती है और वे एक साथ नहीं जुड़ते। दूसरी रिपोर्ट सही संख्या बताती है।
मशीनों के लिए
- /api/openapi.json OpenAPI विवरण, उसी कोड से जनरेट किया गया है जो API उपलब्ध कराता है।
- /llms.txt, /llms-full.txt भाषा मॉडल के लिए इस साइट का एक संक्षिप्त मानचित्र, llms.txt परंपरा में, और एक लंबा संस्करण जिसमें पूरा लूप और रिपोर्ट फ़ील्ड एक ही फ़ाइल में हैं।
- /mcp समान क्षमता और ब्लॉकिंग प्रतीक्षा वाला एक MCP सर्वर, जो किसी मॉडल के भीतर से पोलिंग करने से बेहतर है।
- For agents एजेंट पेज: इसका उपयोग कब करना है, छोड़ी गई जाँच और सफल जाँच के बीच अंतर कैसे समझना है, और कौन से निष्कर्ष ऐसे DNS रिकॉर्ड हैं जिन्हें किसी व्यक्ति को बदलना होगा, न कि ऐसा टेक्स्ट जिसे कोई एजेंट संपादित कर सकता है।
पहले एक बार मैन्युअल रूप से आज़माएँ
इसमें लगभग एक मिनट लगता है और यह आपको ठीक वही दिखाता है जिसका वर्णन JSON करता है।