# Email Verifier

> Verify that an email address can receive mail before you send, with the Emelia Email Verification API. 0.25 credit per verification.

Source: https://docs.emelia.io/docs/enrichment/email-verifier

The Email Verification API checks whether an address can receive mail. It costs 0.25 credit per verification, whatever the result: the credit is never refunded.

## Start a verification

[`POST /tools/verify/email`](https://docs.emelia.io/docs/enrichment/email-verifier/verify-email.md)

**curl**

```bash
curl -X POST https://api.emelia.io/tools/verify/email \
  -H "Authorization: $EMELIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "claire.fontaine@nexora.io"}'
# {"success":true,"jobId":"6650f1a2b839d80011c5f003"}
```

**JavaScript**

```js
const res = await fetch('https://api.emelia.io/tools/verify/email', {
  method: 'POST',
  headers: { Authorization: process.env.EMELIA_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({ email: 'claire.fontaine@nexora.io' }),
});
const { jobId } = await res.json();
```

**Python**

```python
import os
import requests

res = requests.post(
    "https://api.emelia.io/tools/verify/email",
    headers={"Authorization": os.environ["EMELIA_API_KEY"]},
    json={"email": "claire.fontaine@nexora.io"},
)
job_id = res.json()["jobId"]
```

## Read the result

[`GET /tools/verify/email/{jobId}`](https://docs.emelia.io/docs/enrichment/email-verifier/get-result.md)

**curl**

```bash
curl https://api.emelia.io/tools/verify/email/6650f1a2b839d80011c5f003 \
  -H "Authorization: $EMELIA_API_KEY"
```

**JavaScript**

```js
const res = await fetch(`https://api.emelia.io/tools/verify/email/${jobId}`, {
  headers: { Authorization: process.env.EMELIA_API_KEY },
});
const { data } = await res.json();
if (data.status === 'done') console.log(data.email, data.qualification);
```

**Python**

```python
res = requests.get(
    f"https://api.emelia.io/tools/verify/email/{job_id}",
    headers={"Authorization": os.environ["EMELIA_API_KEY"]},
)
data = res.json()["data"]
if data["status"] == "done":
    print(data["email"], data["qualification"])
```

```json title="Response"
{
  "success": true,
  "data": {
    "_id": "6650f1a2b839d80011c5f003",
    "email": "claire.fontaine@nexora.io",
    "status": "done",
    "qualification": "valid",
    "date": "2026-10-11T08:00:00.000Z"
  }
}
```

`qualification` is the deliverability verdict of the provider, for example `valid`. A verification usually ends within seconds; after about 60 seconds without a verdict the job ends with `status: "error"`, and the 0.25 credit is not refunded.

## Past verifications

[`GET /tools/verify/email`](https://docs.emelia.io/docs/enrichment/email-verifier/list-past-verifications.md)

Your verifications, newest first, with `page` from 1 and `limit` (15 by default, 100 at most).

## When to verify

* **Verify the addresses you bring yourself:** an old CRM export, a file from a partner, a form.
* **Do not verify what the [Email Finder](https://docs.emelia.io/docs/enrichment/email-finder.md) returned as `valid`:** it was already checked.
* **Catch-all domains** accept every address, real or not: no verifier can prove that a specific mailbox exists behind them. Send to those addresses in small batches and watch the bounces.
