Skip to content

POST /api/public/v1/suppressions ​

Adds phone numbers to your organization's do-not-call list. Use it to sync the opt-outs your own systems receive — a reply to an email, a web form, a complaint to your call centre — so that nobody on this platform calls those numbers on your behalf.

PropertyValue
MethodPOST
Path/api/public/v1/suppressions
Scopescontact:write
Org kindBuyer organizations only
Cost10 rate-limit tokens
Numbers1–1000 per request
RetriesSafe without a key; idempotency-key replays the counts

Nothing added can be removed. The list has no delete route, here or in the dashboard. A number stays on it for five years after the latest time it was added, and adding it again restarts that period. Send only numbers whose owners asked not to be called.

The list is write-only through the API. There is no route that reads it or checks a number against it: a key cannot be used to learn who has opted out. Calls placed through the platform are checked against it automatically.

Request ​

json
{
  "numbers": ["0821234567", "+27 83 765 4321"],
  "note": "Unsubscribed via our website"
}
FieldTypeRequiredNotes
numbersstring[]Yes1–1000, each ≤ 40 characters. A national number is read as South African.
notestringNo≤ 500 characters, shown beside the entry in the dashboard.

Numbers are normalised to E.164 before they are stored, so 082 123 4567, 0027821234567 and +27821234567 are the same number. A number that is not valid for its country is reported, not fatal: the rest of the request is still added.

Response ​

200, with how the numbers landed:

json
{
  "data": {
    "added": 1,
    "already": 1,
    "invalid": []
  }
}
FieldTypeMeaning
addednumberNumbers that were not on the list before this request.
alreadynumberNumbers that were already on it. Their five years restart from now.
invalidstring[]Entries that are not a valid phone number, as you sent them. Nothing was added.

Errors ​

StatusCodeWhen
400INVALID_INPUTNo numbers, more than 1000, or an entry over 40 chars.
403FORBIDDENThe key lacks contact:write, or the org is not a buyer.
429TOO_MANY_REQUESTSThe key's rate limit is spent. See rate limits.

See errors for the envelope.

Source ​

ValueSource
Request and response shapesSuppressionSchema.api, SuppressionSchema.api_result in src/lib/schema/suppression/suppression.schema.ts
Per-request bound, costSUPPRESSION.ADD_MAX, SUPPRESSION.API_COST in src/lib/const/suppression.const.ts
RetentionSUPPRESSION.RETENTION