PATCH /webhooks/{id}
Update a subscription (merge)
| Scope | webhooks:write |
| Cost | Free |
PUT and PATCH both merge — any field you leave out keeps its current
value. (Normally PUT replaces the whole record, but here it behaves
exactly like PATCH; there's no replace-everything option.)
A body that contains no updatable field returns a 400, rather than silently
doing nothing.
Path parameters
| Name | Type | Required | Example | Description |
|---|---|---|---|---|
id | integer | yes | 2074 | The subscription id. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | no | A new label for the subscription. Omit to leave unchanged. |
description | string | no | A new note for the subscription. Send "" to clear it; omit to leave unchanged. |
url | string | no | A new delivery URL. http or https, max 1024 characters. Omit to leave unchanged. |
type | AccountRealTimeCalls | AccountEndedCalls | UserEndedCalls | AccountSMS | AccountAITranscription | no | The event a subscription fires on. Fetch the live list from GET /webhooks/types. |
enabled | boolean | no | Turn delivery on or off. Omit to leave unchanged. |
Point it at a new URL:
{
"url": "https://example.com/hook/v2"
}
Responses
200
The stored subscription, re-read after the write.
| Field | Type | Description |
|---|---|---|
id | integer | The subscription's id. |
name | string | A label for the subscription, for your own reference. |
description | string | A longer note about the subscription, for your own reference. |
url | string | Where events are delivered. http or https, max 1024 characters. |
type | AccountRealTimeCalls | AccountEndedCalls | UserEndedCalls | AccountSMS | AccountAITranscription | The event a subscription fires on. Fetch the live list from GET /webhooks/types. |
enabled | boolean | Whether events are being delivered. |
createdAt | string (RFC 3339) | When the subscription was created, RFC 3339 UTC. |
updatedAt | string (RFC 3339) | When the subscription was last changed, RFC 3339 UTC. |
Errors
| Status | Meaning |
|---|---|
400 | invalid_request — a missing or malformed field, an unknown enum value, or an unknown field in the body. Nothing was charged. |
401 | unauthenticated — no credential, or one that is invalid, revoked or expired. The WWW-Authenticate header names the scope the endpoint wanted. |
403 | Two different failures share this status; the type field tells them apart — insufficient_scope (the credential lacks the scope) or permission_denied (the scope is fine, but the user's role lacks the permission). |
404 | not_found — no such object, or it is not this account's. The two are deliberately indistinguishable. |
500 | internal_error — something failed on our side, not with your request. Safe to retry. |
See Errors for the full catalog and what to do about each.
Example
curl -X PATCH 'https://api.account.telebroad.com/api/public/v1/webhooks/2074' \
-H "Authorization: Bearer $TB_KEY" \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com/hook/v2"}'