---
title: "Update, disable, re-enable or rotate"
method: PATCH
path: "/v1/webhooks/{id}"
tags: ["Delivery webhooks"]
---

# Update, disable, re-enable or rotate

`PATCH /v1/webhooks/{id}`

## Request

- Base URL: `https://api.cadencercs.com`
- URL: `https://api.cadencercs.com/v1/webhooks/{id}`
- Auth: HTTP bearer

Setting `active: true` on a disabled endpoint also clears its failure history — otherwise it would be disabled again by its past rather than by anything it did after the fix.

`brandId` is fixed at creation: delete and re-create to change scope. Unknown fields are rejected rather than ignored.

## Path parameters

- `id` string, required

## Request body

- object
  - `url` string
  - `events` string[]
  - `description` string, nullable
  - `active` boolean: `false` pauses delivery; `true` resumes and clears the failure count.
  - `rotateSecret` boolean: Issues a new signing secret and returns it once. The previous one stops verifying immediately.

## Response `200`

Updated. Carries `secret` only when rotated.

- object: An endpoint **we POST to** when something happens on your conversations. The opposite direction from `PUT /v1/agents/{id}/webhook`, which points *Google* somewhere other than Cadence.
  - `id` string, required
  - `url` string, required: Your https:// endpoint.
  - `events` string[], required
  - `brandId` string, nullable: Null means every brand on the account.
  - `description` string, nullable
  - `active` boolean, required: False once disabled, whether by you or by repeated failure.
  - `health` object
    - `lastSuccessAt` string, nullable
    - `lastFailureAt` string, nullable
    - `lastError` string, nullable
    - `consecutiveFailures` number: Consecutive *events* that failed every retry — not attempts. One slow afternoon does not count.
    - `disabledAt` string, nullable
    - `disabledReason` string, nullable
  - `createdAt` string
  - `secret` string: Only present when `rotateSecret` was true.
  - `note` string

## Other responses

- `400`: Bad URL, unknown event name, or unknown field.
- `401`: Not signed in, and no account-linked API key was sent.
- `404`: No such webhook on this account.
- `500`: Unexpected server error. The body is always JSON.

---

[API](https://skmtc.dev/cadencercs/apis/cadence-api.md) · [All operations](https://skmtc.dev/cadencercs/apis/cadence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cadencercs/apis/cadence-api/revisions/9438443c2081?raw)
