Skip to main content

Suppressions

MethodPathScopeSDK
GET/api/v1/suppressionsany valid keysuppressions.list
POST/api/v1/suppressionssuppressions:writesuppressions.add
DELETE/api/v1/suppressions/:emailsuppressions:writesuppressions.remove

A suppressed address is never handed to the delivery provider: POST /send fails with send_failed ("recipient is suppressed") and campaign/sequence sends skip it. This is the mechanism that protects your sending reputation, so it is enforced before anything else.

Bounces and complaints are added automatically from provider webhooks. These endpoints exist for manual entries and corrections.

GET /api/v1/suppressions

{
"ok": true,
"suppressions": [
{ "email": "bounced@example.com", "reason": "bounce", "created_at": "2026-07-20T11:02:00.000Z" },
{ "email": "typo@exmaple.com", "reason": "manual", "created_at": "2026-07-25T09:14:00.000Z" }
]
}
reasonSource
bounceHard/soft bounce reported by the provider
complaintRecipient marked it as spam
manualAdded through this endpoint or the console
global_unsubscribePlatform-wide opt-out

Not paginated — the list is expected to stay small relative to the contact list.

POST /api/v1/suppressions

FieldTypeNotes
emailstringRequired.
reasonbounce | complaint | manual | global_unsubscribeDefaults to manual.
curl -X POST https://mailroom.example.com/api/v1/suppressions \
-H "Authorization: Bearer pk_live_…" \
-H "Content-Type: application/json" \
-d '{"email":"typo@exmaple.com","reason":"manual"}'

201

{ "ok": true, "email": "typo@exmaple.com", "reason": "manual" }

Adding an address that is already suppressed is not an error.

DELETE /api/v1/suppressions/:email

URL-encode the address (ada%40example.com).

{ "ok": true, "email": "typo@exmaple.com", "deleted": true }

404 not_found — the address is not on the list.

Removing a bounce is a reputation decision

Un-suppressing makes the address sendable again. Do it for a typo you added by hand or an address the owner has re-verified — not to retry a hard bounce. Repeatedly mailing dead addresses is what gets a sending domain blocked.

Suppression vs unsubscribe

They are different lists. Unsubscribing sets a contact's status to unsubscribed, which stops marketing mail but still allows transactional mail. Suppression blocks an address entirely, whether or not a contact exists for it.