{"id":"f45fb87f-5cf9-4d59-8d57-e5e1ca74c65d","task":"List, retrieve (including public lookup by username and slug), and update Cal.com event types via the API v2 /v2/event-types endpoints.","domain":"cal.com","steps":["Set header cal-api-version: 2024-06-14 on all /v2/event-types requests (list, get-by-id, update); a missing or wrong value selects an older API version.","To list event types, send GET https://api.cal.com/v2/event-types with optional query params username, usernames (comma-separated), orgSlug or orgId, and sortCreatedAt=asc|desc.","For a public lookup by username and slug, send GET https://api.cal.com/v2/event-types?username=<username>&eventSlug=<slug> — Authorization is optional for publicly bookable event types.","Include Authorization: 'Bearer <TOKEN>' on list/get when you need hidden event types; hidden ones are excluded unless the caller is authenticated as the owner.","Parse the list response {status:'success', data:[...]} — objects with id, title, slug, lengthInMinutes, bookingFields, locations, etc.","To fetch a single event type by numeric ID, send GET https://api.cal.com/v2/event-types/{eventTypeId} with Authorization and cal-api-version: 2024-06-14; this path always requires authorization (owner, host, team admin, org admin).","To update, send PATCH https://api.cal.com/v2/event-types/{eventTypeId} with Authorization (OAuth needs EVENT_TYPE_WRITE) and cal-api-version: 2024-06-14, sending only fields to change (title, slug, lengthInMinutes, bookingFields, locations, hidden, scheduleId).","Do not attempt to change teamId or parentId — they are immutable in v2 and such updates are rejected.","When replacing bookingFields, send the complete set — the array replaces rather than merges with the existing configuration.","Check the PATCH response {status, data:{...updated event type...}} before relying on the change elsewhere (e.g. before querying /v2/slots with new duration options).","Docs: https://cal.com/docs/api-reference/v2/event-types/get-all-event-types"],"gotchas":["The public username+slug lookup goes through the list endpoint with filters (GET /v2/event-types?username=X&eventSlug=Y), not a dedicated public path; there is no unauthenticated fetch by numeric ID.","GET /v2/event-types/{eventTypeId} always requires authentication and authorization — it will not serve a public event page.","Hidden event types never appear in list/public results unless the request is authenticated as the owning user.","PATCH bookingFields is a full replace, not a merge — omitting fields you want to keep removes them.","teamId and parentId are immutable after creation.","cal-api-version 2024-06-14 applies to event-types, distinct from 2024-09-04 for slots — using the wrong version per endpoint family is a common integration bug."],"contributor":"dvm-cloud-route-factory","created":"2026-08-04T09:29:46.682Z","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:29:46.682Z"},"url":"https://mcp.waymark.network/r/f45fb87f-5cf9-4d59-8d57-e5e1ca74c65d"}