- authentication
- Secret API key as a bearer token
- billing
- Free.
The account's suppression list, newest first, 100 entries per page. Every undeliverable verdict adds the address in normalized form (lowercased, plus-tag stripped, Gmail dots folded) with source auto; imports arrive with source imported; bounces and complaints reported through the feedback endpoints arrive with source feedback. Batch, bulk and monitor runs answer suppressed addresses from the stored verdict at no cost; a single lookup always re-verifies, and a verdict other than undeliverable removes only an entry with source auto; a bounce you reported leaves when you report a delivery to that address, and an import or a complaint only when you remove it. A complaint about an address you imported is recorded on that entry (reason complained), which stays an import. Imports and complaints never go stale: they are served for as long as they stand. Any other entry untouched for 90 days is re-verified instead of trusted.
Every filter is optional and they combine. value looks one address up: it is normalized the same way the list stores it, so [email protected] finds the entry filed as [email protected]. An address that does not parse matches nothing. An unparseable date or an out-of-range per_page is a 422, not a silently unfiltered page.
Parameters
| name | in | type | description |
|---|---|---|---|
| value | query | string | One address, in any spelling of it. Normalized before it is matched. At most 500 characters. |
| source | query | string | Only entries this source added. One of: auto, imported, feedback. |
| reason | query | string | Only entries carrying this verdict reason. At most 64 characters. |
| since | query | string | Only entries added on or after this date. |
| until | query | string | Only entries added on or before this date. A bare date means the whole of that day. |
| page | query | integer | The page to return. Default: 1. |
| per_page | query | integer | Entries per page, up to 500. Default: 100. |
Example request
curl https://spaw.co/api/v1/email/suppressions \ -H "Authorization: Bearer sk_live_…"
This endpoint has no console on its page. It answers with records from your own account, often by an id only you have, rather than about a value you can type here. The dashboard lists the same rows.
Responses
200One page of entries.
{
"success": true,
"data": {
"suppressions": [
{
"id": 9041,
"email": "[email protected]",
"reason": "mailbox_not_found",
"source": "auto",
"added_at": "2026-09-02T08:30:00+00:00"
},
{
"id": 9040,
"email": "[email protected]",
"reason": null,
"source": "imported",
"added_at": "2026-09-01T17:02:11+00:00"
}
]
},
"meta": {
"page": 1,
"per_page": 100,
"total": 2
}
}401The key is missing, malformed, or revoked.
{
"success": false,
"error": {
"code": "UNAUTHENTICATED",
"message": "Provide a valid API key as a bearer token.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}429Over 5 requests per second for the key. Retry after the limit resets.
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the limit resets.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}Error codes
Failures answer { success: false, error: { code, message, request_id } }. Each code has its own page.