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/suppressionsQuery parameters
limitintegerOptionalItems per page. Default
50, max 100.cursorstringOptionalPagination cursor.
ts
const { data, has_more, next_cursor } = await deckle.suppressions.list({ limit: 100 });Add a suppression#
POST
/v1/suppressionsIdempotent by email. A new address returns 201; an existing one returns 200 unchanged.
Body parameters
emailstringRequiredAddress to suppress. Normalized to lowercase.
reasonstringOptionalWhy 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/:emailThe 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.