Email Spam Checker API.

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 /ext/v2/spam-check
curl -X POST https://api.unspam.email/ext/v2/spam-check \
  -H "Authorization: Bearer $UNSPAM_TOKEN"

# response (201)
{
  "id": "2Bl8rzTFN6VV",
  "inbox_address": "test-xyz@check.unspam.email"
}

# now send your email to inbox_address
# from your sending platform.
curl https://api.unspam.email/ext/v2/spam-check/2Bl8rzTFN6VV \
  -H "Authorization: Bearer $UNSPAM_TOKEN"

# response (200)
{
  "id": "2Bl8rzTFN6VV",
  "status": "completed",
  "score": 85,
  "sender": "you@yourdomain.com",
  "sender_ip": "192.0.2.1",
  "results": [
    { "id": "spf", ... },
    { "id": "dkim", ... },
    { "id": "dmarc", ... }
  ],
  "report_url": "https://unspam.email/results/2Bl8rzTFN6VV"
}

Four request types. One API key.

One key covers all four endpoints. Start with POST /spam-check for the score, sender forensics, and per-check breakdown, then reuse the same run to send to the seed list, pull real client previews, or request the attention heatmap.

Spam Tests

POST /spam-checkScore, sender forensics, per-check breakdown. Built for sender platforms and CRM teams.

Inbox Placement

POST /inbox-placementSend to our seed list, get per-mailbox folder (inbox / promotions / spam) + blacklist exposure.

Client Previews

POST /client-previewsYour email rendered in 50+ real clients and devices, light and dark mode. See the email preview API.

Email Heatmaps

GET /spam-check/{id}/heatmapAI-generated focus + attention heatmaps across all three device sizes.

Why teams ship Unspam as their spam-check API.

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.

0 to 100 score plus sender + auth detail.

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.

Screenshots, client previews, and AI heatmaps in-line.

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.

Every test, kept and paginated.

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.

What every spam-check returns.

A 0 to 100 deliverability score, the per-check breakdown that drives it, and visual + AI extras for QA pipelines.

01

A single 0 to 100 score for the deliverability hop.

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.

INBOX
85/100
0: spam 100: clean
02

A per-check breakdown in the same payload.

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.

  • SPF Check spf
  • DKIM Check dkim
  • DMARC Check dmarc
  • Spam words spam_words
  • Link reputation link_rep
  • Image / text ratio img_ratio
03

Screenshots and AI heatmaps on the same test.

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.

desktop
tablet
mobile

How the API works in four steps.

The spam-check API is asynchronous: you create a test, send your email to the inbox address we return, then read the verdict.

  1. 01

    Create a spam-check

    POST /ext/v2/spam-check with your bearer token. The 201 response hands back a test id and a unique inbox_address.

  2. 02

    Send your email to the 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.

  3. 03

    Read the verdict

    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.

  4. 04

    Pull screenshots, previews, and heatmaps (optional)

    /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.

Frequently asked questions about the API.

Integration, billing, rate limits, and what the spam-check endpoint returns.

How do I get API access?
API access is included with the Custom plan, which you buy online: pick the monthly volume of each test on the pricing page, from a $5 minimum, and the rates drop as you grow. You can build it into your own product and resell it under your own brand. For anything else, open a support ticket.
What are the rate limits?
The public limit is 100 requests per minute per IP or per authenticated account. That covers most production traffic. If you need a higher limit, open a support ticket with your expected throughput.
How does the create-then-read flow work?
It is two calls. 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.
Can I check my remaining quota from the API?
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.
How accurate is the spam score?
The score reflects how our engines and seed accounts rate the message. Real-world delivery still depends on sending reputation, list hygiene, and recipient engagement. The API gives you the content and authentication signal, not a guarantee of inbox placement.
Can I call the API from any language?
Yes. The API is REST + JSON over HTTPS. Any HTTP client works (curl, Node, Python, Go, Ruby, PHP, …). No mandatory SDK; auth is a single Authorization: Bearer YOUR_API_TOKEN header.
Is there a sandbox or free trial?
There is no API sandbox. The Free plan runs the same tests in the dashboard, so you can judge the results before you pay, and the Custom plan starts at $5 a month with a 14-day refund, so a real API pilot is cheap to try.
Can I build this into my own product and resell it?
Yes, on the Custom plan. Every spam test comes back as JSON with its score and per-check results, so you can show it in your own interface and resell it to your clients under your own brand.

Ready to wire Unspam into your stack?

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