ลองใช้ในแซนด์บ็อกซ์ → ทุก endpoint มีปุ่มสำหรับเรียกใช้กับบริการจริง ทุกอย่างที่นี่ไม่ต้องใช้คีย์ ดังนั้นคำขอที่คุณส่งจากหน้านี้จึงเป็นคำขอจริง: คำขอนี้จะจองที่อยู่จริงและถูกนับรวม
ลำดับการทำงาน
คำขอสองครั้งและอีเมลหนึ่งฉบับ การเรียกครั้งที่สามมีไว้เพียงเพราะการวิเคราะห์ใช้เวลาสองสามวินาที
จองที่อยู่
ส่ง POST ไปยัง endpoint ของกล่องจดหมาย คุณจะได้รับที่อยู่ที่รับข้อความได้เพียงหนึ่งฉบับและหมดอายุภายในหนึ่งชั่วโมง พร้อม slug ที่ใช้เป็นคีย์อ้างอิงสำหรับทุกอย่างที่เหลือ
ส่งข้อความจริงไปยังที่อยู่นั้น
ส่งผ่าน SMTP จากแพลตฟอร์มที่จะใช้ส่งแคมเปญ การตรวจสอบครึ่งหนึ่งอ่านส่วนหัวที่แพลตฟอร์มส่งของคุณเพิ่มเข้ามา ดังนั้นข้อความที่เขียนขึ้นเองจึงวัดสิ่งที่ไม่ถูกต้อง
ตรวจสอบสถานะเป็นระยะ แล้วอ่านรายงาน
endpoint สถานะมีขนาดไม่กี่ร้อยไบต์และแจ้งให้คุณทราบว่าควรดึงรายงานฉบับเต็มแล้วหรือยัง ตัวรายงานมีความยาวหลายพันบรรทัด
# 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"}} ] }
การยืนยันตัวตน
ไม่มี ไม่ต้องขอคีย์ ไม่ต้องตั้งค่าเฮดเดอร์ และไม่ต้องสร้างบัญชี slug ที่ได้รับกลับมาคือสิทธิ์ในการเข้าถึง: ใครก็ตามที่ถือ slug นี้สามารถอ่านรายงานนั้นได้ และไม่มีใครอื่นเดา slug นี้ได้
เอนด์พอยต์
ที่อยู่ฐาน https://email-spam-tester.com ทุกอย่างตอบกลับเป็น JSON
POST/api/v1/inbox
จองที่อยู่สำหรับใช้ครั้งเดียว พารามิเตอร์ทั้งสองเป็นทางเลือก
| lang | ภาษาที่จะใช้เขียนแผนการแก้ไขและผลการตรวจสอบแต่ละรายการ โดยระบุเป็นรหัส ISO ต้องกำหนดตอนนี้เพราะข้อความจะมาถึงผ่าน SMTP ในอีกหลายนาทีต่อมา และไม่มีข้อมูลบ่งชี้ว่าใครกำลังรอข้อความนั้นอยู่ รหัสที่ไม่รู้จักจะเปลี่ยนไปใช้ภาษาอังกฤษ |
| 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
เปลี่ยนภาษาของรายการจองที่ยังไม่ได้ใช้งาน สำหรับ agent ที่ทราบว่าผู้ใช้ของตนอ่านภาษาใดหลังจากขอที่อยู่ไปแล้ว ระบบจะปฏิเสธเมื่อข้อความมาถึงแล้ว เพราะเมื่อถึงตอนนั้นการวิเคราะห์กำลังทำงานอยู่
GET/api/health
การตรวจสอบว่ายังทำงานอยู่ ไม่มีการยืนยันตัวตน ไม่มีผลข้างเคียง
การอ่านรายงาน
ฟิลด์ที่มีคำตอบ ตามลำดับที่คุณน่าจะต้องการ
| score_ours | 0 ถึง 100 โมเดลของเรา การยืนยันตัวตนและโครงสร้างพื้นฐานมีน้ำหนักมากที่สุด เพราะสิ่งเหล่านี้ตัดสินการนำส่งก่อนที่ตัวกรองจะอ่านข้อความในเนื้อหา |
| score_compat | 0 ถึง 10 จำลองตัวเลขแบบ SpamAssassin ที่ผู้ใช้คุ้นเคยในการนำไปเปรียบเทียบ เพื่อให้รายงานสามารถเปรียบเทียบกับสิ่งที่ผู้อื่นเห็นจากที่อื่นได้ |
| subscores | ใช้สเกล 0 ถึง 100 เดียวกันในแต่ละส่วน: auth, infra_spam, content, compliance |
| checks[] | ครบทั้ง 41 รายการ แต่ละรายการมีสถานะ ข้อค้นพบหนึ่งบรรทัด หลักฐานที่ใช้ตัดสิน และผลกระทบต่อคะแนนทั้งสอง |
| checks[].citations | ที่มาของข้อค้นพบ: ส่วนของ RFC ที่ยกมาตามต้นฉบับ และหน้าที่ Google ระบุข้อกำหนดของตนเอง จัดทำด้วยมือแทนการสร้างขึ้นโดยอัตโนมัติ จึงเชื่อถือได้ |
| fixes[] | สิ่งที่ต้องเปลี่ยนแปลงตามลำดับ พร้อมคะแนนที่จะได้รับจากการเปลี่ยนแปลงแต่ละรายการ คะแนนที่เพิ่มขึ้นคำนวณโดยให้คะแนนรายงานใหม่ ไม่ใช่ค่าประมาณ |
| complete | เป็น False เมื่อไม่สามารถเรียกใช้การตรวจสอบได้ รายการที่ไม่ได้ตรวจสอบจะไม่ถือว่าผ่าน ดังนั้นให้ถือว่าคะแนนเป็นค่าที่มองในแง่ดีจนกว่าค่านี้จะเป็น true |
| report_url | หน้าที่มนุษย์อ่านได้ ส่งหน้านี้ให้บุคคลแทน JSON จำนวนมาก |
สถานะ
การตรวจสอบมีสถานะได้หนึ่งในห้าแบบ และความแตกต่างระหว่างสองสถานะในนั้นสำคัญกว่าที่เห็น
| pass | การตรวจสอบทำงานและไม่พบสิ่งผิดปกติ |
| warn | ควรแก้ไข มีการหักคะแนน |
| fail | ทำให้การส่งถึงปลายทางเสียหาย ถูกหักคะแนนมากกว่า |
| ข้าม | ใช้ไม่ได้กับกรณีนี้ ไม่มีไฟล์แนบให้สแกน ไม่มีส่วน HTML ให้ประเมิน ไม่ถือว่าผ่าน |
| ข้อผิดพลาด | เราไม่สามารถระบุผลได้ จึงไม่นำมาคำนวณคะแนนและทำเครื่องหมายไว้ แทนที่จะนับว่าผ่าน |
analysis_status มีค่า received, analyzing, checks_ready, failed ส่วน ai_status มีค่า pending, running, ready, fallback, error รายงานแบบกำหนดผลตายตัวจะถือเป็นผลสุดท้ายเมื่อเป็น checks_ready ส่วน ai_status จะเพิ่มเฉพาะแผนเท่านั้น
สิ่งที่อาจส่งกลับมา
| 202 | ที่อยู่นี้ถูกจองไว้และยังไม่มีข้อความมาถึง เนื้อหาการตอบกลับระบุที่อยู่ เวลาหมดอายุ และภาษา ดังนั้นไคลเอนต์ที่ไม่ได้สร้างการจองก็ยังสามารถแสดงข้อมูลดังกล่าวได้ |
| 404 | ไม่มี slug ดังกล่าว อาจไม่เคยมีอยู่ หรือการจองถูกลืม |
| 410 | ที่อยู่หมดอายุก่อนที่ข้อความจะมาถึง |
| 409 | คุณพยายามเปลี่ยนภาษาหลังจากที่ข้อความมาถึงแล้ว |
| 429 | ถึงขีดจำกัดการทดสอบฟรีสำหรับที่อยู่ของคุณ ขณะนี้บริการนี้ไม่มีขีดจำกัดต่อบุคคล หากมีการกำหนดในภายหลัง เนื้อหาการตอบกลับจะระบุว่าเมื่อใดขีดจำกัดจะรีเซ็ต |
สี่สิ่งที่ควรรู้
หนึ่งข้อความต่อหนึ่งที่อยู่
ข้อความที่สองจะถูกปฏิเสธ รายงานก่อนหน้าของคุณยังคงอยู่ครบถ้วน ซึ่งเป็นจุดประสงค์ของข้อจำกัดนี้
ใช้ภายในหนึ่งชั่วโมง
ที่อยู่จะหมดอายุ แต่รายงานจะไม่หมดอายุ ลิงก์รายงานจะใช้ได้ถาวร ดังนั้นลิงก์ที่วางไว้ในทิกเก็ตจะยังคงใช้งานได้
ส่งจากแพลตฟอร์ม
การทดสอบแคมเปญจากบัญชีส่วนตัวเป็นการวัดบัญชีนั้น เกือบทุกอย่างในส่วนการยืนยันตัวตนเกี่ยวข้องกับโครงสร้างพื้นฐานที่ใช้ส่ง ไม่ใช่ข้อความ
ทดสอบอีกครั้งหลังแก้ไข
ผลที่คาดว่าจะดีขึ้นจะคำนวณจากการแก้ไขทีละรายการ และไม่สามารถนำมารวมกันได้ รายงานฉบับที่สองคือตัวเลขที่ตรงกับความเป็นจริง
สำหรับระบบอัตโนมัติ
- /api/openapi.json คำอธิบาย OpenAPI ซึ่งสร้างจากโค้ดเดียวกับที่ให้บริการ API
- /llms.txt, /llms-full.txt แผนผังสั้นๆ ของไซต์นี้สำหรับโมเดลภาษา ตามรูปแบบ llms.txt และเวอร์ชันที่ยาวกว่าซึ่งรวมกระบวนการทั้งหมดและฟิลด์รายงานไว้ในไฟล์เดียว
- /mcp เซิร์ฟเวอร์ MCP ที่มีความสามารถเดียวกันและรองรับการรอแบบบล็อก ซึ่งดีกว่าการทำ polling จากภายในโมเดล
- For agents หน้าสำหรับเอเจนต์: ควรใช้สิ่งนี้เมื่อใด วิธีแยกแยะการตรวจสอบที่ถูกข้ามออกจากการตรวจสอบที่ผ่าน และผลการตรวจใดเป็นระเบียน DNS ที่บุคคลต้องแก้ไข ไม่ใช่ข้อความที่เอเจนต์แก้ไขได้
ลองทำด้วยตนเองก่อนหนึ่งครั้ง
ใช้เวลาประมาณหนึ่งนาทีและแสดงให้คุณเห็นอย่างชัดเจนว่า JSON อธิบายอะไร