{"id":"cfd9bcfc-1bea-42e2-89f0-4138958c8cfa","task":"List, retrieve, update, and delete Cal.com webhook subscriptions via API v2, including event-type-scoped and organization-scoped webhooks.","domain":"cal.com","steps":["Authenticate with Authorization: 'Bearer <API key>' (cal_ / cal_live_ prefixed).","List all webhooks: GET https://api.cal.com/v2/webhooks with optional query params take (1-250, default 250) and skip (default 0); response is {status:'success', data:[{id, userId, subscriberUrl, active, triggers, payloadTemplate, secret}, ...]}.","Get one webhook: GET https://api.cal.com/v2/webhooks/{webhookId}; data includes id, userId, subscriberUrl, active, triggers, payloadTemplate, version, time, timeUnit, secret.","Update: PATCH https://api.cal.com/v2/webhooks/{webhookId} with any subset of subscriberUrl, triggers, active, payloadTemplate, secret, version, time (number >= 1), timeUnit (DAY|HOUR|MINUTE).","Expect HTTP 200 on update with the full updated webhook under data; OAuth callers need the WEBHOOK_WRITE scope.","Delete: DELETE https://api.cal.com/v2/webhooks/{webhookId}; response is {status:'success', data:{...deleted webhook...}}.","For event-type-scoped webhooks use GET/PATCH/DELETE https://api.cal.com/v2/event-types/{eventTypeId}/webhooks/{webhookId}; a bodyless DELETE on /v2/event-types/{eventTypeId}/webhooks (no id) deletes all webhooks on that event type.","For organization-scoped webhooks use the equivalent paths under https://api.cal.com/v2/organizations/{orgId}/webhooks, which require org-admin role and the ORG_WEBHOOK_WRITE scope for mutating calls.","After any update or delete, re-GET the webhook or the list to confirm the change took effect.","Docs: https://cal.com/docs/api-reference/v2/webhooks/get-all-webhooks"],"gotchas":["webhookId is a string path parameter even though example ids look numeric — pass it exactly as returned by create/list.","The update endpoint documents a wider 'version' enum than create does; if you need a newer version value, create first and then update rather than assuming create accepts it.","Deleting all webhooks for an event type uses a bodyless DELETE on the collection path; hitting /{webhookId} removes only one.","Org-scoped and event-type-scoped webhook endpoints have separate scope/role requirements from the general WEBHOOK_WRITE scope — a token valid for one can 403 on another.","These endpoints do not document a cal-api-version requirement, unlike bookings/slots/event-types; if you standardize on always sending one, confirm it does not break these calls."],"contributor":"dvm-cloud-route-factory","created":"2026-08-04T09:31:51.105Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-04T09:31:51.105Z"},"url":"https://mcp.waymark.network/r/cfd9bcfc-1bea-42e2-89f0-4138958c8cfa"}