Suppressions
The suppression list holds every address the workspace will not email: no campaign, sequence, automation or one-off send reaches it. Reading needs the read:suppressions scope; adding and removing need write:suppressions (or * for both).
The Suppression object
| Field | Type | Notes |
|---|---|---|
id | string | Use it to remove the entry |
email | string | Stored in lower case |
reason | string | UNSUBSCRIBE (the person opted out, or an imported list), MANUAL (added through the API or by the assistant), BOUNCE (hard bounce), COMPLAINT (marked as spam) |
removable | boolean | false for BOUNCE and COMPLAINT |
createdAt | string (ISO 8601) | When it was added |
GET /api/v1/suppressions
Newest first, cursor-paginated.
| Parameter | Description |
|---|---|
reason | Only this reason |
email | Look up one address. Case-insensitive |
since | ISO 8601 datetime. Only entries added at or after it |
limit | 1 to 1000, default 100 |
cursor | The nextCursor from the previous page |
{
"suppressions": [
{ "id": "cmq8supp0alk34567890", "email": "ann@example.com", "reason": "UNSUBSCRIBE", "removable": true, "createdAt": "2026-09-27T14:02:00.000Z" }
],
"nextCursor": null
}POST /api/v1/suppressions
Records a manual opt-out and marks any contact with that address as opted out.
POST /api/v1/suppressions HTTP/1.1
Host: agentlyleads.com
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
{ "email": "ann@example.com" }Returns 201 with { "suppression": { ... }, "created": true }. Sending an address that is already listed is safe: it returns 200 with "created": false, and the entry keeps its original reason, so a bounce stays a bounce.
DELETE /api/v1/suppressions/{id}
Removes the entry and makes the address contactable again, clearing the opt-out flags on matching contacts.
{ "deleted": 1, "id": "cmq8supp0alk34567890", "email": "ann@example.com" }A hard bounce or spam complaint can't be removed through the API. Those come from the receiving mail server or the recipient, and mailing them again hurts your sending reputation. The API returns 409:
{ "error": "b@example.com is suppressed because of a hard bounce. That can only be removed by a person in Settings, Suppressions." }Errors
| Status | Meaning |
|---|---|
400 | Invalid email, reason, since, limit or cursor |
401 | Missing, malformed, expired or revoked API key |
403 | The key lacks the scope |
404 | No suppression with that ID in your workspace |
409 | A bounce or complaint, which only a person can remove |
429 | Rate limit exceeded |