---
title: "Mark the address as unsubscribed | 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/markunsubscribed
---

# Mark the address as unsubscribed

POST

/v1/addresses/{address}/unsubscribed

```js
const url = 'https://api.proxymail.qa/v1/addresses/k7f2x9ab12cd%40mailclub.dev/unsubscribed';
const options = {
  method: 'POST',
  headers: {
    'Proxy-Mail-QA-Test': 'sign-up%20%E2%80%BA%20sends%20one%20code',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"email_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","service":"example","at":"2026-04-15T12:00:00Z","grace":"example"}'
};

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

```sh
curl --request POST \
  --url https://api.proxymail.qa/v1/addresses/k7f2x9ab12cd%40mailclub.dev/unsubscribed \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Proxy-Mail-QA-Test: sign-up%20%E2%80%BA%20sends%20one%20code' \
  --data '{ "email_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "service": "example", "at": "2026-04-15T12:00:00Z", "grace": "example" }'
```

Records that the address unsubscribed from a sender, after the test did it (Proxy Mail QA never opens unsubscribe links). From then on, any marketing email from that sender fails `after_unsubscribe`, however long after. Name the sender with `email_id` or `service` (a name or a domain such as acme.com); with neither, the newest marketing email decides. `at` backdates it. Marking twice is harmless. In Labs: answers 403 until the key’s creator switches on Marketing and offer emails in Account settings → Labs.

## 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
```

### 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
```

## Request Body

Media typeapplication/json

### object

**email\_id**

The email it unsubscribed from.

string format: uuid

**service**

The sender, as a service name or domain.

string

<= 253 characters

**at**

When it unsubscribed. Default: now.

string format: date-time

**grace**

A grace period, such as 2h or 1d (up to 30d; 0 for none): marketing within it after unsubscribing doesn’t count.

string

### Example generated

```json
{
  "email_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
  "service": "example",
  "at": "2026-04-15T12:00:00Z",
  "grace": "example"
}
```

## Responses

### 200

The watch

Media typeapplication/json

### object

**id**

string format: uuid

**sender**

The sender’s domain.

string

**service**

string | null

**unsubscribed\_at**

string format: date-time

**via**

string

Allowed values: app extension agent api

**grace\_seconds**

Marketing within this long after unsubscribing doesn’t count.

integer

**watching**

False once the address subscribed again.

boolean

**ended\_at**

string | null format: date-time

**after\_unsubscribe**

Marketing emails from the sender that came after unsubscribing and its grace period (and before subscribing again).

Array<object>

### object

**email\_id**

string format: uuid

**received\_at**

string format: date-time

**after\_seconds**

integer

#### Example 

```json
{
  "via": "app"
}
```

### 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"
}
```

[Previous Check unsubscribing worked](https://proxymail.qa/docs/reference/operations/checkunsubscribe.html) [Next Mark the address as subscribed again](https://proxymail.qa/docs/reference/operations/markresubscribed.html)

- [English ](https://proxymail.qa/docs/reference/operations/markunsubscribed)
- [DeutschStartseite](https://proxymail.qa/de)
- [EspañolPágina de inicio](https://proxymail.qa/es)
- [FrançaisPage d’accueil](https://proxymail.qa/fr)
- [日本語トップページ](https://proxymail.qa/jp)
- [简体中文首页](https://proxymail.qa/zh-cn)
