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.

POSThttps://api.nofakemails.com/v1/emails

Validates 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

FieldTypeRequiredDescription
emailsstring[]YesArray 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

FieldTypeDescription
successbooleanWhether the batch request was successful
partialbooleanWhether results are partial due to timeout or cancellation
totalintegerTotal number of unique emails processed
valid_countintegerNumber of emails with valid format
invalid_countintegerNumber of emails with invalid format
error_countintegerNumber of emails that encountered errors during validation
usage_pointsintegerNumber of usage points consumed (unique emails only)
processing_time_msintegerTotal processing time in milliseconds
resultsarrayPer-email validation results (see below)

Per-Email Result Fields

FieldTypeDescription
emailstringThe email address that was validated
statusstring"success" or "error"
resultobject | nullValidation result when status is "success" (see Validate Email for field details)
errorobject | nullError 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"
}

Next Steps