Testing

Available in the Medium and Large plans

This page includes test inputs and other information to make sure your test environment works before deploying to production.

Sandbox API Keys

An API request sent with a sandbox API key is automatically identified as a request in sandbox mode. All requests with sandbox keys will respond with dummy data.

You can create sandbox keys on plans with at least two API keys (Medium and Large). A sandbox key counts toward your plan's API key limit like a live key.

Please note that the requests are still shown in the graph on the dashboard. You can select only your live key if you want to filter them out.

Test email addresses

You can choose any domain. The deciding part is the part before the @. Use an ordinary domain such as example.com: on a privacy relay domain (such as privaterelay.appleid.com or duck.com) a deliverable test address gets status valid / relay_address, as a real check would.

State / Reason / Status

Email AddressStateReasonStatusSub-statusRecommended action
deliverable@example.com + all other email addressesdeliverablevalid_mailboxvalidnullsend
 
undeliverable@example.com
undeliverable+mailbox@example.com
undeliverableinvalid_mailboxinvalidmailbox_not_foundsuppress
undeliverable+mx@example.comundeliverableinvalid_mxinvalidno_dns_entriessuppress
undeliverable+format@example.comundeliverableinvalid_formatinvalidfailed_syntax_checksuppress
undeliverable+smtp@example.comundeliverableinvalid_smtpinvalidmailbox_not_foundsuppress
 
risky@example.com
risky+quality@example.com
riskylow_qualityriskynullsend_with_caution
risky+deliverability@example.comriskylow_deliverabilityriskynullsend_with_caution
 
unknown@example.com
unknown+smtp@example.com
unknownunavailable_smtpunknownmail_server_temporary_errorretry_later
unknown+timeout@example.comunknowntimeoutunknowntimeout_exceededretry_later
unknown+error@example.comunknownunexpected_errorunknownexception_occurredretry_later
unknown+noconnect@example.comunknownno_connectunknownfailed_smtp_connectionretry_later
unknown+greylisted@example.comunknownunavailable_smtpunknowngreylistedretry_later
unknown+antispam@example.comunknownunavailable_smtpunknownantispam_systemsend_with_caution

Any other address with a +tag, such as deliverable+news@example.com, gets the sub-status alias. The explanation is the sentence listed for the sub-status in Result Statuses. unknown+antispam stands for a permanent anti-spam block; a temporary one has the recommended action retry_later.

Special Cases

Email AddressResponseStatusSub-statusRecommended action
catch-all@example.com"catch_all": true with catch_all=1 in the URL, otherwise nullcatch_allaccept_allsend_with_caution
mailbox-full@example.com"state": "deliverable", "reason": "low_deliverability"riskymailbox_fullretry_later
role@example.com"role": truevalidrole_basedsend_with_caution
disposable@example.com"disposable": truedo_not_maildisposablesuppress
free@example.com"free": truevalidnullsend

As with live validation, catch-all@example.com has the status catch_all whether or not you set catch_all=1.

Bulk jobs

Bulk jobs created with a sandbox key are free and never contact a mail server: every address in the list gets the result the test addresses above define, so a list of them covers every state, reason and status. A sandbox job accepts up to 1,000 rows and usually finishes within a minute; its webhook is delivered and signed like a live one, so you can test your receiver with it. Sandbox keys and live keys have separate job lists: a sandbox key only sees and deletes jobs created with sandbox keys, and a live key only live jobs.