Documentation
Sign inGet started

Add a suppression

POST
/v1/email/suppressions
curl -X POST "https://us1.platform.bird.com/v1/email/suppressions" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jane@example.com"
  }'
Adds an email address to the suppression list, stopping all email to it. The record is created with reason manual and blocks every message category, including transactional.
Adding is idempotent: a 201 means a new record was created, and a 200 means a manual suppression for the address already existed and is returned unchanged. An address suppressed for another reason (for example hard_bounce) gets a separate manual record, and delivery stays blocked until every blocking record is removed.
Request Payload
email
string
required
The address to stop sending to. Normalized before storage and matching: lowercased and trimmed of surrounding whitespace.
Response Payload
id
string
required
email
string
required
The suppressed address, stored lowercase.
scope
object
required
Show child attributes
scope.type
string
required
The scope this suppression applies to. Suppressions are currently workspace-scoped; the other scope types are reserved for future use.
Possible values: workspace, category, audience, topic, contact, domain
scope.id
string
required
Public ID or alias of the scoped resource. For workspace scope, this is the workspace ID (ws_-prefixed).
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), or 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
origin
string
required
How the suppression came to exist: bounce_event (created automatically from a hard bounce), complaint_event (from a spam complaint), unsubscribe_event (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), or 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
applies_to
string
required
Which sends the suppression blocks. all blocks every message category, including transactional. non_transactional blocks marketing and future non-transactional categories but allows transactional, so a recipient who complained or unsubscribed can still receive mail like password resets. category is reserved for category-specific preferences. This list grows over time; treat an unknown value as blocking at least non-transactional mail.
Possible values (may grow over time): all, non_transactional, category
source_email_id
nullable string
ID of the email that triggered suppression. Null for manual additions.
source_recipient_id
nullable string
ID of the recipient event that triggered suppression. Null for manual additions.
created_at
string
required
When the address was suppressed.