Skip to content

Check that no email arrives

GET
/v1/addresses/{address}/none
curl --request GET \
--url 'https://api.proxymail.qa/v1/addresses/k7f2x9ab12cd%40mailclub.dev/none?timeout=30&type=code' \
--header 'Authorization: Bearer <token>' \
--header 'Proxy-Mail-QA-Run-Retry: true' \
--header 'Proxy-Mail-QA-Test: sign-up%20%E2%80%BA%20sends%20one%20code'

Holds for up to timeout seconds and passes (200) if no matching email reaches the address in that time, for checks such as “an unsubscribed user gets nothing” or “a second reset request is rate-limited”. Fails at once (409, error email_arrived) when one arrives, saying when and from whom, never what it says. Pass since as the time the action happened, so an email that came before the call still counts. For longer checks, call again with the same since.

address
required
string format: email

The test address, URL-encoded. A variant also works: capitals, or a +tag (k7f2x9ab12cd+o’brien@mailclub.dev). It acts on the plain address; waiting on a +tag variant, or listing its messages, only finds mail sent to that variant.

Example

k7f2x9ab12cd@mailclub.dev
since
string format: date-time

Only email received at or after this time. Default: the time of the request.

timeout
integer
default: 30 <= 30

Seconds to watch. 0 checks once.

service
string

Only email from this service, by name or domain (e.g. ‘spotify’).

type
string
Allowed values: code link

Only emails with a code, or with a link. Codes leave out coupons, and links count verify, magic_signin, invite and reset, unless subtype says otherwise.

subtype
string

With type, comma-separated: otp or coupon for codes; verify, magic_signin, invite, reset or other for links; or any.

Proxy-Mail-QA-Run
string format: uuid

A run’s id (POST /v1/runs): adds what this call saw to the run. If it can’t be added (the run finished, or isn’t in this project), the call still works and the Proxy-Mail-QA-Run-Warning response header says why.

Proxy-Mail-QA-Test
string
<= 600 characters

With Proxy-Mail-QA-Run: the test this call belongs to, percent-encoded (encodeURIComponent), up to 200 characters once decoded. The run’s report shows it beside what the call saw.

Example

sign-up%20%E2%80%BA%20sends%20one%20code
Proxy-Mail-QA-Run-Retry
string
Allowed values: true

True when you’ll call again if nothing arrives (waits longer than 30 seconds), so only the last call’s “nothing arrived” is added to the run.

Nothing arrived

Media typeapplication/json
object
address
string
since
string format: date-time
arrived
boolean
until

Nothing matching arrived between since and this time.

string format: date-time

Example

{
"arrived": false
}

An error

Media typeapplication/json
object
error
string
message
string

Example generated

{
"error": "example",
"message": "example"
}

An error

Media typeapplication/json
object
error
string
message
string

Example generated

{
"error": "example",
"message": "example"
}

An email arrived

Media typeapplication/json
object
error
string
message
string
address
string
since
string format: date-time
arrived
boolean
count
integer
email

An email without its content: when it arrived, who sent it and the kind of its main code or link.

object
received_at
string format: date-time
service

Who sent it, e.g. Spotify.

string | null
service_domain
string | null
type
string | null
Allowed values: code link
subtype

Otp or coupon; verify, magic_signin, invite, reset or other.

string | null
email_id
string format: uuid

Example

{
"error": "email_arrived",
"message": "An email reached k7f2x9ab12cd@mailclub.dev since 2026-10-15T10:00:00.000Z, the first from Spotify.",
"arrived": true,
"email": {
"type": "code"
}
}