---
title: "Check that no email arrives | Proxy Mail QA"
description: "Developer docs for Proxy Mail QA: the MCP server for coding agents, the REST API for test suites, and the Chrome extension."
url: https://proxymail.qa/docs/reference/operations/expectnoemail
---

# Check that no email arrives

GET

/v1/addresses/{address}/none

```js
const url = 'https://api.proxymail.qa/v1/addresses/k7f2x9ab12cd%40mailclub.dev/none?timeout=30&type=code';
const options = {
  method: 'GET',
  headers: {
    'Proxy-Mail-QA-Test': 'sign-up%20%E2%80%BA%20sends%20one%20code',
    'Proxy-Mail-QA-Run-Retry': 'true',
    Authorization: 'Bearer <token>'
  }
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
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`.

## Authorizations

- **[apiKey](https://proxymail.qa/docs/reference.html#apikey)**

## Parameters

### Path Parameters

**address**

required

string format: email

The test address, URL-encoded. A variant also works: capitals, or a +tag (k7f2x9ab12cd+o’[brien@mailclub.dev](mailto: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 

```plaintext
k7f2x9ab12cd@mailclub.dev
```

### Query Parameters

**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.

### Header Parameters

**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 

```plaintext
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.

## Responses

### 200

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 

```json
{
  "arrived": false
}
```

### 400

An error

Media typeapplication/json

### object

**error**

string

**message**

string

#### Example generated

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

### 404

An error

Media typeapplication/json

### object

**error**

string

**message**

string

#### Example generated

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

### 409

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 

```json
{
  "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"
  }
}
```

[Previous Count the emails that arrived](https://proxymail.qa/docs/reference/operations/countemails.html) [Next Emails received, newest first, with their codes and links](https://proxymail.qa/docs/reference/operations/listmessages.html)
