Send one request
Pass the address to /v1/email-validation with your X-API-Key header: a GET in the URL or a POST in the body. No SDK, no OAuth dance, just one authenticated call.
REST Email Verification for Developers
One GET request runs all 9 checks and answers in ~380ms median time. Wire it straight into forms, CRMs, or AI agents instantly.
1,000 free credits on signup, 2,500 with a work email. No card.
Trusted by 500,000+ leading GTM teams
Three moves, no glue code. Send the address, let the nine-check engine run, and read a structured verdict your code can branch on.
Pass the address to /v1/email-validation with your X-API-Key header: a GET in the URL or a POST in the body. No SDK, no OAuth dance, just one authenticated call.
Syntax, DNS and MX, a live SMTP handshake, catch-all and disposable detection, role and domain-age signals, and SPF/DKIM/DMARC all fire at once, answering in ~380ms median.
One structured object comes back: reachable for the one-word answer, score for catch-all confidence, and every per-check field so your code can branch on the exact reason.
It turns list hygiene from a monthly chore into a property of your system: every address checked the moment it enters, in about 380 ms.
An email verification API moves list hygiene from a monthly chore to a property of your system: every address gets checked the moment it enters, at the signup form, the lead-capture webhook, or the CRM import. What a real-time API catches that regex cannot is what happens after syntax — a mailbox deactivated last quarter, a disposable domain spun up this morning, or a catch-all server that accepts everything and bounces it later, where 20 to 40% of B2B lists fail.
No SDK to install and no OAuth dance. Just a key, a plain GET request, and a JSON object your code can branch on in one line — no libraries, no ceremony.
/v1/email-validation/:email1curl -X GET "https://api.verifox.ai/v1/email-validation/[email protected]" \2 -H "X-API-Key: vfx_your_api_key"1{2 "email": "[email protected]",3 "domain": "example.com",4 "isValid": true,5 "reachable": "safe",6 "syntax": true,7 "smtp": {8 "hostExists": true,9 "fullInbox": false,10 "catchAll": false,11 "deliverable": true,12 "disabled": false13 },14 "mx": {15 "records": ["gmail-smtp-in.l.google.com."],16 "smtpProvider": "Google",17 "domainAgeDays": 11196,18 "domainCreated": "1995-08-13",19 "hasSPF": true,20 "hasDMARC": true,21 "hasDKIM": false22 },23 "isFree": false,24 "isRole": false,25 "isDisposable": false,26 "hasGravatar": true,27 "suggestion": null,28 "verifiedAt": "2026-03-31T10:30:00Z",29 "score": 9230}/v1/email-validation/bulk1curl -X POST "https://api.verifox.ai/v1/email-validation/bulk" \2 -H "X-API-Key: vfx_your_api_key" \3 -H "Content-Type: application/json" \4 -d '{"input": ["[email protected]", "[email protected]", "bad@invalid"]}'1{2 "job_id": "69d78b9e37e519a86c186261",3 "total_records": 1000,4 "processed_records": 420,5 "status": "processing",6 "progress": 42,7 "summary": {8 "total_safe": 200,9 "total_risky": 50,10 "total_invalid": 150,11 "total_unknown": 2012 }13}Every check maps to a field: syntax for format, mx for the domain and its SPF/DKIM/DMARC posture plus domainAgeDays, smtp for the live handshake and catch-all flag, and isDisposable / isRole for the address class. score carries the AI confidence on catch-alls.
Two ways to verify a single address, and a three-call bulk flow for lists. That is the entire surface area you need to learn.
/v1/email-validation/:emailVerify one address in the URL. Full 9-check verdict, 1 credit.
/v1/email-validationSame verdict via JSON body, for callers that keep addresses out of URLs and logs.
/v1/email-validation/bulkStart a bulk job from an array or an uploaded CSV. Up to 100,000 emails per job.
/v1/email-validation/bulk/:jobId/progressPoll a running job: processed count, percent done, and a safe/risky/invalid summary.
/v1/email-validation/bulk/:jobId/resultsFetch completed results with cursor pagination, 50 rows per page by default.
Request and response schemas for every route, parameter by parameter, live in the email validation API reference.
Emails sent to the API are processed in memory and discarded, never stored, logged, or sold. SOC 2 Type II attested, with 2.1B+ emails verified on the platform to date.

