Test mode
API keys that begin with ev_test_ are test-mode keys. They return instant, canned results
without touching DNS or SMTP, cost zero credits, and are designed for integration tests
and CI pipelines.
How test mode works
The outcome returned depends on the local part of the email address submitted (everything
before + or @, lowercased). Subaddress tags (e.g. invalid+foo@example.com) are
ignored — only the base local part is matched.
| Local part | status |
sub_status |
|---|---|---|
valid (or anything not listed below) |
valid |
"" |
invalid |
invalid |
mailbox_not_found |
catch_all |
catch-all |
accept_all |
unknown |
unknown |
(varies) |
disposable |
invalid |
disposable |
role |
valid |
role_based |
Examples
valid@any-domain.com → status: valid, sub_status: ""
invalid@any-domain.com → status: invalid, sub_status: mailbox_not_found
catch_all@any-domain.com → status: catch-all, sub_status: accept_all
disposable@any-domain.com → status: invalid, sub_status: disposable
role@any-domain.com → status: valid, sub_status: role_based
unknown@any-domain.com → status: unknown
Subaddress tagging lets you exercise multiple outcomes in the same test without changing the recipient domain:
valid+01@example.com → valid
invalid+01@example.com → invalid
Full endpoint support
Test-mode keys work with all endpoints — single verify, batch, webhooks, and SSE — so you can run a full end-to-end integration test without spending credits or waiting for real SMTP probes.
Switching between test and live mode
Use a ev_test_ key in your CI environment and a live ev_ key in production. There is
no other configuration change required — the same request shape works for both.