Verifyre

Verification API

One request, every signal as JSON.

A REST API that returns status, reason, score, MX records, provider, catch-all and did-you-mean for any address. Bulk jobs with webhooks, 120 requests a minute by default, and copy-paste snippets for eight languages.

Plain JSON over HTTPS

GET /v1/verify?email= returns one object. No SDK required, though snippets exist for every common stack.

Bulk endpoints

POST a list of up to 50,000 addresses as a job, poll it or receive a webhook when it completes, then download segments.

Signed webhooks

job.completed events are signed with your webhook secret so you can trust the payload without a round trip.

Hashed keys

API keys are shown once and stored as SHA-256 hashes. Rotate or revoke them from the dashboard at any time.

Generous limits

120 requests a minute per key by default, raised on request. Bulk jobs do not count against the per-minute limit.

Documented reason codes

Every reason string is listed with its meaning and the verdict it maps to, so your code can branch on it safely.

The response

Everything the chamber shows, as fields.

The same object powers the dashboard, so what you integrate against is what the engine actually computed.

  • status and reasondeliverable, undeliverable, risky or unknown, plus a reason such as mailbox_not_found, catch_all or greylisted.
  • score 0 to 100Set your own cut-off. Many customers accept 80 and above at sign-up and queue the rest for review.
  • checks, mx, provider, didYouMeanBooleans for syntax, domain, MX, SMTP, mailbox, catch-all, disposable, free, role, SPF and DMARC, the MX list, the provider name and a suggested fix.
GET /api/v1/verify?email=sara.khan@lumenretail.com200
{
  "email": "sara.khan@lumenretail.com",
  "status": "deliverable",
  "reason": "accepted_email",
  "score": 96,
  "checks": {
    "syntax": true, "domain": true, "mx": true,
    "smtp": true, "mailbox": true, "catchAll": false,
    "disposable": false, "free": false, "role": false,
    "spf": true, "dmarc": true
  },
  "mx": [{ "exchange": "aspmx.l.google.com", "priority": 1 }],
  "provider": "Google Workspace",
  "didYouMean": null,
  "ms": 1142
}

How it works

From key to first verified address in five minutes.

Create a key in the dashboard, make one request, read the status. Bulk and webhooks come when you need them.

  1. 01

    Create an API key

    Dashboard, API keys, New key. Copy it once; only its hash is stored.

  2. 02

    Verify one address

    GET https://verifyre.co/api/v1/verify?email=name@example.com with Authorization: Bearer <key>. The response arrives in about a second.

  3. 03

    Branch on status and score

    Accept deliverable, hold risky for review, reject undeliverable. Use didYouMean to offer a correction on your form.

  4. 04

    Submit a bulk job

    POST /api/v1/jobs with an array of addresses and an optional callbackUrl. Poll the job or wait for the signed webhook.

  5. 05

    Download the segments

    GET /api/v1/jobs/{id}/results?segment=deliverable returns CSV or JSON with your extra columns preserved.

120requests per minute
8language snippets
99.9%API uptime target
50Kaddresses per bulk job

FAQ

Email verification API, explained

Visit the help centre
Is there a sandbox or test mode?
Every new account has 100 free credits, which is enough to integrate and test against real addresses. Cached results are free, so repeated calls for the same address during development do not use credits.
How do I handle the unknown status?
Treat unknown as a temporary state. Greylisted addresses succeed on a re-check a few hours later; provider-blocked ones (for example Yahoo) will stay unknown, and the reason field tells you which. Most sign-up flows accept unknown with a lower score and verify again later in bulk.
Are there client libraries?
The API is plain JSON, so any HTTP client works. The developers page has copy-paste examples for cURL, JavaScript, Python, PHP, Ruby, Go, Java and C#, plus a Postman collection.
What are the limits for bulk jobs?
Up to 50,000 addresses per job via the API, unlimited jobs, and jobs do not count against the per-minute rate limit. Larger lists are best uploaded as files in the dashboard, which accepts 500,000 rows.
How are webhooks secured?
Each webhook has its own secret. Every delivery carries an HMAC-SHA256 signature over the body in a header, which you verify before trusting the payload. Deliveries are retried with backoff.

Read the docs, then ship.

Endpoints, reason codes, SDK snippets and a Postman collection on one page.

API documentation See pricing