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 to 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 and /heatmap returns AI-generated focus + attention maps for the same email. Pass the same test id to POST /client-previews to render the email in 50+ real clients and devices.
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 to 100 deliverability score, the per-check breakdown that drives it, and visual + AI extras for QA pipelines.
The score field is an integer from 0 to 100 that rolls every signal (authentication, content, blocklists, headers) into one number a CI step can branch on. Unspam reports read 90 to 100 as excellent, 70 to 89 as solid, 50 to 69 as at risk and 0 to 49 as high risk, and they count a failed SPF, DKIM or DMARC check as high risk whatever the number says, so branch on results[] too.
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 image 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, and POST /client-previews with the same test id for the email in 50+ real clients (see the email preview API). Each draws on its own allowance: screenshots and the heatmap spend one unit the first time you request them, and each preview request spends one device preview, whatever the number of devices. Requesting the heatmap before the screenshots also spends a screenshot unit, because the heatmap is drawn on the desktop screenshot.
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 Custom plan, bought online from a $5 monthly minimum. Build it into your own product and resell it under your own brand.
See pricing