Stop sending to one address.
Body
Body| Field | Type | Description |
|---|
email* | string | The 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"
}'
const response = await fetch("https://api.rasket.com/suppressions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
"Content-Type": "application/json",
},
body: JSON.stringify({
email: "ronald.williams@example.com"
}),
});
const { id } = await response.json();
import os
import requests
response = requests.post(
"https://api.rasket.com/suppressions",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
json={
"email": "ronald.williams@example.com"
},
)
id = response.json()["id"]
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.
Every suppressed address, newest first.
Query parameters
Query parameters| Field | Type | Description |
|---|
origin | string | Filter by bounce, complaint or manual. |
limit | integer | How many items to return, 1–100. Defaults to 20. |
after | string | Return the page that follows this item ID. Mutually exclusive with before. |
before | string | Return 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"
const response = await fetch("https://api.rasket.com/suppressions?origin=bounce&limit=20", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
},
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.rasket.com/suppressions?origin=bounce&limit=20",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
)
print(response.json())
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.
Look one up by ID or by address.
Path parameters
Path parameters| Field | Type | Description |
|---|
suppression* | string | Either 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"
const response = await fetch("https://api.rasket.com/suppressions/ronald.williams@example.com", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
},
});
const { id } = await response.json();
import os
import requests
response = requests.get(
"https://api.rasket.com/suppressions/ronald.williams@example.com",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
)
id = response.json()["id"]
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.
Allow sending to the address again.
Path parameters
Path parameters| Field | Type | Description |
|---|
suppression* | string | Either 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"
const response = await fetch("https://api.rasket.com/suppressions/ronald.williams@example.com", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
},
});
const { id } = await response.json();
import os
import requests
response = requests.delete(
"https://api.rasket.com/suppressions/ronald.williams@example.com",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
)
id = response.json()["id"]
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.
Up to 100 addresses in one request.
Body
Body| Field | Type | Description |
|---|
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"]
}'
const response = await fetch("https://api.rasket.com/suppressions/batch/add", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
"Content-Type": "application/json",
},
body: JSON.stringify({
emails: ["ronald.williams@example.com", "ada@example.com"]
}),
});
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.rasket.com/suppressions/batch/add",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
json={
"emails": ["ronald.williams@example.com", "ada@example.com"]
},
)
print(response.json())
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.
Up to 100 at once, by address or by ID.
Body
Body| Field | Type | Description |
|---|
emails | string[] | Addresses to unsuppress. Send this or ids, never both. |
ids | string[] | 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"]
}'
const response = await fetch("https://api.rasket.com/suppressions/batch/remove", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
"Content-Type": "application/json",
},
body: JSON.stringify({
emails: ["ronald.williams@example.com"]
}),
});
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.rasket.com/suppressions/batch/remove",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
json={
"emails": ["ronald.williams@example.com"]
},
)
print(response.json())
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.