API documentation

Bulk email verification endpoint

Submit up to 100 addresses and use the task ID to retrieve bulk verification progress and complete results.

Bulk verification uses asynchronous tasks. Submit an array of addresses to receive a task_id, then use that task_id to check progress and retrieve all results when processing completes.

Authentication

Authorization: Bearer YOUR_API_KEY

Step 1: Create a bulk task

POST/api/v1/bulk-email-verification

Request body

emailsRequired
string[]

Array of addresses to verify. Submit between 1 and 100 per task. Duplicate addresses are removed and are not charged twice.

name
string

Optional task name. Maximum length: 25 characters.

Request example

curl --request POST \  --url https://verifyemailaddress.net/api/v1/bulk-email-verification \  --header 'Authorization: Bearer YOUR_API_KEY' \  --header 'Content-Type: application/json' \  --data '{    "name": "July contacts",    "emails": [      "one@example.com",      "two@example.com",      "three@example.com"    ]  }'

Task created

A successfully created task returns HTTP 201. Store the task_id and use it to retrieve progress and results.

{  "status": "success",  "task_id": "0195fbb8-6632-7ac0-b497-a3f4a2c349ec",  "count_submitted": 3,  "count_duplicates_removed": 0,  "count_rejected_emails": 0,  "count_processing": 3}

Step 2: Retrieve progress and results

GET/api/v1/bulk-email-verification/{taskId}

When the task status is waiting or running, query it again after a few seconds. Once status becomes completed, results contains the complete verification result for each address.

curl --request GET \  --url https://verifyemailaddress.net/api/v1/bulk-email-verification/0195fbb8-6632-7ac0-b497-a3f4a2c349ec \  --header 'Authorization: Bearer YOUR_API_KEY'

Processing

{  "task_id": "0195fbb8-6632-7ac0-b497-a3f4a2c349ec",  "name": "API: July contacts",  "status": "running",  "count_total": 3,  "count_checked": 2,  "progress_percentage": 66.67}

Completed

{  "task_id": "0195fbb8-6632-7ac0-b497-a3f4a2c349ec",  "name": "API: July contacts",  "status": "completed",  "count_total": 3,  "count_checked": 3,  "progress_percentage": 100,  "results": {    "one@example.com": {      "email": "one@example.com",      "status": "safe",      "overall_score": 98,      "is_safe_to_send": true,      "is_deliverable": true,      "is_valid_syntax": true,      "mx_accepts_mail": true,      "verification_mode": "power"    },    "two@example.com": {      "email": "two@example.com",      "status": "invalid",      "overall_score": 0,      "is_safe_to_send": false,      "is_deliverable": false,      "is_valid_syntax": true,      "mx_accepts_mail": true,      "verification_mode": "power"    },    "three@example.com": {      "email": "three@example.com",      "status": "catch_all",      "overall_score": 75,      "is_safe_to_send": false,      "is_deliverable": true,      "is_valid_syntax": true,      "mx_accepts_mail": true,      "is_catch_all": true,      "verification_mode": "power"    }  }}

Credit usage

Credits are reserved when the task is created. Credits for duplicates, rejected addresses, unprocessed addresses, and addresses without a conclusive result are returned automatically. Retrieving task progress does not consume additional credits.

Response headers

X-Request-Id
string

Request ID associated with the bulk task.

X-Credits-Used
number

Credits currently charged for the task. After completion and settlement, this reflects any returned credits.

Error responses

{  "status": "error",  "reason": "invalid_batch"}
400 · invalid_batch
POST

emails is missing, empty, exceeds 100 entries, or contains invalid request data.

401 · invalid_api_key
POST / GET

The API key is missing, invalid, or deleted.

403 · subscription_required
POST

The account does not have an active paid plan.

404 · task_not_found
GET

The task does not exist, has expired, or belongs to another account.

429 · insufficient_credits
POST

The account does not have enough credits to create the task.

502 / 503 / 504
POST / GET

Verification is unavailable, the service is unavailable, or the request timed out.