API Docs
Real-time email verification API: one email address, one request, one response
The core is a realtime single check: POST one email address to /api/v1/check with service_type=email. The registration status comes back in that same response — no polling, no callbacks. The same API key can also submit several email addresses at once for a synchronous response.
/api/v1/checkQuickstart
- 1.Create an API key in Settings.
- 2.Call GET /api/v1/balance to check the current balance.
- 3.POST one email address to /api/v1/check, or up to 100 email addresses to /api/v1/batch-check.
- 4.Read data.registered in the synchronous response.
Authentication
Use an API key created in Settings and send it with every request.
X-API-Key: sk_your_api_keyProduct and result fields
emailEmail Registration Check
Confirm whether an email address is registered with its mailbox provider — works on any domain, from Gmail to a company's own.
Single check
curl -X POST "https://emailcheckpro.com/api/v1/check" \
-H "X-API-Key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "service_type": "email", "identifier": "name@gmail.com" }'{
"code": 0,
"msg": "ok",
"data": {
"service_type": "email",
"identifier": "name@gmail.com",
"registered": true,
"provider": "gmail"
}
}{
"code": 0,
"msg": "ok",
"data": {
"service_type": "email",
"identifier": "unknown@gmail.com",
"registered": false,
"provider": ""
}
}Multi check
Each email address in the payload is billed independently. Maximum 100 email addresses per request. Only successfully checked email addresses consume balance. If your balance cannot cover the full batch, the request is rejected before processing.
Submit up to 100 email addresses in one request; results are returned in the same order.
curl -X POST "https://emailcheckpro.com/api/v1/batch-check" \
-H "X-API-Key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "service_type": "email", "identifiers": ["name@gmail.com", "unknown@gmail.com"] }'{
"code": 0,
"msg": "ok",
"data": {
"service_type": "email",
"total": 2,
"succeeded": 1,
"failed": 1,
"results": [
{
"identifier": "name@gmail.com",
"exists": true,
"registered": true,
"provider": "gmail"
},
{
"identifier": "unknown@gmail.com",
"exists": false
}
]
}
}Concurrency, timeouts, and retry behavior
Email registration checks are synchronous. Use the returned code to decide whether to accept the result or retry.
- 5 requests in flight per userSingle and multi checks share this limit, and a multi request counts as one request no matter how many email addresses it carries. On top of that, only one multi check per account runs at a time; a second one is rejected until the first finishes. Hitting either limit returns code 42901 immediately with no charge, plus a Retry-After header — resubmit once an in-flight request finishes.
- 60s single, 300s multiExceeding the time limit returns code 50400 with no charge. A multi check that times out fails as a whole — no partial results, and the full amount is refunded.
- A multi check takes up to 100 email addressesResults preserve submission order and length. One multi check per account runs at a time; submit the next batch once the previous one has returned.
Error codes
Asynchronous bulk tasks
Upload a file of email addresses and get a task id straight away. Then check the task by that id; once it succeeds, the response carries the result file download link. Occasionally the link is not ready yet — check again shortly. Those two actions are the whole API. It is built for large lists; for 100 email addresses or fewer, the multi endpoint returns results in a single request. Bulk email tasks take no country: the file holds one email address per line.
email_avatar_batchEmail Bulk Avatar Check1,000–100,000 email addresses per task$0.003 per email address
1. Submit a file
curl -X POST "https://emailcheckpro.com/api/v1/bulk-tasks" \
-H "X-API-Key: sk_your_api_key" \
-F service_type=email_avatar_batch \
-F file=@emails.txt{
"code": 0,
"msg": "ok",
"data": {
"id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
"product": "email_avatar_batch",
"status": "processing",
"total": 1000,
"created_at": "2026-09-08T09:30:00Z"
}
}2. Check the task
curl "https://emailcheckpro.com/api/v1/bulk-tasks/3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13" \
-H "X-API-Key: sk_your_api_key"{
"code": 0,
"msg": "ok",
"data": {
"id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
"product": "email_avatar_batch",
"status": "success",
"total": 1000,
"success_cnt": 990,
"failure_cnt": 10,
"result_url": "https://…/result.zip",
"created_at": "2026-09-08T09:30:00Z"
}
}- One email address per line.Upload a .txt or .csv with one email address per line; country is not part of an email task. The full-address check accepts any domain in one file. The avatar check covers Gmail, Yandex and Mail.ru, and you can mix all three in one file — each address is routed to the right provider. Addresses outside those three are rejected before any charge, and the error says how many.
- No per-email address progress.status is processing, success or failed. Large lists take a while; do not poll more often than once every 30 seconds.
- Billing.The full file is reserved on submit. When the task finishes you are charged only for the email addresses that were actually checked and the rest is refunded. A failed task is refunded in full.
- Result files expire.The download link is generated on demand and points at a time-limited file. Download the result soon after the task finishes.
