Skip to content

An email verification API that tells you why

Send an address, get back a category, a plain reason and a typo suggestion. One endpoint for real time, two for lists.

Show me
simplecold.com / api / v1 / api-validation / single
curl "https://simplecold.com/api/v1/api-validation/[email protected]" \
  -H "Authorization: Bearer <key>"
200 OK · example response
{
  "email": "[email protected]",
  "status": "possible_typo",
  "category": "undeliverable",
  "statusMessage": "Possible typo. Did you mean [email protected]?",
  "failType": "permanent",
  "suggestion": "[email protected]"
}
  • Six checks on every address
  • A plain reason with every result
  • Slow servers never cost a second credit
  • 200 free credits, no card

For developers

Three endpoints for every volume

Authenticate with your API key as a Bearer token. Every response is JSON.

GET /single

Real-time checks

One address, answered in seconds. Built for sign-up forms and lead capture.

Docs
POST /batch

Small lists

Send a list in one request. Slow servers come back as processing and finish on their own.

Docs
POST /bulk

Big files

Upload a CSV, check the job's status and download the results when it finishes.

Docs

Response

What every result contains

The same fields for single and batch results. Results sit inside the payload of the response. Bulk downloads show them as readable columns such as Result, Reason and Reason code.

FieldExampleWhat it means
email"[email protected]"The address you sent.
domain"gmial.com"The domain part of the address.
category"undeliverable"deliverable, risky or undeliverable, or pending while a slow server is still being checked. Build your logic on this.
status"possible_typo"The reason code, such as mailbox_found, accept_all, role_address, disposable, mailbox_not_found or no_mail_server.
statusMessage"Possible typo. Did you mean [email protected]?"The plain reason, safe to show to people.
failType"permanent"permanent, temporary or none. It follows the reason code: temporary means a later check may give a different answer.
suggestion"[email protected]"The likely fix when we spot a typo in the domain, otherwise null.
mxLocation, siteLocation, siteLanguage"US", "US", "en"Where the mail servers and the website appear to be, and the site's language.

Reason codes

Every reason code maps to one category

Build your logic on category. Show statusMessage to people.

categoryReason codes in statusWhat to do
deliverablemailbox_foundThe mailbox exists. Safe to accept.
riskyaccept_all, role_address, disposable, mailbox_unconfirmed, blocked_by_server, no_responseCatch-all, role, throwaway, or the server wouldn't confirm. Read statusMessage, then decide.
undeliverablemailbox_not_found, mailbox_disabled, rejected, server_error, no_mail_server, invalid_format, possible_typoWill bounce. Show the suggestion if there is one.
pendingprocessingThe server is slow. Ask again with GET /api-validation/single/result. Asking about that address within 30 minutes doesn't use another credit.

A pending result reads: "Still checking this mailbox. Ask again in about a minute; you will not be charged again."

Build against the sandbox first

Test API keys (sc_test_) return a fixed result for each reason code, slow checks to practise polling, simulated 429 and 500 errors, small bulk jobs and test webhooks. Nothing is really checked and no credits are used.

FAQ

API questions

Authentication, speed and limits.

Send your API key as a Bearer token in the Authorization header. Create keys in the dashboard; GET /api-validation/validate checks a key without using credits.

Still have a question? Talk to us.

Check your list before you send it

Start with 200 free credits. Pay per credit after that.