---
title: "Email Verification API Reference | Leadsets Docs"
description: "POST /v1/emails/verify: check 1 to 100 emails per call. Status, confidence and checked date per email; 1 enrichment record per email checked."
canonical: https://www.leadsets.ai/docs/api/emails-verify
updated: 2026-11-11
---

REST API / Emails

# Verify emails

Check one email or up to 100 in one call. Each gets a status, a confidence score and the date it was checked.

POST /v1/emails/verify MCP: verify_email

Records

1 enrichment record per email checked

Meters

enrichment records + requests / 5 hrs, records / week

Not checked

0 records

## Body parameters

email string

One email to verify.

emails string[]

Up to 100 emails. Duplicates are checked once.

Send `email`, `emails` or both: at most 100 different emails per call. Addresses are lower-cased before checking.

## Statuses

| status | Meaning |
| --- | --- |
| verified | The mailbox exists and accepts mail. Safe to send. |
| catch_all | The domain accepts every address, so this mailbox can't be confirmed. Send with care. |
| unknown | The check couldn't decide, for example the server timed out or the inbox is full. |
| invalid | The address doesn't exist or can't receive mail, including bad syntax. Don't send. |
| null | Not checked: `reason` says why. Emails past your remaining records come back as `not_checked: limit reached`. |

## Response

`results`, one per email, with `email`, `status`, `confidence` (0 to 1), `checked_at`, `mx_provider` (who hosts the mailbox, when known) and `reason` when it wasn't checked. `summary` counts each status plus `not_checked`. Then `usage` and `request_id`.

Every email that gets a status counts one enrichment record, on the same meters as enrichment, including emails rejected for bad syntax. A check of the same address from the last 30 days may be reused; it still counts. Emails that weren't checked cost nothing. If no email in the call could be checked, you get 503 `unavailable` and nothing is counted.

**Batches are kept for processing.** A call with more than one email is stored for up to 30 days, then deleted. Unless you turn it off in Settings, its work emails may be used as lookups, as the [DPA](https://www.leadsets.ai/dpa) describes.

## Errors

| Status | type | Meaning |
| --- | --- | --- |
| `400` | `invalid_request` | A value isn't valid. The message names the field in `param`. |
| `401` | `unauthorized` | Missing, invalid, expired or revoked key. See [Authentication](https://www.leadsets.ai/docs/authentication). |
| `402` | `free_records_exhausted` | Free plan: the 1,000 free enrichment records or the 1,000 free data calls are used up. |
| `403` | `forbidden` | The key is read only. Data tools need a key with data access. |
| `429` | `window_full` | A five-hour records or requests window is full. See Retry-After and `resets_at`. |
| `429` | `weekly_limit` | The seven-day records limit is reached. Resume after `resets_at`. |
| `503` | `unavailable` | Verification is unavailable right now. Nothing was counted. See Retry-After. |

[Previous
**← enrich_company**](https://www.leadsets.ai/docs/api/companies-enrich) [Next
**scrape_company →**](https://www.leadsets.ai/docs/api/scrape-company)

Was this page useful? [Tell us](mailto:support@leadsets.ai?subject=Docs%20feedback%3A%20%2Fdocs%2Fapi%2Femails-verify)

```bash
curl https://api.leadsets.ai/v1/emails/verify \
 -H "Authorization: Bearer $LEADSETS_KEY" \
 -H "Content-Type: application/json" \
 -H "Idempotency-Key: 6a3d…" \
 -d '{
   "emails": ["maya@northwind.io", "sales@stackfold.io", "old.address@parcelry.co"]
 }'
```

```ts
import { Leadsets } from "@leadsetsai/sdk";

const ls = new Leadsets(process.env.LEADSETS_KEY);
const res = await ls.emails.verify({
 emails: ["maya@northwind.io","sales@stackfold.io","old.address@parcelry.co"],
});
```

```python
import os
from leadsets import Leadsets

ls = Leadsets(os.environ["LEADSETS_KEY"])
res = ls.emails.verify(
   emails=["maya@northwind.io", "sales@stackfold.io", "old.address@parcelry.co"],
)
```

Response 200 OK

```
{
 "results": [
   { "email": "maya@northwind.io", "status": "verified",
     "confidence": 0.97, "checked_at": "2026-11-11T09:12:44Z",
     "mx_provider": "google" },
   { "email": "sales@stackfold.io", "status": "catch_all",
     "confidence": 0.5, "checked_at": "2026-11-11T09:12:45Z",
     "mx_provider": "microsoft" },
   { "email": "old.address@parcelry.co", "status": "invalid",
     "confidence": 0, "checked_at": "2026-11-11T09:12:45Z",
     "mx_provider": null }
 ],
 "summary": { "verified": 1, "catch_all": 1, "unknown": 0,
              "invalid": 1, "not_checked": 0 },
 "usage": { "enrich_records_counted": 3, "enrich_records_left_5h": 14997,
            "enrich_requests_left_5h": 74999, "enrich_records_left_week": 74997 },
 "request_id": "req_9b20e4f1a7c3"
}
```

---

Leadsets by Mobylogix LLC, 10160 hwy 242, Conroe, TX, 77385, US. Facts for AI assistants: https://www.leadsets.ai/llm · Site index: https://www.leadsets.ai/llms.txt · Every page: https://www.leadsets.ai/llms-full.txt
