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

# Suppressions

> Addresses Sendbaze will not send to, why they got there, and how to manage the list.

A suppression list protects your reputation: an address that bounced permanently or reported you as spam must not be emailed again. Sendbaze checks `to`, `cc` and `bcc` against the list before anything is queued and refuses with `422 recipient_suppressed`, naming each address and its reason.

## How addresses get on the list

| Reason | Added by | Blocks |
| - | - | - |
| `hard_bounce` | A bounce saying the mailbox does not exist. Applied for every sender on Sendbaze, since the mailbox is gone for everyone. | All email |
| `complaint` | The recipient marked your email as spam. Counts toward your [complaint rate](https://docs.sendbaze.com/learn/deliverability/reputation.md). | All email |
| `unsubscribe` | The recipient used the unsubscribe link or button on a marketing email. | Marketing only; transactional still sends |
| `manual` | You or a teammate added it, in the dashboard or with the API. | All email |

Test keys skip the check.

## Manage the list

**Suppressions** in the dashboard lists entries with search, the message that caused each one, and an export. Owners, admins and developers can add and remove entries.

With the API (scope `read` to list, `emails:send` to change):

```bash List theme={"dark"}
curl "https://api.sendbaze.com/v1/suppressions?email=example.co.za&limit=50" \
  -H "Authorization: Bearer $SENDBAZE_API_KEY"
```

```bash Add theme={"dark"}
curl https://api.sendbaze.com/v1/suppressions \
  -H "Authorization: Bearer $SENDBAZE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "person@example.co.za", "reason": "manual", "note": "Asked to be removed" }'
```

```bash Remove theme={"dark"}
curl -X DELETE https://api.sendbaze.com/v1/suppressions/sup_01j9x7k2r4m8q3v5n6b7c8d9e0 \
  -H "Authorization: Bearer $SENDBAZE_API_KEY"
```

```ts Node.js theme={"dark"}
const { data } = await sendbaze.suppressions.list({ email: "example.co.za" });
await sendbaze.suppressions.add({ email: "person@example.co.za", reason: "manual" });
await sendbaze.suppressions.remove("sup_01j9x7k2r4m8q3v5n6b7c8d9e0");
```

Adding an address that is already listed returns the existing entry with `200`. Global hard-bounce entries are not yours to remove; if a mailbox has come back to life, email support.

## Keep your own records in sync

Handle `email.bounced`, `email.complained` and `email.unsubscribed` [webhooks](https://docs.sendbaze.com/learn/webhooks/events.md) by flagging the address in your own database. Then the address stops receiving mail from every system you run, not only from Sendbaze.


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