> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tawked.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Suppressed addresses

> The addresses your account no longer sends e-mail to: why each is there, adding them by hand, by file or by API, downloading the list, and lifting an address, a complaint with its reason.

Tawked keeps one list of addresses your account no longer sends to. A send to an address on it is not delivered and not charged: the recipient is reported as `suppressed`. The list is the account's, so an address suppressed from one application is suppressed for all of them. It is on **Email → Suppressed** in the console.

## Why an address is there

| Reason | How it got there |
| - | - |
| Bounce | A message to it bounced for good (the address does not exist or refuses mail). |
| Complaint | Its owner marked one of your messages as spam. |
| Manual | You added it: pasted, from a file, or through the API. |

Each row also says where it came from: a bounce or complaint, by hand, from a file, from the API, or from the sending service's own list.

## Adding addresses

From **Email → Suppressed → Add addresses**, by the account owner, an admin or a developer of the application:

* **Paste** up to 1,000 addresses, one a line.
* **Upload a CSV file** of up to 50,000 addresses and 5 MB, at most 10 files a day. The column named `email`, `e-mail` or `address` is read, else the first column; commas, semicolons and tabs all work as separators. The list shows the file's progress, then how many were added, already there, and not valid.

These are Tawked's limits for one paste or file. Addresses are lower-cased; one already on the list stays as it is.

Through the [Account API](https://docs.tawked.com/account-api/overview.md): `email.suppressions.create` with `{ "addresses": [...] }`, up to 1,000 a call. It answers `201` with `added`, `existing` and the `invalid` entries by position.

## Downloading the list

**Download the list** gives a CSV of the addresses with their reason, source and date. A cell that a spreadsheet would read as a formula is written as text.

## Lifting an address

Lifting an address lets e-mail reach it again.

* A **bounce** or a **manual** entry is lifted as it is.
* A **complaint** is lifted with a reason: its owner asked to receive your mail again, the message was reported by mistake, or another reason in a short note (10 to 500 characters). If the same address complains again, only Tawked's team can lift it.

Through the Account API: `email.suppressions.delete`, with `reason` (`recipient_asked`, `reported_by_mistake`, or `other` with a `note`) for a complaint. A member who reaches only some applications lifts only the rows of those applications. A lift lets e-mail reach the address again, so it is consequential: a token with approvals turned on answers HTTP 428 with the error `approval_required` first, and the lift runs once the request is approved (see [Person in the loop](https://docs.tawked.com/account-api/person-in-the-loop.md)).

## By API

A live key with the explicit `email:manage` manages the list from your code; one with `email:read` reads it:

| Call | What it does |
| - | - |
| `GET /v1/email/suppressions` | Lists the entries this application may see, newest first (`reason`, `source`, `address`, `created_after`, `created_before`, `limit`, `cursor`). |
| `GET /v1/email/suppressions/{address}` | Says whether the account holds an address back, the address URL-encoded. |
| `POST /v1/email/suppressions` | Adds up to 1,000 addresses: `{ "addresses": [...] }`. |
| `DELETE /v1/email/suppressions/{address}` | Lifts an address; a complaint with `{ "reason": "recipient_asked" }`, `reported_by_mistake` or `other` with a `note`. |
| `POST /v1/email/suppressions/imports` | Imports a CSV file in the background (`multipart/form-data`, `file`); `GET /v1/email/suppressions/imports/{id}` reads its progress. |

The list blocks sending account-wide, so a lookup never says "not suppressed" for an address this application cannot send to: an entry it may not see (another application's, or the team's) answers `{ "suppressed": true, "visible": false, "lift": "team_only" }` when looked up by its address (by its id it is `404 not_found`), and a lift of it answers `403 suppression_team_only`. The `suppression.added` and `suppression.removed` [webhooks](https://docs.tawked.com/webhooks/events.md#suppression-events) follow each change.

## Errors

| HTTP | Error | When |
| - | - | - |
| 409 | `email_locked` | The list cannot hold anything yet (Tawked Email is not on, not granted, or has no verified domain); `locked.reason` says which. |
| 422 | `suppression_invalid_addresses` | `addresses` is not a list of e-mail addresses, or none of them is valid. |
| 422 | `suppression_too_many` | More than 1,000 addresses in one call. |
| 422 | `suppression_lift_reason_required` | A complaint lifted without a `reason` of the three, or `other` without a `note` of 10 to 500 characters. |
| 403 | `suppression_team_only` | The address complained again after a lift: only Tawked's team lifts it now. |

Every addition and lift is kept in the account's history; lifts are kept for 400 days.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.