DocsAPI reference

Update an alert channel

Changes an existing channel's settings, without its destination.

patch/api/alerts/{policy_id}
Authentication
Bearer token
Body
application/json
Version
2026-09-03

PUT /api/alerts keys on (org_id, channel, destination) and the list endpoint never returns a raw destination, so before this route existed the only way to change a quiet hour from the dashboard was to ask the customer to re-type their own phone number. It is addressed by id instead.

The destination and the channel cannot be changed here, and verified_at is left alone - the number has not moved, so the proof still holds. To point alerts at a different number, create that channel and verify it.

Path parameters#

  • policy_idstringrequired

Headers#

  • Idempotency-Keystring

    A unique key of your choosing, so this request can be retried safely. The first request with a given key executes; every replay returns that first response unchanged, with Idempotent-Replay: true set.

    Generate one key per action, not per session - reusing a key with a different body is refused with 422 rather than silently replaying the wrong answer. Keys are remembered for 24 hours. A request that failed releases its key, so a retry after fixing the payload runs normally.

    Up to 255 characters

Request body#

application/json · required

PolicyPatch

  • agent_idstring | null
  • daily_capinteger | null

    ≥ 1 and ≤ 2000

  • digeststring | null

    Pattern: ^(none|daily|weekly)$

  • digest_hourinteger | null

    ≥ 0 and ≤ 23

  • digest_weekdayinteger | null

    ≥ 0 and ≤ 6

  • eventsarray of string | null
  • intensitystring | null

    Pattern: ^(off|critical|leads|all|digest)$

  • is_activeboolean | null
  • labelstring | null

    Up to 120 characters

  • min_lead_scoreinteger | null

    ≥ 0 and ≤ 100

  • quiet_endinteger | null

    ≥ 0 and ≤ 23

  • quiet_startinteger | null

    ≥ 0 and ≤ 23

  • timezonestring | null

    Up to 64 characters

Responses#

  • 200OKapplication/json

    object

    5 response headers
    RateLimit-Limit

    Requests permitted in the current window.

    RateLimit-Remaining

    Requests left in the current window. Back off before it reaches 0.

    RateLimit-Reset

    Seconds until the current window resets.

    X-API-Version

    The dated version of the API contract that served this response, e.g. 2026-09-03. Pin against it; it changes only when a response shape changes incompatibly.

    X-Request-ID

    Quote this in a support request to identify the call.

  • 422Validation error

    The shared error envelope, served as application/problem+json with error.code set to validation_error. Its details name each field that failed and why.

Errors#

Failures use one envelope on every endpoint, described in Retries, versioning and limits. The codes you are most likely to meet here:

  • validation_error · 422 — The payload was well-formed JSON but failed schema validation.
  • unauthenticated · 401 — The request carried no API key, or one the API could not verify.
  • forbidden · 403 — The key is valid, but it is not allowed to do this — either the scope is missing or the resource belongs to another workspace.
  • idempotency_key_reused · 422 — This `Idempotency-Key` was used before, for a request with a different body.
  • rate_limited · 429 — Too many requests in the current window. The limit is per workspace, and some endpoints add a per-agent limit on top.

More Alerts endpoints#

Something unclear or missing? Tell us and we’ll fix it.