Skip to content
On this site

Suppressions

The addresses this team will not send to, and the reason each one is on the list.

Why the list exists

Sending again to an address that hard-bounced or reported you as spam is the fastest way to lose the ability to send at all. So a suppressed address is skipped before the message is handed to the mail provider: the send is recorded as email.suppressed rather than delivered, and your webhook is told which address and why.

Suppression origins
OriginMeans
bounceA hard bounce. The mailbox does not exist or refused us permanently.
complaintThe recipient marked a message as spam.
manualYou added it, through the API or the dashboard.

Working with the list

  • Suppressions are per team, not per domain or per key.
  • Retrieving by address — GET /suppressions/{address} — answers "may I send to this person?" without listing anything.
  • Removing a suppression a bounce created will send to an address that already rejected you. Do it when you know the mailbox is back, not to clear a number.

Endpoints

POST /suppressions

Stop sending to one address.

Body

Body
FieldTypeDescription
email*stringThe address to suppress.
curl -X POST "https://api.rasket.com/suppressions" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "ronald.williams@example.com"
}'

Response 201

{
  "object": "suppression",
  "id": "sup_2c9a7f10b4"
}
  • A suppression added this way has origin: manual. Hard bounces and complaints add their own with origin: bounce or complaint.
  • Suppressions are per team. A send to a suppressed address is recorded as email.suppressed rather than delivered.

GET /suppressions

Every suppressed address, newest first.

Query parameters

Query parameters
FieldTypeDescription
originstringFilter by bounce, complaint or manual.
limitintegerHow many items to return, 1–100. Defaults to 20.
afterstringReturn the page that follows this item ID. Mutually exclusive with before.
beforestringReturn the page that precedes this item ID. Mutually exclusive with after.
curl -X GET "https://api.rasket.com/suppressions?origin=bounce&limit=20" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0"

Response 200

{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "id": "sup_2c9a7f10b4",
      "email": "ronald.williams@example.com",
      "origin": "bounce",
      "source_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
      "created_at": "2026-09-09T10:16:44.902Z"
    }
  ]
}
  • source_id names the email that caused the suppression, when one did.

GET /suppressions/{suppression}

Look one up by ID or by address.

Path parameters

Path parameters
FieldTypeDescription
suppression*stringEither the suppression's ID or the suppressed email address.
curl -X GET "https://api.rasket.com/suppressions/ronald.williams@example.com" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0"

Response 200

{
  "object": "suppression",
  "id": "sup_2c9a7f10b4",
  "email": "ronald.williams@example.com",
  "origin": "bounce",
  "source_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
  "created_at": "2026-09-09T10:16:44.902Z"
}
  • Passing an address is the useful form: it answers "may I send to this person?" without listing anything.

DELETE /suppressions/{suppression}

Allow sending to the address again.

Path parameters

Path parameters
FieldTypeDescription
suppression*stringEither the suppression's ID or the suppressed email address.
curl -X DELETE "https://api.rasket.com/suppressions/ronald.williams@example.com" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0"

Response 200

{
  "object": "suppression",
  "id": "sup_2c9a7f10b4",
  "deleted": true
}
  • Removing a suppression a hard bounce created will send to an address that already rejected you once. Do it only when you know the mailbox is back.

POST /suppressions/batch/add

Up to 100 addresses in one request.

Body

Body
FieldTypeDescription
emails*string[]The addresses to suppress, 100 at most.
curl -X POST "https://api.rasket.com/suppressions/batch/add" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0" \
  -H "Content-Type: application/json" \
  -d '{
  "emails": ["ronald.williams@example.com", "ada@example.com"]
}'

Response 201

{
  "data": [
    {
      "object": "suppression",
      "id": "sup_2c9a7f10b4"
    },
    {
      "object": "suppression",
      "id": "sup_71f0c4b2ad"
    }
  ]
}
  • An address already suppressed is left as it is rather than duplicated or refused.

POST /suppressions/batch/remove

Up to 100 at once, by address or by ID.

Body

Body
FieldTypeDescription
emailsstring[]Addresses to unsuppress. Send this or ids, never both.
idsstring[]Suppression IDs to remove. Send this or emails, never both.
curl -X POST "https://api.rasket.com/suppressions/batch/remove" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0" \
  -H "Content-Type: application/json" \
  -d '{
  "emails": ["ronald.williams@example.com"]
}'

Response 200

{
  "data": [
    {
      "object": "suppression",
      "id": "sup_2c9a7f10b4",
      "deleted": true
    }
  ]
}
  • Send emails or ids — sending both, or neither, is 422 invalid_parameter.
  • An address that is not currently suppressed is skipped rather than refused.