Pre-check a recipient or list the org's suppression rows
GET /v1/suppressions
With ?recipient= this is the read-only PRE-CHECK: does the CALLER’S OWN ORG suppress this recipient, and which org rows match (returns SuppressionPrecheck). Without ?recipient= it is the paged list of the caller’s own org suppression rows (returns SuppressionPage). Both are strictly scoped to the key’s customer: global/shared_domain/cross-tenant rows are NEVER returned (R4 non-leakage).
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Present ⇒ pre-check that address; absent ⇒ list. Canonicalized server-side.
Optional list filter (only ‘org’ rows are visible here).
List: include soft-revoked rows (default active-only).
Page size for the cursor-paginated agent surface (default 50; clamped to the 1-100 range).
Opaque list pagination cursor.
Responses
Section titled “ Responses ”A SuppressionPrecheck (when ?recipient= is set) or a SuppressionPage.
The paged list of the caller’s own org suppression rows (newest-first).
object
One recipient opt-out (suppression) row visible to the caller’s own org. Only org-scope rows are ever returned to the agent/console planes; global and shared_domain rows are operator-only. Rows soft-revoke (revoked_at/by/reason) rather than delete, so opt-out history outlives tenant lifecycle.
object
Opaque suppression id (sup_…).
Canonicalized recipient address (NFC, punycode domain, lower-cased).
The address as originally received.
Always ‘org’ on these planes (global/shared_domain are operator-only).
Set on a recipient-chosen ‘just this sender’ narrow row.
The sending mailbox that prompted the opt-out (audit).
Cumulative unsub→revoke→unsub cycles for this row (the §7 abuse input).
Set when the row was soft-revoked.
Opaque cursor for the next page; absent on the last page.
GET /v1/suppressions?recipient= pre-check result: whether the CALLER’S OWN ORG has an active suppression for the recipient, plus those org rows. Reflects only the caller’s org state; never a global/shared/cross-tenant opt-out (R4 non-leakage).
object
The canonicalized recipient that was checked.
True iff the caller’s org has an active suppression for the recipient.
One recipient opt-out (suppression) row visible to the caller’s own org. Only org-scope rows are ever returned to the agent/console planes; global and shared_domain rows are operator-only. Rows soft-revoke (revoked_at/by/reason) rather than delete, so opt-out history outlives tenant lifecycle.
object
Opaque suppression id (sup_…).
Canonicalized recipient address (NFC, punycode domain, lower-cased).
The address as originally received.
Always ‘org’ on these planes (global/shared_domain are operator-only).
Set on a recipient-chosen ‘just this sender’ narrow row.
The sending mailbox that prompted the opt-out (audit).
Cumulative unsub→revoke→unsub cycles for this row (the §7 abuse input).
Set when the row was soft-revoked.
Invalid request.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMissing or invalid credential.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeAuthenticated but lacking the required scope, or out of quota.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scope