Batch Validate Emails
Validate multiple email addresses in a single API request with parallel processing. Perfect for bulk imports, list cleaning, and high-volume validation workflows.
https://api.nofakemails.com/v1/emailsValidates multiple email addresses in a single batch
Request
Send a JSON object containing an array of email addresses. Authentication is required via the X-API-Key header or Authorization: Bearer token.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
emails | string[] | Yes | Array of email addresses to validate (max 64) |
Example Request Body
{
"emails": [
"user1@example.com",
"user2@gmail.com",
"test@tempmail.com"
]
}Code Examples
curl -X POST "https://api.nofakemails.com/v1/emails" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"emails": ["user1@example.com", "user2@gmail.com", "test@tempmail.com"]}'Response
The API returns a JSON object containing batch summary statistics and per-email validation results.
Success Response (200 OK)
{
"success": true,
"partial": false,
"total": 3,
"valid_count": 2,
"invalid_count": 0,
"error_count": 1,
"usage_points": 3,
"processing_time_ms": 245,
"results": [
{
"email": "user1@example.com",
"status": "success",
"result": {
"email": "user1@example.com",
"valid": true,
"normalized": "user1@example.com",
"local_part": "user1",
"alias": false,
"ascii": true,
"role": null,
"domain": "example.com",
"mx": true,
"disposable": false,
"public": false,
"relay": false,
"typo": false,
"typo_suggestion": null
},
"error": null
},
{
"email": "user2@gmail.com",
"status": "success",
"result": {
"email": "user2@gmail.com",
"valid": true,
"normalized": "user2@gmail.com",
"local_part": "user2",
"alias": false,
"ascii": true,
"role": null,
"domain": "gmail.com",
"mx": true,
"disposable": false,
"public": true,
"relay": false,
"typo": false,
"typo_suggestion": null
},
"error": null
},
{
"email": "test@tempmail.com",
"status": "success",
"result": {
"email": "test@tempmail.com",
"valid": true,
"normalized": "test@tempmail.com",
"local_part": "test",
"alias": false,
"ascii": true,
"role": null,
"domain": "tempmail.com",
"mx": true,
"disposable": true,
"public": false,
"relay": false,
"typo": false,
"typo_suggestion": null
},
"error": null
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the batch request was successful |
partial | boolean | Whether results are partial due to timeout or cancellation |
total | integer | Total number of unique emails processed |
valid_count | integer | Number of emails with valid format |
invalid_count | integer | Number of emails with invalid format |
error_count | integer | Number of emails that encountered errors during validation |
usage_points | integer | Number of usage points consumed (unique emails only) |
processing_time_ms | integer | Total processing time in milliseconds |
results | array | Per-email validation results (see below) |
Per-Email Result Fields
| Field | Type | Description |
|---|---|---|
email | string | The email address that was validated |
status | string | "success" or "error" |
result | object | null | Validation result when status is "success" (see Validate Email for field details) |
error | object | null | Error details when status is "error" (contains code and message) |
Error Responses
400 Bad Request - Empty Batch
Returned when the emails array is empty or missing.
{
"success": false,
"error": {
"code": "EMPTY_BATCH",
"message": "Batch must contain at least one email address"
}
}400 Bad Request - Batch Size Exceeded
Returned when the batch contains more than 64 unique emails.
{
"success": false,
"error": {
"code": "BATCH_SIZE_EXCEEDED",
"message": "Batch size 100 exceeds maximum allowed (64)",
"max_allowed": 64,
"received": 100
}
}401 Unauthorized
Returned when the API key is missing or invalid.
{
"status": 401,
"error": "Invalid API key",
"code": "INVALID_API_KEY"
}402 Payment Required - Insufficient Usage
Returned when you don't have enough usage points for the batch.
{
"success": false,
"error": {
"code": "INSUFFICIENT_USAGE",
"message": "Insufficient usage points for batch validation",
"required": 50,
"remaining": 10
}
}429 Too Many Requests
Returned when you exceed your rate limit.
{
"status": 429,
"title": "Too Many Requests",
"detail": "You have exceeded the rate limit. Please try again in 1 seconds."
}500 Internal Server Error
Returned when an unexpected error occurs during batch validation.
{
"status": 500,
"error": "An error occurred during batch validation",
"code": "INTERNAL_ERROR"
}503 Service Unavailable
Returned when the request was cancelled or the service is temporarily unavailable.
{
"status": 503,
"error": "Request was cancelled",
"code": "REQUEST_CANCELLED"
}