Email verification API
Email verification API for real-time validation
One REST call tells you whether an address can receive mail, why, and how confident we are. Ship it in an afternoon with official SDKs, signed webhooks and free sandbox keys.
- Typically under half a second
- 99.5% accuracy
- Free sandbox keys
- Unknowns are free
$ curl -X POST https://api.rocketverifier.com/v1/verify \
-H "Authorization: Bearer $RV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "john@example.com"}'
{
"email": "john@example.com",
"status": "deliverable",
"sub_status": "none",
"reason": "accepted_email",
"score": 95,
"domain": {
"name": "example.com",
"acceptAll": "no",
"disposable": "no",
"free": "no"
},
"account": {
"role": "no",
"disabled": "no",
"fullMailbox": "unknown"
},
"dns": {
"type": "MX",
"record": "aspmx.l.google.com"
},
"provider": "google.com",
"authentication_score": 95,
"deliverability_tier": "excellent",
"toxic": "no",
"abuse": "no",
"spam_trap": "no",
"did_you_mean": null,
"catch_all_verdict": null,
"verified_at": "2026-10-15T12:00:00+00:00"
}import RocketVerifier from '@rocketverifier/sdk';
const rv = new RocketVerifier(process.env.RV_API_KEY);
const result = await rv.verify('john@example.com');
console.log(result.status, result.sub_status, result.score);
// deliverable none 95
if (result.did_you_mean) {
// ask the user to confirm the suggested address
}import os
from rocketverifier import RocketVerifier
rv = RocketVerifier(os.environ["RV_API_KEY"])
result = rv.verify("john@example.com")
print(result.status, result.sub_status, result.score)
# deliverable none 95 Real time
Fast enough to run while your user is still typing
Verify at signup, checkout or import without slowing anyone down. When a server needs a live SMTP check, we wait for a real answer instead of guessing.
-
< 0.5s
Typical response
Most addresses are answered in under half a second.
-
1 to 3s
With a live SMTP check
When the mail server has to be asked directly.
-
100,000
Emails per bulk job
Send a JSON list or a file and get a webhook when it is done.
Response
Every result explains itself
The fields you will use most. Each response also includes domain, account, DNS and risk details such as toxic and spam_trap.
| Field | Type | What it tells you |
|---|---|---|
status | string | deliverable, undeliverable, risky or unknown. |
sub_status | string | The precise reason, such as mailbox_not_found, role_based, disposable, catch_all or possible_typo. none when there is nothing to flag. |
score | integer | Confidence from 0 to 100. Set your own threshold for what you send to. |
catch_all_verdict | string | null | For accept-all domains: send_safe, send_with_caution or avoid. null for other domains. |
did_you_mean | string | null | A suggested correction when the address looks like a typo, for example gmial.com to gmail.com. |
provider | string | The mailbox provider behind the domain, such as google.com. |
verified_at | string | ISO 8601 timestamp of the check, so you know how fresh a result is. |
Endpoints
Single checks, bulk jobs and everything in between
Base URL https://api.rocketverifier.com. Authenticate with a Bearer API key from your dashboard.
- POST
/v1/verifyVerify one address in real time. 1 credit, unknowns free. - POST
/v1/verify/bulkSubmit a JSON list of up to 100,000 emails as one job. - POST
/v1/verify/bulk/uploadUpload a CSV, TSV, TXT or XLSX file of up to 50 MB, or pass a source URL. - POST
/v1/verify/bulk/{id}/confirmStart a previewed upload once the column mapping looks right. - GET
/v1/jobs/{id}Job status and summary counts. - GET
/v1/jobs/{id}/progressLive progress with counts by status. - GET
/v1/jobs/{id}/resultsPaginated per-address results. - GET
/v1/jobs/{id}/downloadCSV or JSON export, filtered by outcome, with your original columns. - GET
/v1/creditsYour current credit balance and usage. - POST
/v1/webhooksSubscribe to job, credit, verification and monitor events. - GET
/v1/tools/*Free disposable, MX and domain authentication lookups.
SDKs
Official libraries for the tools you use
Node.js and Python SDKs, a CLI, an MCP server and a REST API. Install one and verify your first address in a few lines.
-
Node.js
@rocketverifier/sdk
npm install @rocketverifier/sdkNode.js docs -
Python
rocketverifier
pip install rocketverifierPython docs -
CLI
@rocketverifier/cli
npm install -g @rocketverifier/cliCLI docs -
MCP server
@rocketverifier/mcp
npx -y @rocketverifier/mcpMCP server docs
Built for production
Webhooks, versioning and a sandbox from day one
Everything you need to run verification in production without surprises.
Signed webhooks
Get notified instead of polling. Every delivery is signed with the X-RocketVerifier-Signature header so you can confirm it came from us.
- job.completed
- job.failed
- credits.low
- credits.depleted
- email.verified
- monitor.alert
POST https://your-app.com/hooks/rocketverifier
X-RocketVerifier-Signature: t=...,v1=...
{ "event": "job.completed", ... } Webhook docs Versioned responses
Pin the response behaviour your code expects with the RocketVerifier-Version header. Upgrade on your schedule, not ours.
$ curl -X POST https://api.rocketverifier.com/v1/verify \
-H "Authorization: Bearer $RV_API_KEY" \
-H "RocketVerifier-Version: 2026-11-01" \
-d '{"email": "john@example.com"}' Versioning in the docs Free sandbox keys
Build and test with rv_test_ keys. Addresses at @sandbox.rocketverifier.com return deterministic results for every status and never spend credits.
# Test keys never spend credits
$ curl -X POST https://api.rocketverifier.com/v1/verify \
-H "Authorization: Bearer rv_test_..." \
-d '{"email": "catchall@sandbox.rocketverifier.com"}' Authentication docs Key controls
API keys you stay in control of
Give every service its own key and decide exactly what it can spend and where it can be used. Keys are shown once and stored securely.
-
Monthly spend caps
Set a credit limit per key so a runaway loop can never drain your balance.
-
Key expiry
Give contractors and short projects keys that switch off on a set date.
-
IP allowlists
Lock a key to your servers. Requests from anywhere else get a 403 ip_not_allowed.
-
Organization keys
Share one pooled credit balance across your team and every service you run.
Verifying signup forms? Skip the backend work.
RocketShield adds the same verification to any web form with one script tag and a public key, so your secret API key never touches the browser.
FAQ
Email verification API, answered
The docs cover every endpoint, error code and rate limit in detail.
What is an email verification API?
An email verification API lets your application check whether an address can receive mail before you store it or send to it. You send one HTTP request with the address and get back a status, a reason and a score. RocketVerifier checks syntax, DNS and MX records, disposable and role addresses, catch-all behaviour and the mailbox itself with a live SMTP handshake.
How fast is the API?
The API typically answers in under half a second, or 1 to 3 seconds when a live SMTP check is needed. For large volumes, use the bulk endpoints with up to 100,000 emails per job and a webhook when results are ready.
How much does each API call cost?
Each verification uses 1 credit on the dashboard, API and MCP server. Unknown results and duplicate addresses in a bulk list are never charged. The disposable, MX and domain authentication lookups are free and do not use credits. Credits are shared across the API, dashboard, RocketShield and integrations.
Can I test the API without spending credits?
Yes. Create a sandbox key (rv_test_...) and verify addresses at @sandbox.rocketverifier.com, such as deliverable@, catchall@ or disposable@. They return realistic, deterministic results and never use credits.
Which languages are supported?
There are official SDKs for Node.js (@rocketverifier/sdk) and Python (rocketverifier), a command-line tool and an MCP server. Any language that can make an HTTPS request can call the REST API directly.
How does API versioning work?
Send the RocketVerifier-Version header to pin the response behaviour your code was built against. Each API key also remembers its version, so existing integrations keep working and you move to a newer version only when you choose to.
Verify your first address in minutes
Create a key, make one request and see the full result. Sandbox keys are free for as long as you build.
100 free credits · No card required · Credits never expire