For developers
Email verification API for developers who want clean JSON and clear pricing
Add mailbox checks to signup forms, internal tools, and lead pipelines with REST endpoints and predictable credit usage. Verifly keeps the API surface small enough to integrate quickly.
const response = await fetch('https://verifly.email/api/v1/verify?email=user@example.com', {
headers: { Authorization: `Bearer ${process.env.VERIFLY_API_KEY}` }
})
const result = await response.json()Real-time SMTP mailbox checks
Single, batch, and async bulk verification
Disposable, role account, and catch-all detection
Pay-as-you-go credits with no subscription lock-in
Search fit
Built for developer email verification API searches
Use Verifly when you need a simple API, predictable pricing, and clean JSON results before emails hit your product, CRM, or campaign tool.
A small API surface you can integrate in an afternoon
Most of the friction in adding email verification is not the check — it is the SDK you have to learn, the OAuth dance, the webhook subscription, and the dashboard you have to click through to get a key. Verifly deliberately keeps the surface tiny: a Bearer token, a GET for one address, a POST for a batch, and an async endpoint for large jobs. Every response is plain JSON with the same shape, so you parse it once.
Authentication is a single header — Authorization: Bearer vf_your_api_key. You can self-register a key without a sales call, a credit card, or a captcha by hitting /api/v1/autonomous/register, which returns a working key and 100 free credits. That means an agent, a CI job, or a new developer can go from zero to a first verified address in one request.
Credit usage is predictable: one address checked is one credit, credits never expire, and pricing runs from $2 per 1,000 down to $0.60 per 1,000 at volume. No per-seat billing and no plan to outgrow.
From key to first verified email
- POST to /api/v1/autonomous/register to mint a key programmatically (or grab one in the dashboard) — 100 free credits, no card.
- Store the key as an environment variable; never ship it to the browser.
- Call GET /api/v1/verify?email= for a single address, or POST /api/v1/verify/batch with an array for many.
- Branch on the result field: deliverable, undeliverable, or risky. Inspect disposable / role / catch-all flags for finer control.
- For lists over a few thousand, submit to the async bulk endpoint (up to 1,000,000 per job) and poll for completion.
import os, requests
KEY = os.environ['VERIFLY_API_KEY']
H = {'Authorization': f'Bearer {KEY}'}
# one address
r = requests.get('https://verifly.email/api/v1/verify',
params={'email': 'user@example.com'}, headers=H)
print(r.json()['result']) # deliverable | undeliverable | risky
# a batch
r = requests.post('https://verifly.email/api/v1/verify/batch',
json={'emails': ['a@example.com', 'b@example.com']}, headers=H)
for row in r.json()['results']:
print(row['email'], row['result'], row['disposable'], row['role'])FAQ
Frequently asked questions
How do I authenticate?
A single header: Authorization: Bearer vf_your_api_key. There is no OAuth flow to implement — mint a key at /api/v1/autonomous/register or in the dashboard and start calling immediately.
Can I get a key without signing up manually?
Yes. POST to /api/v1/autonomous/register with no card and no captcha to receive a working key and 100 free credits — designed so scripts and agents can self-provision.
What does the JSON response contain?
A result field (deliverable / undeliverable / risky) plus boolean disposable, role, and catch-all flags and SMTP details, so you can branch on more than a single verdict.
Is there an SDK, or just REST?
The API is plain REST with JSON, so it works from any language using a standard HTTP client — the Node and Python examples above use only fetch and requests. For agents there is also an MCP server at verifly.email/mcp.
How do I handle large lists in code?
Use POST /verify/batch for small lists and the async bulk endpoint (jobs up to 1,000,000 addresses) for large ones, polling job status rather than holding a request open.
How is usage billed?
One address checked is one credit. Credits never expire and pricing scales from $2 to $0.60 per 1,000. There is no per-seat or monthly minimum.