API referenceSuppressions

Add a suppression

POST
/v1/suppressions

API-added suppressions are always stored as reason: "manual" — any reason supplied in the body is ignored (hard_bounce/ complaint/unsubscribe are set only by the verified events pipeline). Upserts on (tenant_id, email).

Authorization

bearerAuth
headerAuthorizationBearer <token>

API key sent as Authorization: Bearer <key>. Looked up by SHA-256 hash (email_core::sha256_hex) against api_keys.hash; revoked keys and keys belonging to a suspended tenant are rejected. See the top-level Authentication section for permission levels.

Request Body

application/json
  1. body
email*string
Formatemail
reason?string

Accepted but ignored; always stored as manual.

Response Body

Added.

application/json
  1. response
email?string
reason?"manual"
Value in"manual"
curl -X POST "https://example.com/v1/suppressions" \  -H "Content-Type: application/json" \  -d '{    "email": "user@example.com"  }'
{  "email": "string",  "reason": "manual"}