Independently audited to the SOC 2 Type II standard.

Built for the EU with full GDPR data-subject rights.

California opt-out, do-not-sell, plus DSAR handling.

Information security held to the ISO 27001 standard.

AI governance aligned to the new ISO 42001 standard.
An investigation into the money leaking out of your list - and the nine checks that decide whether your email is read, or never arrives at all.

57 pages, free PDF, no signup
Common questions
Auth, rate limits, the response shape, bulk jobs, and what happens to the addresses you send us. Real numbers, including the ones that are limits.
One header: X-API-Key: vfx_your_api_key. Create a free account, generate a key in the dashboard, and every endpoint accepts it. Keys carry scopes, so you can mint a verify-only key for a service that should never touch anything else.
The full auth section, including key rotation and the read-only scope, lives in the API reference.
Nine things, in parallel: RFC 5321/5322 syntax, domain existence and MX records, a live SMTP handshake with a mailbox ping, disposable-domain match, role-address detection, catch-all detection, AI-confidence scoring on catch-alls, domain age, and SPF/DKIM/DMARC authentication.
Every one of those surfaces as a field in the response, so your code can branch on the exact failure. The methodology behind each check is on the email verification service page.
Median single-verify latency is around 380 ms, and under 50 ms when the result is cached. Bulk jobs process roughly 10,000 emails per minute on the standard tier.
A real SMTP handshake takes time; anything that claims instant mailbox checks is skipping the mailbox. SLA is 99.9% on Starter and 99.99% on an annual Volume contract.
60 requests per minute on the single-verify endpoints. Past that you get a 429 and should back off before retrying. We publish the number because you will hit it if you loop a list through the single endpoint.
That is what the bulk endpoint is for: one POST covers up to 100,000 addresses and the rate limit stops mattering. Details in the API docs.
Yes. Signing up credits your account with 1,000 verifications, or 2,500 if your signup email is a work address. No card. Each single verify costs 1 credit, and credits never expire.
Want to test the engine before writing any code? The free email checker runs the same engine in the browser, 4 checks a day without an account.
POST your list (a JSON array or an uploaded CSV referenced by s3_url) to /v1/email-validation/bulk and you get a job ID back. Poll the progress endpoint for a live safe/risky/invalid summary, then page through results when the status hits completed.
Honest note: results are pull-based today. There is no webhook on bulk jobs, so build a poller. For a no-code path, the multiple email checker covers the same flow in the browser.
Catch-all servers accept every address during the handshake, which is why 20 to 40% of B2B lists fail there with most verifiers. We flag the domain via smtp.catchAll, then run AI-confidence scoring so the score field still separates likely-real from likely-fake.
You decide the threshold per use case. See the catch-all email checker for how the scoring behaves on real domains.
No. Addresses are processed in memory and discarded when the verification completes. Nothing is logged, retained, or sold, which matters when the addresses you verify belong to your users.
Verifox is SOC 2 Type II compliant, and the privacy policy spells out exactly what is touched and what is not, byte by byte.
reachable is the verdict: safe, risky, invalid, or unknown. isValid is the boolean rollup, and score (0 to 100) is the confidence grade that does the heavy lifting on catch-alls.
Most integrations gate on reachable and only read the nested smtp and mx objects when they need the why. Field-by-field docs are in the API reference.
Yes, two ways. Any agent that can make HTTP calls can hit the REST endpoints directly. Or skip the glue code: the email verification MCP server exposes this same engine as native tools for Claude, Cursor, and any MCP client.
If your agent also needs to discover addresses, not just verify them, pair this API with the email finder API or the email finder tool.