# Verify a list

> Verify up to 10,000 email addresses at once by pasting them or uploading a CSV or XLSX file, follow progress, review results and export them as XLSX.

A verification list checks many addresses in one go, for example before you import contacts from another system or send a campaign to an old list. This guide shows how to create a list, follow its progress, read the results and export them.

## Before you begin

- A list can contain up to 10,000 addresses. Split bigger files into several lists.
- Each unique address costs 5 credits, charged when you create the list. A list of 10,000 addresses needs 50,000 credits.
- Lists always use `full` mode, which includes the mailbox check. See [Fast and full mode](/docs/email-verification/single/#fast-and-full-mode).
- For the API, use an API key with **Full Access**.

## Create a list

**Dashboard**

  1. **Open Lists.** Go to **Email Verification → Lists** and select **Verify emails**.

  2. **Name the list.** In **Name**, enter something you'll recognize later, such as `Newsletter import October`.

  3. **Add the addresses.** Under **Input Method**, choose one:

     - **Enter emails manually:** paste addresses into **Email Addresses**, separated by commas, semicolons or new lines.
     - **Upload a file:** choose a `.csv` or `.xlsx` file smaller than 10 MB. In a CSV, put one address per row or separate them with commas. In Excel, put them in the first column, one per row. The dialog shows how many addresses it found.

  4. **Select Create.** Emailit charges the credits and starts verifying.

**API**

  Call [Create a list](/docs/api-reference/email-verifications/lists/create/) with a name and an array of addresses:

```bash
curl https://api.emailit.com/v2/email-verification-lists \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Newsletter import October",
    "emails": ["ada@example.com", "grace@example.com", "alan@example.com"]
  }'
```

  The `201` response describes the new list:

```json
{
  "object": "email_verification_list",
  "id": "evl_3Rt8Wq5Lm2Kx",
  "name": "Newsletter import October",
  "status": "processing",
  "stats": {
    "total_emails": 3,
    "processed_emails": 0,
    "successful_verifications": 0,
    "failed_verifications": 0,
    "pending_emails": 3
  },
  "created_at": "2026-10-01T11:02:37Z",
  "updated_at": "2026-10-01T11:02:37Z",
  "valid_emails_count": 3,
  "unique_emails_count": 3,
  "invalid_emails_count": 0,
  "dispatched_jobs": 3
}
```

  | Status | When |
  | --- | --- |
  | `201` | The list was created and verification started. |
  | `400` | `name` is missing, `emails` is empty, it has more than 10,000 items, or none of them looks like an email address. |
  | `402` | The workspace doesn't have enough credits for every unique address. |

Before charging, Emailit cleans up the input: it lowercases every address, removes duplicates and drops entries without an `@`. You're only charged for the unique addresses that remain. If the list can't be started, the credits are refunded.

## Follow progress

The list's status moves through these stages:

| Status | Meaning |
| --- | --- |
| `pending` | Created, waiting to start. |
| `processing` | Addresses are being verified. |
| `completed` | Every address has a result. |
| `failed` | The list couldn't be processed. |
| `canceled` | Verification was stopped. |

In **Email Verification → Lists**, the **Statistics** column shows **Total**, **Pending**, **Successful** and **Failed** counts for each list. The **Expiring** column shows how many days are left before the list is deleted.

With the API, call [Retrieve a list](/docs/api-reference/email-verifications/lists/get/) and read `status` and `stats`. To avoid polling, subscribe a [webhook](/docs/webhooks/set-up/) to `email_verification_list.updated`, which fires when the list completes. Each address also fires `email_verification.updated` when its result is ready.

## Review the results

Select a list in the dashboard to open it. The page shows:

- cards with **Created**, **Status**, **Total Emails**, **Pending**, **Successful** and **Failed**,
- charts for **Verification Status Progress**, **Verification Results Breakdown** and **Risk Levels**,
- a table of every address with its status, result, risk and score.

With the API, call [List results](/docs/api-reference/email-verifications/lists/results/). Filter by `result` or `status` and page through with `page` and `limit` (default 50):

```bash
curl -G https://api.emailit.com/v2/email-verification-lists/evl_3Rt8Wq5Lm2Kx/results \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "result=invalid" \
  --data-urlencode "limit=100"
```

Each item has the address's `id`, `email`, `status`, `result`, `score`, `risk` and `mx_records`. [Verification results](/docs/email-verification/results/) explains every value and what to do with it.

## Export the results

Once a list is `completed`, you can download all its results as an Excel file.

**Dashboard**

  Open the list and select **Export Results**. Emailit downloads an `.xlsx` file named after the list's ID.

**API**

  Call [Export results](/docs/api-reference/email-verifications/lists/export/) and save the response:

```bash
curl https://api.emailit.com/v2/email-verification-lists/evl_3Rt8Wq5Lm2Kx/export \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -o results.xlsx
```

  Exporting a list that isn't completed returns `400`.

The file has one row per address with its status, result, score and risk, every individual check (valid syntax, disposable, role account, inbox full, deliverable, disabled, free email, gibberish, catch-all, SMTP connect, MX records), the address parts, domain age, the `did_you_mean` suggestion and the MX records. Results are color-coded so you can scan them quickly.

> **Lists are deleted after 30 days:** Verification lists and their results are deleted 30 days after you create them. Export the file if you need to keep the results longer.

## Use the results

1. **Remove** addresses with the result `invalid`, `disabled` or `disposable` before you import or send.
2. **Review** `inbox_full`, `role` and `unknown` addresses. Keep them if you have a reason to, but watch their bounces.
3. **Import** the rest into your [contacts](/docs/contacts/import-export/) or audience.

See [Recommended actions](/docs/email-verification/results/#recommended-actions) for each result.

## Related

  - [Verification results](/docs/email-verification/results/): Every result, risk level and check.
  - [Verification lists API](/docs/api-reference/email-verifications/lists/): Create lists and read results from code.

---
Source: https://emailit.com/docs/email-verification/lists/
