How addresses get suppressed
There are two sources:Automatic
A hard bounce or a spam complaint adds the recipient to the list automatically, with
reason hard_bounce or complaint. This is the important one — it’s how Drin keeps you from emailing addresses that hurt your reputation.Manual
You can add an address yourself — an unsubscribe from your own UI, a support request, a known-bad address — with
reason manual.Reasons. The
reason field is one of hard_bounce, complaint, unsubscribe, or manual. Automatic entries set it for you; manual additions accept only manual.List suppressed addresses
GET /v1/suppressions
A cursor-paged list of suppressed addresses, newest first. Each entry is { email, reason, createdAt }.
Response
Add an address
POST /v1/suppressions
Add an address by hand. Only email is required; reason defaults to manual. Adding the same address twice is idempotent — it stays on the list once.
Remove an address
DELETE /v1/suppressions
Remove an address with the email query parameter (URL-encode the @). After removal you can send to it again.
The suppressed response
Suppression is applied per recipient. If some recipients are suppressed, they’re dropped and the send proceeds to the rest. If every recipient is suppressed there’s nothing left to send, so the request fails with 409 and type: "suppressed" — and no message is created:
409 suppressed
Not the same as a partial drop. A
suppressed 409 means nothing went out. When only some recipients are suppressed you get a normal 202 for the survivors — there’s no error and no signal in the response that an address was skipped. Check the list if you need to know which addresses are blocked.Related
Contacts
The address book and its own subscribe/unsubscribe state, separate from suppressions.
Deliverability
Why bounces and complaints matter, and how to keep both low.
Errors
The full error envelope and every
type, including suppressed.Suppressions API
Parameters and response schemas for each endpoint.
