Compliance
Add Suppression
Suppress an email, phone, domain or LinkedIn URL. 409 (with `existing_id`) if present. In-flight sequence enrollments of matching leads that can no longer reach them on any channel they use stop (`suppressed`).
API key access
Needs the
compliance:write scope with an API key (ro_pat_...). A signed-in session uses the caller's role.POST
/api/v1/suppressionsAuthorizationBearer <token>
Access token from /api/v1/auth/login, or an API key (ro_pat_..., RO-176) from /api/v1/workspaces/current/api-keys: the key implies its workspace and needs the route's scope. MCP connectors (/api/v1/mcp only) may use an OAuth access token (ro_oat_..., RO-284).
In: header
Header Parameters
X-Workspace-Id?string | null
Id of the workspace to act on (must be a member).
kindSuppressionKind
Value in
"email" | "phone" | "domain" | "linkedin"valuestring
Length
1 <= length <= 500reason?SuppressionReason
Default
"manual"channels?array<Channel> | null
Channels blocked; omit or null for every channel
source?string | null
Length
length <= 64note?string | null
Length
length <= 2000Response Body
curl -X POST "http://localhost:8000/api/v1/suppressions" \ -H "X-Workspace-Id: string" \ -H "Content-Type: application/json" \ -d '{ "kind": "email", "value": "ana@example.com" }'{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",
"kind": "email",
"value": "string",
"reason": "opt_out",
"channels": [
"email"
],
"source": "string",
"note": "string",
"created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
"created_at": "2019-08-24T14:15:22Z"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}