Skip to content
Docs

Verify up to 10,000 addresses at once and export the results.

Base URLhttps://api.emailit.com/v2AuthenticationErrorsRate limits

Create a list

Creates a verification list and starts verifying its addresses in the background. Every address is checked in full mode, including the mailbox check described in Verify an address. Requires an API key with full scope.

POST/email-verification-lists

Request body

namestringRequired

List name, 1 to 255 characters.

emailsstring[]Required

Addresses to verify, 1 to 10,000. Every item must be a valid email address. Emailit trims and lowercases them and removes duplicates.

Returns

Returns 201 Created with the list. Emailit charges 5 credits per unique address before verification starts. The response reports how many addresses were accepted (valid_emails_count, unique_emails_count) and how many verification jobs were queued (dispatched_jobs). The new list has the status processing.

stats keeps its starting values until every address is done; then the list moves to completed with its final counts. Poll Retrieve a list or listen for webhook events:

Status When
400 name or emails is missing or empty, emails has more than 10,000 items, or an item isn’t a valid address (standard validation error).
402 The workspace doesn’t have enough credits for every unique address.

Stats

Field Description
total_emails Unique addresses in the list.
processed_emails Addresses that finished, successfully or not.
successful_verifications Addresses verified successfully.
failed_verifications Addresses whose verification failed with an error.
pending_emails Addresses not processed yet.
POST/email-verification-lists
Terminal
curl -X POST https://api.emailit.com/v2/email-verification-lists \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"name": "October newsletter import", "emails": ["ada@example.com", "grace@example.com"]}'
JSON
{
  "id": "evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a",
  "name": "October newsletter import",
  "valid_emails_count": 2,
  "unique_emails_count": 2,
  "invalid_emails_count": 0,
  "status": "processing",
  "dispatched_jobs": 2,
  "stats": {
    "total_emails": 2,
    "processed_emails": 0,
    "successful_verifications": 0,
    "failed_verifications": 0,
    "pending_emails": 2
  },
  "created_at": "2026-10-01T10:30:02.441000+00:00"
}

List lists

Returns your email verification lists, newest first. Requires an API key with full scope.

GET/email-verification-lists

Query parameters

pageinteger

Page number, starting at 1. Default 1.

limitinteger

Lists per page, from 1 to 100. Default 10.

statusstring

Only lists with this status: pending, processing, completed, failed or canceled.

searchstring

Case-insensitive match on the list name.

matchstring

all (default) requires every filter. or matches any filter. See Filtering.

orderstring

Sort key for this list. See the sort keys below.

directionstring

asc or desc.

Filters and sort

List filters are one layer of key.condition=value query parameters. See Filtering for match, order, direction and the condition list per type.

Filter keys

KeyTypeConditionsNotes
namestringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
statusstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
created_atdateexact, before, after, empty, not_empty

Sort keys

Pass order as one of these keys and direction as asc or desc: name, status, created_at

Returns

Returns 200 OK with the lists in data, plus next_page_url and previous_page_url (null at either end). Each list has id, name, status, stats, created_at and updated_at; see Create a list for the stats fields.

GET/email-verification-lists
Terminal
curl -X GET https://api.emailit.com/v2/email-verification-lists \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json"
JSON
{
  "data": [
    {
      "id": "evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a",
      "name": "October newsletter import",
      "status": "completed",
      "stats": {
        "total_emails": 1000,
        "processed_emails": 1000,
        "successful_verifications": 996,
        "failed_verifications": 4,
        "pending_emails": 0
      },
      "created_at": "2026-10-01T10:30:02.441000+00:00",
      "updated_at": "2026-10-01T10:41:57.020000+00:00"
    }
  ],
  "next_page_url": "/v2/email-verification-lists?page=2&limit=10",
  "previous_page_url": null
}

Retrieve a list

Returns one email verification list. Poll it to find out when a list is completed, or listen for the email_verification_list.updated webhook event instead. Requires an API key with full scope.

GET/email-verification-lists/:id

Path parameters

idstringRequired

List ID, for example evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a.

Returns

Returns 200 OK with the list’s id, name, status, stats, created_at and updated_at. While a list is processing, stats shows its starting values; the final counts are written when it completes. See Create a list for the stats fields.

Returns 404 if the list doesn’t exist in your workspace.

