Documentation
Sign inGet started

List suppressions

GET
/v1/email/suppressions
bird email suppressions list
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: we keep one suppression record per reason, and 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, so a full address finds that address's records and 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.
  • 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 and there is nothing to narrow down. 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 wide this suppression reaches. It is always workspace, which means the address is blocked for every email your workspace sends. The id beside it is then your workspace ID.
This only affects email. Your WhatsApp suppressions are a separate list, and blocking an address here does nothing to them.
The enum lists five narrower values as well: category, audience, topic, contact and domain. You will never get one of them back, because every suppression is workspace-wide. If you are writing code, you can treat this field as always reading workspace.
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 (ws_-prefixed).
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, so a recipient who complained or unsubscribed can still receive mail like 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.