List suppressions

GET/v1/suppressions

Secret key — sk_… or sk_test_… · Base URL https://api.volanea.com

The do-not-send list, newest first, cursor-paginated. Filter by reason to separate hard bounces from complaints, unsubscribes, and manual blocks.

Every send checks this list first, and a suppressed recipient comes back inside a 200 as { to, skipped: "suppressed" } rather than as an error — so a caller reading messages as "delivered" counts suppressions as successes.

To ask about a single address rather than page the whole list, use GET /v1/suppressions/check.

Query parameters

  • cursorstring

    Pagination cursor — an OPAQUE token. Take the `nextCursor` from the previous page and send it back unchanged. Do not parse it, do not coerce it to a number, and do not construct one: the format is `<unixMs>.<objectId>` today and may change. A cursor that cannot be parsed is rejected with 422 `validation_error` rather than silently restarting at page one.

  • limitinteger

    Page size (1–200, default 50).

  • reasonstring
    hard_bouncecomplaintmanualunsubscribe

Response

A page of suppressions.

  • dataobject[]required
    • suppressionIdstringrequired
    • projectIdstring
    • emailemailrequired
    • reasonenumrequired
      hard_bouncecomplaintmanualunsubscribe
    • sourcestring | null
    • createdAtdate-timerequired
  • nextCursorstring | nullrequired

    Opaque token. Pass back as `cursor` verbatim to fetch the next page; `null` when there are no more rows.

Errors

Every failure returns the standard envelope — branch on `code`, never on the wording of `error`.

  • 401Missing or invalid API key.
  • 422Request validation failed (code `validation_error`, 422).

Request

curl https://api.volanea.com/v1/suppressions?cursor=value&limit=50 \
  -H "Authorization: Bearer sk_..."

Response

200 · application/json

{
  "success": true,
  "data": {
    "data": [
      {
        "suppressionId": "<suppressionId>",
        "projectId": "<projectId>",
        "email": "ada@example.com",
        "reason": "hard_bounce",
        "source": "<source>",
        "createdAt": "2026-01-01T09:00:00.000Z"
      }
    ],
    "nextCursor": "<nextCursor>"
  }
}

92 endpoints · OpenAPI document