Skip to content

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.

Key fields in the /v1/verify response
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/verify Verify one address in real time. 1 credit, unknowns free.
  • POST /v1/verify/bulk Submit a JSON list of up to 100,000 emails as one job.
  • POST /v1/verify/bulk/upload Upload a CSV, TSV, TXT or XLSX file of up to 50 MB, or pass a source URL.
  • POST /v1/verify/bulk/{id}/confirm Start a previewed upload once the column mapping looks right.
  • GET /v1/jobs/{id} Job status and summary counts.
  • GET /v1/jobs/{id}/progress Live progress with counts by status.
  • GET /v1/jobs/{id}/results Paginated per-address results.
  • GET /v1/jobs/{id}/download CSV or JSON export, filtered by outcome, with your original columns.
  • GET /v1/credits Your current credit balance and usage.
  • POST /v1/webhooks Subscribe 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/sdk Node.js docs
  • Python

    rocketverifier

    pip install rocketverifier Python docs
  • CLI

    @rocketverifier/cli

    npm install -g @rocketverifier/cli CLI docs
  • MCP server

    @rocketverifier/mcp

    npx -y @rocketverifier/mcp MCP 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.

Read about authentication
  • 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.

Explore RocketShield

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