Developer guideEvents
Suppression
Couryo's suppression list protects your reputation. Reasons, streams, and how to list, add and remove addresses through the API.
The suppression list holds addresses Couryo will no longer send to. It protects your reputation: insisting on an address that does not exist, or on someone who complained, drags down delivery of all your email.
Reasons#
reason |
When it is added | Applies to |
|---|---|---|
hard_bounce |
the address does not exist (5.1.x) |
all streams |
complaint |
the recipient marked the email as spam | all streams |
unsubscribe |
the recipient unsubscribed | only the stream they unsubscribed from (usually marketing) |
manual |
you added it | the stream you choose |
A marketing unsubscribe never blocks transactional email: someone who left the newsletter still gets the password reset.
What happens when sending#
If some recipients are suppressed, the email goes to the others and the timeline gets a suppressed event for each skipped address. If every recipient is suppressed, the send is refused with 422 recipient_suppressed, and param points to the first one (to[0]). In a batch, only the affected item is refused.
Temporary bounces (4.x.x) also lead to suppression when the same address bounces on 3 different days.
List#
curl "https://api.couryo.com/v1/suppressions?limit=25" \
-H "Authorization: Bearer $COURYO_API_KEY"{
"data": [
{ "email": "maria@company.com", "reason": "hard_bounce", "stream": "all", "created_at": "2026-10-07T18:31:04Z" }
],
"has_more": false
}Add#
curl https://api.couryo.com/v1/suppressions \
-H "Authorization: Bearer $COURYO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "email": "do-not-send@example.com", "stream": "marketing" }'Remove#
curl -X DELETE https://api.couryo.com/v1/suppressions/maria@company.com \
-H "Authorization: Bearer $COURYO_API_KEY"The address leaves every stream (204). Remove an address only when you are sure the problem is solved (for example, the person confirmed the address works again).
Scopes and filters#
- Listing needs the
readscope; adding and removing,admin. - The list accepts
q(part of the address),reasonandlimit(default 100), withstarting_afterfor the next page. - Added addresses always get the
manualreason;streamcan betransactional,marketingorall(default). An address already on the list returns409 already_suppressed.