Skip to main content

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

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:

  1. Webhooks (Recommended): Configure a webhook in your dashboard. We will POST the result to your server immediately when validation completes.
  2. 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": "..."
}