List suppressions
GET
/v1/email/suppressions
bird email suppressions listcurl -X GET "https://us1.platform.bird.com/v1/email/suppressions" \
-H "Authorization: Bearer $TOKEN" \
--url-query "email=user@example.com" \
--url-query "limit=25"Response200
{
"data": [
{
"id": "sup_01krdgeqcxet5s7t44vh8rt9mg",
"email": "user@example.com",
"scope": {
"type": "workspace",
"id": "ws_01krdgeqcxet5s7t44vh8rt9mg"
},
"reason": "hard_bounce",
"origin": "bounce_event",
"applies_to": "all",
"source_email_id": "em_01krdgeqcxet5s7t44vh8rt9mg",
"source_recipient_id": "er_01krdgeqcxet5s7t44vh8rt9mg"
}
],
"next_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE0OjAzOjEwWlwiIiwiaSI6IjAxOTJmM2IxLTRjN2UtN2EyYi05ZDYxLThmM2E1YzJlN2I0MCJ9",
"prev_cursor": null,
"refresh_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE2OjQyOjAxWlwiIiwiaSI6IjAxOTJmM2IxLTllMDQtN2NkMy1iODE3LTJhNmY0ZDFjOGUwOSJ9"
}
Returns the workspace's suppressed email addresses as a paginated list, newest first. Pass a full address in the email parameter to look up a single address before sending to it.
An address can appear more than once because Bird keeps one suppression record per reason. Delivery stays blocked while any blocking record for the address remains.
Query Parameters
email
string
Case-insensitive prefix filter on the address. Returns every suppression whose address starts with this value. A full address finds that address's records, while a fragment such as alice finds every address beginning with it. The same address can match several records, one per suppression reason.
reason
string
Return only suppressions with this reason:
- hard_bounce: Delivery permanently failed.
- complaint: The recipient reported a message as spam.
- unsubscribe: The recipient opted out. Deprecated: unsubscribes are now recorded as messaging preferences rather than suppressions, so no new records carry this reason and existing ones are being moved. Expect this value to match nothing.
- manual: Added through the API or dashboard.
Possible values: hard_bounce, complaint, unsubscribe, manual
scope_type
string
Return only suppressions with this scope.
Every suppression is workspace-wide, so workspace returns all of
them without narrowing the results. The other five values,
category, audience, topic, contact and domain, always come
back with an empty page.
Possible values: workspace, category, audience, topic, contact, domain
limit
integer
Maximum number of items to return per page.
starting_after
string
Cursor from the next_cursor field of a previous list response. Returns items immediately after the cursor position in the current sort order.
ending_before
string
Cursor from the prev_cursor field of a previous list response. Returns items immediately before the cursor position in the current sort order.
Response Payload
data
array of object
required
Page of suppression records.
Show child attributes
data.id
string
required
data.email
string
required
The suppressed address, stored lowercase.
data.scope
object
required
Show child attributes
data.scope.type
string
required
How widely the email suppression applies. Responses currently use workspace, which blocks the address for every email sent by the workspace. WhatsApp suppressions use a separate list.
Possible values: workspace, category, audience, topic, contact, domain
data.scope.id
string
required
Public ID or alias of the scoped resource. For workspace scope, this is the workspace ID.
data.reason
string
required
Why the address is suppressed:
- hard_bounce: A delivery permanently failed.
- complaint: The recipient reported a message as spam.
- unsubscribe: The recipient opted out.
- manual: Added through the API or dashboard.
An address can hold one record per reason. This list grows over time. Treat unknown values as informational rather than rejecting the record.
Possible values (may grow over time): hard_bounce, complaint, unsubscribe, manual
data.origin
string
required
How the suppression came to exist:
- bounce_event: Created automatically from a hard bounce.
- complaint_event: Created from a spam complaint.
- unsubscribe_event: Created from an unsubscribe reported for a message, such as the recipient's mail client's unsubscribe action.
- unsubscribe_link: The recipient opted out through the unsubscribe page linked from a message.
- api_key: Added through the API with an API key.
- user: Added by a user in the dashboard.
This list grows over time. Treat unknown values as informational rather than rejecting the record.
Possible values (may grow over time): bounce_event, complaint_event, unsubscribe_event, unsubscribe_link, api_key, user
data.applies_to
string
required
Which sends the suppression blocks.
- all: blocks every message category, including transactional.
- non_transactional: blocks marketing but allows transactional messages. A recipient who complained or unsubscribed can therefore still receive mail such as password resets.
- category: scopes the block to a preference category and blocks every category until one is set.
This list grows over time, and any value other than non_transactional
blocks every category, so treat an unknown value as blocking the send.
Possible values (may grow over time): all, non_transactional, category
data.source_email_id
nullable string
ID of the email that triggered suppression. Null for manual additions.
data.source_recipient_id
nullable string
ID of the recipient event that triggered suppression. Null for manual additions.
data.created_at
string
required
When the address was suppressed.
next_cursor
nullable string
required
Cursor for the next page. Pass back as starting_after to advance forward. null when no next page exists.
prev_cursor
nullable string
required
Cursor for the previous page. Pass back as ending_before to step backward. null when no previous page exists.
refresh_cursor
nullable string
required
Refresh anchor. Pass back as ending_before later to fetch items that have appeared since this response. Non-null whenever data is non-empty; null only on an empty page. Distinct from prev_cursor.