Release a suppressed number

View as Markdown
Removes **one** number from the suppression list, so outbound calls, WhatsApp templates and campaign email can reach it again. Lifting a suppression is the step that can create a violation, so a written `justification` is required and stored in the audit log. The phone number is not normalized. It must match the stored E.164 value exactly (for example `+573001234567`, not `300 123 4567`). When nothing matches, `removed` is `false`. There is no bulk release. Re-importing a shorter list does not remove numbers either. Releasing a number does not change the contact's own status. A contact marked do-not-call is still blocked by the DNC checks in `POST /api/compliance/check-call`. **Side effects.** Permanently deletes one suppression row, losing its original reason and date. Writes an audit entry (`release_suppression`) with the number, `removed` and the justification. **Idempotency.** Safe to retry. A repeat returns `removed: false`. **Access** - **Required scope:** `full`. Signed-in users need the `owner` or `admin` role. - **Rate limit:** General API — 120 (Starter), 200 (Growth), 300 (Business) or 600 (Enterprise) requests/min per workspace. See [Rate limits](/rate-limits). - **Plan:** Available on every plan.

Authentication

AuthorizationBearer
Workspace API key: `jl_` followed by 64 lowercase hex characters, created by the workspace owner in the dashboard (**Settings → API Keys**) and sent as `Authorization: Bearer jl_...`. The plaintext is shown once, at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys. | Scope | GET / HEAD | POST / PUT / PATCH / DELETE | Admin-only routes | | --- | --- | --- | --- | | `read` | Yes | No | No | | `write` | Yes | Yes | No | | `full` | Yes | Yes | Yes | Operations restricted to admins or owners reject keys without the `full` scope with `403`, and say so in their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret — that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds. See [Authentication](/authentication).

Request

This endpoint expects an object.
phoneNumberstringRequired5-32 characters

The suppressed number, exactly as stored (E.164).

justificationstringRequired10-500 characters
Why the number may be contacted again, e.g. evidence of renewed consent. Stored in the audit log.

Response

Whether a row was removed.
dataobject

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
429
Too Many Requests Error