> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superdata.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Email Validation API

> Check email deliverability and catch-all domain signals.

## Validate an email

```http theme={null}
POST https://api.superdata.so/v1/email/validate
```

Send one email address in a JSON body with a [Bearer API key](/reference/authentication). The key needs `emails:validate` or `mcp:use` scope. Each completed validation uses one API credit.

```bash theme={null}
curl --request POST \
  --url 'https://api.superdata.so/v1/email/validate' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"email":"alex@example.com"}'
```

The example address is illustrative. The address goes in the JSON body rather than the public URL.

| Field | Type | Description |
| - | - | - |
| `email` | string | Required email address, up to 254 characters. |
| `strategy` | string | Optional: `besteffort` (default), `cached`, `fetch`, or `strict`. |
| `maxage` | integer | Optional maximum age in seconds for a cached result; use with `strict`, `besteffort`, or `cached`. |

Validation waits up to 20 seconds for a result. A timeout can produce `temp_error`. SuperData does not currently offer webhook delivery or private mode through this endpoint.

## Response

```json theme={null}
{
  "request_id": "req_01J...",
  "data": {
    "email": "alex@example.com",
    "normalized": "alex@example.com",
    "validity": "ambiguous",
    "validated_at": null,
    "uses_greylist": null,
    "retry_after": null,
    "gateway": null,
    "is_disposable": false,
    "is_consumer": false,
    "is_domain_catchall": true,
    "mx_records": []
  },
  "meta": { "credits_used": 1 }
}
```

The example values are illustrative. `validity` can be `valid`, `ambiguous`, `maybe_valid`, `invalid`, `uncached`, `malformed`, `temp_error`, or `perm_error`. Treat `ambiguous`, `maybe_valid`, greylisting, and catch-all signals as inconclusive rather than guaranteed delivery. `retry_after` indicates when a greylisted address may be worth checking again. `uncached` means the `cached` strategy found no stored result.

Errors use the [REST error envelope](/reference/rest-api#responses). Invalid input returns `400`, insufficient scope `403`, credit or rate limits `429`, and upstream failures `502`. Authentication, validation, and rate-limit rejections before provider work use zero credits.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.