GET/email-verification-lists/{id}
Terminal
curl -X GET https://api.emailit.com/v2/email-verification-lists/evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json"
JSON
{
  "id": "evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a",
  "name": "October newsletter import",
  "status": "completed",
  "stats": {
    "total_emails": 1000,
    "processed_emails": 1000,
    "successful_verifications": 996,
    "failed_verifications": 4,
    "pending_emails": 0
  },
  "created_at": "2026-10-01T10:30:02.441000+00:00",
  "updated_at": "2026-10-01T10:41:57.020000+00:00"
}

List results

Returns one result per address in a verification list, most recently updated first. Results appear as addresses finish, so you can read them before the whole list completes. Requires an API key with full scope.

GET/email-verification-lists/:id/results

Path parameters

idstringRequired

List ID, for example evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a.

Query parameters

pageinteger

Page number, starting at 1. Default 1.

limitinteger

Results per page, from 1 to 100. Default 50.

statusstring

Only results with this status: pending, processing, completed, failed or canceled.

resultstring

Only results with this outcome: safe, invalid, disposable, disabled, inbox_full or unknown. To find role-based addresses, use result.exact=role.

matchstring

all (default) requires every filter. or matches any filter. See Filtering.

orderstring

Sort key for this list. See the sort keys below.

directionstring

asc or desc.

Filters and sort

List filters are one layer of key.condition=value query parameters. See Filtering for match, order, direction and the condition list per type.

Filter keys

KeyTypeConditionsNotes
emailstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
statusstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
resultstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
riskstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
created_atdateexact, before, after, empty, not_empty

Sort keys

Pass order as one of these keys and direction as asc or desc: email, status, result, risk, created_at

Returns

Returns 200 OK with the results in data, plus next_page_url and previous_page_url (null at either end). Each result has the address’s id (ev_…), email, status, result, score, risk, mx_records, error_message (set when the verification failed) and timestamps. result, score and risk mean the same as in Verify an address. For every check, export the results.

Returns 404 if the list doesn’t exist in your workspace.

GET/email-verification-lists/{id}/results
Terminal
curl -X GET "https://api.emailit.com/v2/email-verification-lists/evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a/results?page=1&limit=10" \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json"
JSON
{
  "data": [
    {
      "id": "ev_2xLeA1Pn6Rw3Ks8Vb0Ht5Mq2Fd9c",
      "email": "ada@example.com",
      "status": "completed",
      "result": "safe",
      "score": 100,
      "risk": "low",
      "mx_records": [
        { "priority": 10, "exchange": "mx1.example.com" }
      ],
      "error_message": null,
      "created_at": "2026-10-01T10:30:02.441000+00:00",
      "updated_at": "2026-10-01T10:30:09.876000+00:00"
    },
    {
      "id": "ev_2xLeA2Qm7Sx4Lt9Wc1Ju6Nr3Ge0d",
      "email": "info@acme-typo.example",
      "status": "completed",
      "result": "invalid",
      "score": 25,
      "risk": "high",
      "mx_records": [],
      "error_message": null,
      "created_at": "2026-10-01T10:30:02.441000+00:00",
      "updated_at": "2026-10-01T10:30:08.112000+00:00"
    }
  ],
  "next_page_url": "/v2/email-verification-lists/evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a/results?page=2&limit=50",
  "previous_page_url": null
}

Export results

Downloads the results of a verification list as an XLSX spreadsheet. The list must be completed first. Requires an API key with full scope.

GET/email-verification-lists/:id/export

Path parameters

idstringRequired

List ID, for example evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a.

Returns

Returns 200 OK with the file as the response body, Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet and a Content-Disposition: attachment header. The file is named after the list ID, for example evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a.xlsx.

Status When
400 The list isn’t completed yet.
404 The list doesn’t exist in your workspace, or it has no results to export.
GET/email-verification-lists/{id}/export
Terminal
curl -X GET "https://api.emailit.com/v2/email-verification-lists/evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a/export" \
  -H "Authorization: Bearer your_api_key" \
  -o verification_results.xlsx
HTTP
HTTP/1.1 200 OK
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition: attachment; filename="evl_2xLe7Hc2Vq9Nb4Wt1Ys6Kd3Rf8a.xlsx"

<binary XLSX data>

Was this page helpful?

Thanks for the feedback.

Thanks, we read every message.