DeckleDocs
Dashboard

API reference

Suppressions

Manage the list of addresses Deckle will never send to.

Deckle automatically suppresses hard bounces and complaints. You can inspect the list and add or remove addresses yourself. A send to a suppressed address is rejected with 422.

The suppression object#

json
{
  "email": "bounced@example.com",
  "reason": "hard_bounce",
  "created_at": "2026-07-10T10:30:00.000Z"
}

reason is one of hard_bounce, complaint, unsubscribe, or manual.

List suppressions#

GET/v1/suppressions

Query parameters

limitintegerOptional
Items per page. Default 50, max 100.
cursorstringOptional
Pagination cursor.
ts
const { data, has_more, next_cursor } = await deckle.suppressions.list({ limit: 100 });

Add a suppression#

POST/v1/suppressions

Idempotent by email. A new address returns 201; an existing one returns 200 unchanged.

Body parameters

emailstringRequired
Address to suppress. Normalized to lowercase.
reasonstringOptional
Why it’s suppressed. Defaults to manual.
curl -X POST https://app.getdeckle.com/api/v1/suppressions \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "bounced@example.com", "reason": "manual" }'

Remove a suppression#

DELETE/v1/suppressions/:email

The email in the path must be URL-encoded. Removing a suppression lets you send to that address again.

await deckle.suppressions.delete("bounced@example.com");

A missing address returns 404. See the deliverability guide for why suppression matters.