Quickstart

First verified address in five minutes

No SDK to install, no sandbox to provision, no sales call. Prove you control an email address, copy a key, and POST.

What you need first

  • An email address you can receive mail at. Signing in and signing up are the same act — there is no separate registration step and no password.
  • Something that can make an HTTPS POST. curl is enough. Everything below is a plain request with a bearer token.
  • Nothing else. You do not bring your own provider accounts or keys — the provider pool runs on Sortance contracts.

1. Get a key

Go to sign in and enter your address. You will get a link by email; opening it signs you in and lands you on the dashboard with an API key already connected to that browser.

Where the key lives

Sortance stores only the SHA-256 of a key, never the key itself, so it can check one you hand it but can never look one up or show it to you again. Copy the plaintext when it is displayed. If you lose it, create another.

2. Make the call

export SORTANCE_KEY=sk_live_...

curl -X POST https://api.sortance.com/v1/verify \
  -H "Authorization: Bearer $SORTANCE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"mia@acme.com"}'

3. Read the answer

{
  "email": "mia@acme.com",
  "verdict": "valid",
  "bounce_probability": 0.012,
  "confidence_interval": [0.004, 0.031],
  "calibration": "fitted",
  "recommendation": "send",
  "actor_class": "human_mailbox",
  "mailbox_type": "corporate",
  "esp": "google_workspace",
  "email_type": "business",
  "providers": {
    "debounce": { "verdict": "valid", "ms": 180, "cost": 0.00045 }
  },
  "disagreement": 0.0,
  "cost_usd": 0.00045,
  "latency_ms": 41,
  "trace_id": "vr_..."
}

Branch on bounce_probability, not on verdict. The verdict is a compatibility shim so you can drop Sortance in where a single verifier used to be; it is derived from the probability at the very end and throws away the interval that tells you how much to trust it.

Read calibration before you trust the number

"calibration": "prior" means the probability came from a seeded benchmark table, not from your observed bounces — the honest answer on day one. It becomes "fitted" once a feature bucket has enough real outcomes behind it, which only happens if you report them.

4. Close the loop

This is the step everyone skips and the one that makes the numbers yours. When a send actually bounces, tell Sortance:

curl -X POST https://api.sortance.com/v1/outcome \
  -H "Authorization: Bearer $SORTANCE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trace_id":"vr_...","outcome":"hard_bounce","smtp_code":"550 5.1.1"}'

outcome is one of delivered, hard_bounce, soft_bounce, complaint or unknown. Reports are queued and folded into your calibration bins by a nightly job.

What you get by default

  • 10,000 verifications a month, metered across every key you hold rather than per key.
  • Rate limits and the fail-open contract are covered in going to production. Read that before you point real traffic at this.