Verify a single address
POST /api/v1/verify submits one email address for validation.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | yes | Address to validate |
timeout |
integer | no | Seconds to wait for a result (3–60; default 30) |
callback_url |
string | no | HTTPS URL to receive the result as a webhook |
Synchronous mode (no callback_url)
The request blocks until validation completes or the timeout elapses.
POST /api/v1/verify
X-Api-Key: ev_your_key
Content-Type: application/json
{ "email": "alice@example.com", "timeout": 15 }
Completes within timeout — 200 OK:
{
"email": "alice@example.com",
"status": "valid",
"sub_status": "",
"free_email": false,
"did_you_mean": null,
"account": "alice",
"domain": "example.com",
"details": {
"role": false,
"disposable": false,
"catch_all": false,
"mx_found": true,
"mx_record": "aspmx.l.google.com",
"smtp_provider": "Google",
"smtp_code": 250
},
"credits_remaining": 4819,
"processed_at": "2025-06-10T14:02:11.432Z"
}
Exceeds timeout — 202 Accepted:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "pending",
"sub_status": "timeout_exceeded",
"result_url": "/api/v1/verify/3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Polling for results
When you receive a 202 with a result_url, poll GET /api/v1/verify/{id} until the
result is ready.
GET /api/v1/verify/3fa85f64-5717-4562-b3fc-2c963f66afa6
X-Api-Key: ev_your_key
Still processing — 200 OK:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "pending"
}
Completed — 200 OK:
{
"email": "alice@example.com",
"status": "valid",
...
}
Asynchronous mode (with callback_url)
The request returns immediately with 202 Accepted. When validation completes, the full
result is POSTed to your URL as a signed webhook.
POST /api/v1/verify
X-Api-Key: ev_your_key
Content-Type: application/json
{
"email": "alice@example.com",
"callback_url": "https://yourapp.example.com/hooks/email"
}
202 Accepted:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "pending",
"callback_secret": "sv_a3b4c5..."
}
Store callback_secret — it is used to verify webhook signatures. See
Webhooks.
Status codes
| Code | Meaning |
|---|---|
200 |
Validation completed synchronously |
202 |
Accepted — async callback mode or sync timeout exceeded |
400 |
Invalid email format or bad callback_url |
401 |
Missing or invalid API key |
402 |
Insufficient credits |
429 |
Rate limit exceeded |