# The unknown status

URL: https://email-validation.org/docs/statuses/unknown/
Updated: 2026-10-20

> Documentation index: https://email-validation.org/llms.txt

**Unknown** means we could not get a definite answer this time. Unknown results are **always free**, including
checks that ran out of time, and the action is `retry_later`.

## Why checks end as unknown

To check a mailbox we ask the domain's mail server whether it exists. Some servers delay new senders on purpose
(greylisting), sit behind anti-spam systems that stop the conversation, are briefly down, or answer too slowly. In
each case there is no reliable answer to give, so we return `unknown` and charge nothing.

## What to do

- **Retry later.** A second check minutes or hours later often succeeds, especially for `greylisted`,
  `temporary_error` and `server_unavailable`. Bulk jobs check each address once and finish fast, so re-check the
  `unknown` rows yourself later (a new job or single checks); they cost nothing the first time.
- **Do not retry in a tight loop.** Repeating the same failing check every second will not help, and accounts that
  produce far more free outcomes than charged ones are slowed down for a while (`429 abuse_throttled`).
- **On forms:** accept the address and check it again later; do not block the person.
- **`timeout`:** the check did not finish within your `timeout` (at most 15 seconds). A larger
  `timeout` can help with slow servers.

## Reasons

### Mail server unavailable

`server_unavailable`: The mail server refused or dropped our connection, so the mailbox could not be checked.

- **Recommended action:** Retry later. Check the address again later; the answer often becomes definite on a second try.
- **Credit:** free, always.
- **Test address:** `server_unavailable@sandbox.email-validation.org` (free)

<details><summary>Example response</summary>

```json
{
  "email": "server_unavailable@sandbox.email-validation.org",
  "status": "unknown",
  "reason": "server_unavailable",
  "action": "retry_later",
  "account": "server_unavailable",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": null,
  "free_email": null,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": null,
  "mx_record": null,
  "smtp_provider": null,
  "domain_age_days": null,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

</details>

### Temporary server error

`temporary_error`: The mail server reported a temporary problem while we were checking the address.

- **Recommended action:** Retry later. Check the address again later; the answer often becomes definite on a second try.
- **Credit:** free, always.
- **Test address:** `temporary_error@sandbox.email-validation.org` (free)

<details><summary>Example response</summary>

```json
{
  "email": "temporary_error@sandbox.email-validation.org",
  "status": "unknown",
  "reason": "temporary_error",
  "action": "retry_later",
  "account": "temporary_error",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": null,
  "free_email": null,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": null,
  "mx_record": null,
  "smtp_provider": null,
  "domain_age_days": null,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

</details>

### Asked to retry later

`greylisted`: The mail server asked us to come back later, which is a common anti-spam delay.

- **Recommended action:** Retry later. Check the address again later; the answer often becomes definite on a second try.
- **Credit:** free, always.
- **Test address:** `greylisted@sandbox.email-validation.org` (free)

<details><summary>Example response</summary>

```json
{
  "email": "greylisted@sandbox.email-validation.org",
  "status": "unknown",
  "reason": "greylisted",
  "action": "retry_later",
  "account": "greylisted",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": null,
  "free_email": null,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": null,
  "mx_record": null,
  "smtp_provider": null,
  "domain_age_days": null,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

</details>

### Blocked by an anti-spam system

`anti_spam_block`: An anti-spam system in front of the mail server stopped our check before it could finish.

- **Recommended action:** Retry later. Check the address again later; the answer often becomes definite on a second try.
- **Credit:** free, always.
- **Test address:** `anti_spam_block@sandbox.email-validation.org` (free)

<details><summary>Example response</summary>

```json
{
  "email": "anti_spam_block@sandbox.email-validation.org",
  "status": "unknown",
  "reason": "anti_spam_block",
  "action": "retry_later",
  "account": "anti_spam_block",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": null,
  "free_email": null,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": null,
  "mx_record": null,
  "smtp_provider": null,
  "domain_age_days": null,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

</details>

### Took too long

`timeout`: The check did not finish within the time limit, so we stopped waiting and charged nothing.

- **Recommended action:** Retry later. Check the address again later; the answer often becomes definite on a second try.
- **Credit:** free, always.
- **Test address:** `timeout@sandbox.email-validation.org` (free)

<details><summary>Example response</summary>

```json
{
  "email": "timeout@sandbox.email-validation.org",
  "status": "unknown",
  "reason": "timeout",
  "action": "retry_later",
  "account": "timeout",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": null,
  "free_email": null,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": null,
  "mx_record": null,
  "smtp_provider": null,
  "domain_age_days": null,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

</details>

### Check could not finish

`internal_error`: Something went wrong on our side while checking this address, so no credit is used.

- **Recommended action:** Retry later. Check the address again later; the answer often becomes definite on a second try.
- **Credit:** free, always.
- **Test address:** `internal_error@sandbox.email-validation.org` (free)

<details><summary>Example response</summary>

```json
{
  "email": "internal_error@sandbox.email-validation.org",
  "status": "unknown",
  "reason": "internal_error",
  "action": "retry_later",
  "account": "internal_error",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": null,
  "free_email": null,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": null,
  "mx_record": null,
  "smtp_provider": null,
  "domain_age_days": null,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

</details>
