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

# List suppressions

> GET /v1/suppressions — list the addresses currently blocked from receiving mail from this project.

The suppression list is the project's send-time block list. Any address on it is dropped before send — even if you ask to mail it. List the current entries here.

**`GET /v1/suppressions`**

## Query parameters

<ParamField query="cursor" type="string">
  Opaque pagination cursor from a previous response's `nextCursor`.
</ParamField>

<ParamField query="limit" type="integer">
  Page size, `1`–`100` (default `25`).
</ParamField>

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.drin.run/v1/suppressions \
    -H "Authorization: Bearer $DRIN_API_KEY"
  ```

  ```typescript Node.js theme={null}
  import { DrinClient } from "@drin00/sdk";

  const drin = new DrinClient({ apiKey: process.env.DRIN_API_KEY });

  const page = await drin.suppressions.list();
  for (const s of page.data) {
    console.log(s.email, s.reason, s.createdAt);
  }
  ```
</CodeGroup>

## Response

Returns `200 OK` with a page of suppressed addresses. Each entry carries a `reason` — one of `hard_bounce`, `complaint`, `unsubscribe`, or `manual` — and the time it was added.

```json 200 OK theme={null}
{
  "data": [
    {
      "email": "bounced@example.com",
      "reason": "hard_bounce",
      "createdAt": "2026-06-01T12:04:55.000Z"
    },
    {
      "email": "spam-report@example.com",
      "reason": "complaint",
      "createdAt": "2026-05-29T08:11:02.000Z"
    }
  ],
  "nextCursor": null
}
```

<Note>
  **Suppression vs. unsubscribe.** Suppressions block delivery. They are separate from a contact's `subscribed` flag, which is an app-level marketing signal. See [Suppressions](/suppressions).
</Note>
