Integrate email validation into your application with a simple REST API. Validate single addresses in real time or process entire lists in bulk.
Validate an email address with a single request:
All API requests require a Bearer token in the Authorization header. Generate your API key from the dashboard after signing up.
/v1/validate/{email}
Validates one email address and returns detailed verification results. Typical response time is under 500ms.
email
The email address to validate (e.g. [email protected])
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "[email protected]",
"username": "user",
"domain": "example.com",
"mx_record": "mail.example.com",
"provider": "Other",
"score": 85,
"isv_format": true,
"isv_domain": true,
"isv_deliverable": true,
"isv_nocatchall": true,
"isv_nogeneric": true,
"isv_nodisposable": true,
"isv_nofreeemail": true,
"isv_nouniversity": true,
"result": "deliverable",
"reason": "accepted_email"
},
"code": 0,
"message": "ok"
}
/v1/validate/batch
Submit an array of email addresses for bulk validation. Returns a list ID that you can poll for results.
emails
Array of email addresses to validate
{
"data": {
"list_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"emails_count": 2
},
"code": 0,
"message": "ok"
}
/v1/validate/batch/upload
Upload a CSV or TXT file containing one email per line. Maximum file size is 10 MB.
file
A .csv or .txt file with one email address per line (max 10 MB)
/v1/validate/list/{list_id}
Retrieve the results of a batch validation. Returns 202 while processing is in progress and 200 when complete.
list_id
The list ID returned from the batch submit or upload endpoint
{
"data": [],
"code": 0,
"message": "List is still processing: 45 of 100 emails done"
}
{
"data": [
{
"email": "[email protected]",
"isv_format": true,
"isv_domain": true,
"isv_deliverable": true,
"isv_nocatchall": true,
"isv_nogeneric": true,
"isv_nodisposable": true,
"isv_nofreeemail": true,
"isv_nouniversity": true
}
],
"code": 0,
"message": "ok"
}
| Field | Type | Description |
|---|---|---|
| string | The email address that was validated | |
| username | string | Local part of the email (before @) |
| domain | string | Domain part of the email (after @) |
| mx_record | string|null | Primary MX record for the domain |
| provider | string | Detected email provider (e.g. Google, Microsoft, Other) |
| score | integer | Overall quality score from 0 to 100 |
| isv_format | boolean | Email has valid syntax (RFC compliant) |
| isv_domain | boolean | Domain exists and has valid DNS records |
| isv_deliverable | boolean|null | Mail server accepts email for this address. Null if unable to verify. |
| isv_nocatchall | boolean|null | Domain is not a catch-all (accepts mail for any address) |
| isv_nogeneric | boolean | Not a generic/role address (e.g. info@, support@) |
| isv_nodisposable | boolean | Not a disposable/temporary email address |
| isv_nofreeemail | boolean | Not from a free email provider (e.g. Gmail, Yahoo) |
| isv_nouniversity | boolean | Not from an educational institution domain |
| result | string | Overall result: deliverable, undeliverable, risky, or unknown |
| reason | string | Reason for the result (e.g. accepted_email, rejected_email, invalid_format) |
| HTTP Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 422 | Invalid email format or missing required field |
| 500 | Internal server error during validation |
API requests are rate-limited per account. If you exceed your limit, you will receive a 429 response. Contact us if you need higher limits for your use case.