Email verification router

A calibrated bounce probability, not another valid/invalid coin flip.

Sortance fans each address out across several verification providers, caches hard, and returns one number you can act on — with its confidence interval, how much the providers disagreed, and who is actually behind the mailbox.

curl -X POST https://api.sortance.dev/v1/check \
-H "Authorization: Bearer $SORTANCE_KEY" \
-d '{"address":"mia@acme.com"}'
The price collapsed

Per-check pricing went from about $25 per 10K in 2019 to $0.00045–$0.01 today.

The accuracy didn’t follow

Microsoft-hosted mailboxes still verify at 51.4% valid against 90.6% on Google Workspace. Catch-all domains are a protocol dead end.

So teams built waterfalls

Sortance is that waterfall — calibrated and cached — as one API call. The check is a commodity. The judgment is the product.

Read the response before you read the pitch.

One POST, one payload. Three of these fields you cannot get from any single provider.

{
"address":"mia@acme.com",
"mx_provider":"google_workspace",
"bounce_probability":0.012,
"confidence_interval":[0.004, 0.031],
"disagreement":0.00,
"actor_class":"human_mailbox",
"actor_confidence":0.94,
"providers":{
"checked":3,
"agreed":3,
"cache_hits":1
},
"verdict":"send",
"latency_ms":41
}
bounce_probability + confidence_interval

Providers hand back valid / invalid / unknown. That is a label, not a probability. We calibrate against observed bounces, so 0.31 means roughly 31 in 100 — and the interval tells you how much to trust that number before you decide.

disagreement

How far apart the pool landed on the same address. Zero means they agreed and one cheap check would have done. High means the address is genuinely ambiguous — a fact no single verifier can report, because it only sees itself.

actor_class

Human mailbox, AI agent mailbox, relay alias, or role account. Deliverability and who is on the other end are different questions, and SMTP only ever answers the first one.

Providers return a label. Sortance returns a distribution, the spread behind it, and what kind of mailbox produced it.

How the router decides

Most traffic never reaches a paid provider. What does reach one reaches several at once.

Local Gatesyntax · MX · knownfree · ~5msCachedomain + actorno re-chargeRouter Policywho to ask, howmany, at onceCalibratorprobability + CIdisagreementPROVIDER POOL · PARALLELDeBounceMyEmailVerifierZeroBounceKickbox35% of traffic ends herehit → return, 0 spendPOST200

Where the remaining error lives

Same protocol, same providers, two very different outcomes depending on who hosts the mailbox.

Google Workspace90.6%
verified valid9.4% not confirmed
Microsoft 36551.4%
verified valid48.6% not confirmed

The gap isn’t a provider being bad at its job. Microsoft-hosted domains largely stopped answering SMTP probes truthfully, and a catch-all domain accepts every address by design — no verifier can resolve it, ours included.

That’s where fan-out pays: on the addresses one provider can’t settle, the spread between four of them is itself information. On Google Workspace mail, a single cheap check is usually enough, and Sortance will tell you so instead of billing you four times for it.

Figures: Microsoft 365 51.4% valid · Google Workspace 90.6% valid.

Priced per 1,000 sends protected. Not per check.

Deliberate: per-check pricing pays us to check more, which is the opposite of what you want. Per send protected pays us to check less — cache harder, gate more locally, fan out only where it changes the answer.

Sends protected / month
250,000 sends
$850.00/ month
$3.40 per 1,000 sends protected
What’s in it
01Every provider in the pool, on our contracts — no separate accounts, no separate keys.
02Local gate and cache included. Traffic they resolve costs you nothing extra.
03Calibrated probability, confidence interval, disagreement and actor class on every response.
04Router policy you can pin: cost-first, accuracy-first, or a latency budget in milliseconds.
05Outcome webhook, replay of any decision, and per-decision provider receipts.

For reference, raw per-check pricing across the pool runs $0.00045–$0.01 per check. We buy at that; you pay for the decision, however many checks it took.

Get an API key

Not another verifier

Three things we deliberately don’t do.

No SMTP of our own

We do not run probe infrastructure or claim a private signal. We buy checks from the providers you already know and are transparent about which ones answered.

No list-cleaning dashboard

There is no upload screen, no hygiene score, no green checkmarks to screenshot. It is an API. Your list stays in your system.

No 99.9% accuracy claim

Catch-all domains cannot be resolved by any verifier, and Microsoft-hosted mail confirms valid about half the time. We report the uncertainty instead of hiding it behind a number.