Async Batch Validation
For validating large lists of emails programmatically, use the async endpoint. This accepts a list of emails and processes them in the background via a message queue.
Endpoint
POST https://api.checkemail.dev/validate/async
Cost: 1 Credit per email in the batch.
Free Alternative
If you don't need programmatic access, use the Bulk Validation tool in your Dashboard. It is free to use (up to 300 emails/10 min) and does not consume API credits.
Request Body
{
"emails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
}
Max batch size: 1,000 emails per request.
Response
{
"message": "Request accepted",
"job_count": 3,
"job_ids": ["102", "103", "104"],
"status_url": "/validate/status/{job_id}",
"requestId": "a1b2c3d4-e5f6-7890-..."
}
Getting Results
There are two ways to get the results of an async job:
- Webhooks (Recommended): Configure a webhook in your dashboard. We will POST the result to your server immediately when validation completes.
- Polling: You can query the status endpoint using the Job ID returned.
Polling Status
Endpoint
GET https://api.checkemail.dev/validate/status/{job_id}
Response (Processing)
{
"id": "102",
"state": "active",
"result": null,
"requestId": "..."
}
Response (Completed)
{
"id": "102",
"state": "completed",
"result": {
"email": "[email protected]",
"validations": {
"syntax": true,
"domain_exists": true,
"mx_records": true,
"is_disposable": false
},
"confidence": {
"confidence_score": 95,
"status": "LIKELY",
"is_role_based": false,
"alias_status": "MAYBE_NOT_ALIAS",
"canonical_email": null,
"equivalent_domains": ["gmail.com", "googlemail.com"]
},
"provider": {
"name": "Gmail"
},
"meta": {
"latency_ms": 142,
"source": "api_async"
}
},
"requestId": "..."
}