# Test addresses

URL: https://email-validation.org/docs/test-addresses/
Updated: 2026-10-20

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

Addresses on `sandbox.email-validation.org` return a fixed answer for every reason, cost nothing and never contact a mail
server. Use them to test your integration end to end: the address `<reason>@sandbox.email-validation.org` returns that
reason, with its status and action.

## Every test address

| Address | Status | Reason | Action |
|---|---|---|---|
| `accepted@sandbox.email-validation.org` | `deliverable` | [`accepted`](https://email-validation.org/docs/statuses/deliverable/#accepted) | `send` |
| `alias@sandbox.email-validation.org` | `deliverable` | [`alias`](https://email-validation.org/docs/statuses/deliverable/#alias) | `send` |
| `normalized@sandbox.email-validation.org` | `deliverable` | [`normalized`](https://email-validation.org/docs/statuses/deliverable/#normalized) | `send` |
| `low_engagement@sandbox.email-validation.org` | `deliverable` | [`low_engagement`](https://email-validation.org/docs/statuses/deliverable/#low_engagement) | `send_with_caution` |
| `high_engagement@sandbox.email-validation.org` | `deliverable` | [`high_engagement`](https://email-validation.org/docs/statuses/deliverable/#high_engagement) | `send` |
| `trusted_catch_all@sandbox.email-validation.org` | `deliverable` | [`trusted_catch_all`](https://email-validation.org/docs/statuses/deliverable/#trusted_catch_all) | `send` |
| `ai_agent@sandbox.email-validation.org` | `deliverable` | [`ai_agent`](https://email-validation.org/docs/statuses/deliverable/#ai_agent) | `send_with_caution` |
| `no_mailbox@sandbox.email-validation.org` | `undeliverable` | [`no_mailbox`](https://email-validation.org/docs/statuses/undeliverable/#no_mailbox) | `remove` |
| `no_inbound_mail@sandbox.email-validation.org` | `undeliverable` | [`no_inbound_mail`](https://email-validation.org/docs/statuses/undeliverable/#no_inbound_mail) | `remove` |
| `invalid_syntax@sandbox.email-validation.org` | `undeliverable` | [`invalid_syntax`](https://email-validation.org/docs/statuses/undeliverable/#invalid_syntax) | `remove` |
| `likely_typo@sandbox.email-validation.org` | `undeliverable` | [`likely_typo`](https://email-validation.org/docs/statuses/undeliverable/#likely_typo) | `remove` |
| `no_dns@sandbox.email-validation.org` | `undeliverable` | [`no_dns`](https://email-validation.org/docs/statuses/undeliverable/#no_dns) | `remove` |
| `mailbox_full@sandbox.email-validation.org` | `undeliverable` | [`mailbox_full`](https://email-validation.org/docs/statuses/undeliverable/#mailbox_full) | `remove` |
| `unroutable@sandbox.email-validation.org` | `undeliverable` | [`unroutable`](https://email-validation.org/docs/statuses/undeliverable/#unroutable) | `remove` |
| `catch_all@sandbox.email-validation.org` | `risky` | [`catch_all`](https://email-validation.org/docs/statuses/risky/#catch_all) | `send_with_caution` |
| `role_account@sandbox.email-validation.org` | `risky` | [`role_account`](https://email-validation.org/docs/statuses/risky/#role_account) | `send_with_caution` |
| `role_catch_all@sandbox.email-validation.org` | `risky` | [`role_catch_all`](https://email-validation.org/docs/statuses/risky/#role_catch_all) | `send_with_caution` |
| `disposable@sandbox.email-validation.org` | `risky` | [`disposable`](https://email-validation.org/docs/statuses/risky/#disposable) | `remove` |
| `toxic@sandbox.email-validation.org` | `risky` | [`toxic`](https://email-validation.org/docs/statuses/risky/#toxic) | `remove` |
| `forwarding_domain@sandbox.email-validation.org` | `risky` | [`forwarding_domain`](https://email-validation.org/docs/statuses/risky/#forwarding_domain) | `send_with_caution` |
| `suppressed@sandbox.email-validation.org` | `risky` | [`suppressed`](https://email-validation.org/docs/statuses/risky/#suppressed) | `remove` |
| `possible_trap@sandbox.email-validation.org` | `risky` | [`possible_trap`](https://email-validation.org/docs/statuses/risky/#possible_trap) | `remove` |
| `spamtrap@sandbox.email-validation.org` | `risky` | [`spamtrap`](https://email-validation.org/docs/statuses/risky/#spamtrap) | `remove` |
| `complainer@sandbox.email-validation.org` | `risky` | [`complainer`](https://email-validation.org/docs/statuses/risky/#complainer) | `remove` |
| `server_unavailable@sandbox.email-validation.org` | `unknown` | [`server_unavailable`](https://email-validation.org/docs/statuses/unknown/#server_unavailable) | `retry_later` |
| `temporary_error@sandbox.email-validation.org` | `unknown` | [`temporary_error`](https://email-validation.org/docs/statuses/unknown/#temporary_error) | `retry_later` |
| `greylisted@sandbox.email-validation.org` | `unknown` | [`greylisted`](https://email-validation.org/docs/statuses/unknown/#greylisted) | `retry_later` |
| `anti_spam_block@sandbox.email-validation.org` | `unknown` | [`anti_spam_block`](https://email-validation.org/docs/statuses/unknown/#anti_spam_block) | `retry_later` |
| `timeout@sandbox.email-validation.org` | `unknown` | [`timeout`](https://email-validation.org/docs/statuses/unknown/#timeout) | `retry_later` |
| `internal_error@sandbox.email-validation.org` | `unknown` | [`internal_error`](https://email-validation.org/docs/statuses/unknown/#internal_error) | `retry_later` |

## What they return

The `status`, `reason` and `action` match the address. Other fields hold fixed placeholder data: the domain is
`sandbox.email-validation.org`, flags such as `disposable` and `catch_all_domain` agree with the reason, and
`credits_used` is always `0`. For example, `likely_typo@sandbox.email-validation.org`:

```json
{
  "email": "likely_typo@sandbox.email-validation.org",
  "status": "undeliverable",
  "reason": "likely_typo",
  "action": "remove",
  "account": "likely_typo",
  "domain": "sandbox.email-validation.org",
  "did_you_mean": "accepted@sandbox.email-validation.org",
  "free_email": false,
  "role_account": null,
  "disposable": null,
  "catch_all_domain": null,
  "mx_found": true,
  "mx_record": "mx.sandbox.email-validation.org",
  "smtp_provider": "other",
  "domain_age_days": 3650,
  "processed_at": "2026-11-02T09:30:00.000Z",
  "credits_used": 0,
  "request_id": "req_7Hq2LmX9cV4bN8tR1zK6wD"
}
```

## Where they work

- `POST /v1/validate` and `GET /v1/validate`
- Bulk jobs: test addresses in a list are answered for free like malformed addresses
- The MCP tools `validate_email` and `create_bulk_job`

Test addresses still need an API key that works, so they exercise your authentication handling too: a revoked key,
a key without the `validate` scope, a key used from an origin outside its allowed origins, or the key of a suspended
account is refused as for any other address (a revocation can take up to 10 seconds to reach test-address
answers). To test your
handling of errors such as `402` or `429`, mock those answers in your own tests: the
[OpenAPI document](https://api.email-validation.org/openapi.json) has an example body for every error code.
