Async create-then-read flow.
POST creates a test and hands back a unique inbox address. Send your real email there from your existing infrastructure, then GET the result. No payload limits, no MIME shimming.
Create a spam-check via REST, send your email to the inbox address we return, then read back a 0–100 deliverability score with sender forensics, per-check breakdown, screenshots, and AI heatmaps as JSON.
POST creates a test and hands back a unique inbox address. Send your real email there from your existing infrastructure, then GET the result. No payload limits, no MIME shimming.
Every completed test returns the score, sender host, sender IP, message-ID, and a results[] array with SPF/DKIM/DMARC and content-level checks. One read covers the whole verdict.
Each spam-check carries two sub-resources: /screenshots returns desktop/tablet/mobile renders, /heatmap returns AI-generated focus + attention maps for the same email.
Past spam-checks stay on file. GET /spam-check?page=N&per_page=15 returns the paginated list with id, status, score, timestamps, and the hosted report_url. Embed historical results in your own dashboard without re-running the test.
A 0–100 deliverability score, the per-check breakdown that drives it, and visual + AI extras for QA pipelines.
The score field rolls every signal (authentication, content, blocklists, headers) into one number a CI step can branch on. 80+ is healthy, 50–70 is risky, sub-50 is likely landing in spam.
Pair with report_url if your humans need the full visual breakdown; both fields land in the same response.
The results[] array enumerates every check the engine ran: SPF, DKIM, DMARC, BIMI, spam-word density, link reputation, image-to-text ratio, and more. Each entry has a stable id you can map to your own dashboard.
No separate endpoint to pull check-by-check verdicts. One GET, the whole story.
GET /spam-check/{id}/screenshots returns CDN URLs for desktop, tablet, and mobile renders of your email. Drop them into your CI artifacts or your sender dashboard with no further processing.
GET /spam-check/{id}/heatmap returns AI-generated focus and attention heatmaps across the same three devices, so you can see exactly where readers will look before you ship the next send.
The spam-check API is asynchronous: you create a test, send your email to the inbox address we return, then read the verdict.
POST /ext/v2/spam-check with your bearer token. The 201 response hands back a test id and a unique inbox_address.
From your transactional pipeline, marketing platform, or a CI step. The message routes through our spam-check engine, which holds it for analysis.
GET /ext/v2/spam-check/{id} returns the score, sender forensics, message-ID, and the results[] array once status flips to "completed". Poll on a back-off or wire it to a job worker.
/spam-check/{id}/screenshots for the three device renders. /spam-check/{id}/heatmap for AI focus + attention maps. Both share the same test id, so there is no extra credit accounting in your code.
Integration, billing, rate limits, and what the spam-check endpoint returns.
POST /ext/v2/spam-check returns an inbox_address; your sending platform delivers the real email to that address; then GET /ext/v2/spam-check/{id} returns the verdict once status === "completed". Most checks finish in a few seconds, so back off with exponential delay or use a job worker.GET /ext/v2/status returns your email, subscription name, and the limits map (spam_check, inbox_placement, screenshots, heatmaps, has_history, has_ai_assistant). Useful for showing usage in your own admin UI.Authorization: Bearer YOUR_API_TOKEN header.API access is included with the White Label plan. Pricing on the public page, custom limits over chat.
See pricing →