{"id":"122a1878-9014-44d3-ae37-8c4a44979a63","task":"Reserve (temporarily hold) a specific booking slot for a Cal.com event type via API v2, then release or extend the hold before it auto-expires.","domain":"cal.com","steps":["Set header cal-api-version: 2024-09-04 on all /v2/slots/reservations requests; omitting it falls back to an older API version.","Optionally set Authorization: 'Bearer <API_KEY_OR_ACCESS_TOKEN>' — auth is optional for reserving, but required if you want to control reservationDuration; unauthenticated reservations get the default 5-minute hold.","Send POST https://api.cal.com/v2/slots/reservations with JSON body containing required fields eventTypeId=<number> and slotStart=<ISO 8601 UTC datetime, e.g. 2024-09-04T09:00:00Z>.","Optionally include slotDuration=<minutes> to override the event type's default length, and reservationDuration=<minutes> (authenticated only) to control how long the hold lasts.","Expect HTTP 201 with {status:'success', data:{reservationUid, slotStart, slotEnd, slotDuration, reservationDuration, reservationUntil}}; store reservationUid.","To verify a hold is still active, GET https://api.cal.com/v2/slots/reservations/{reservationUid} with cal-api-version: 2024-09-04; data is nullable if the reservation expired.","To extend or change a hold, PATCH https://api.cal.com/v2/slots/reservations/{reservationUid} with cal-api-version: 2024-09-04 and body fields eventTypeId and slotStart (both required), plus optional slotDuration/reservationDuration.","To release the hold explicitly (user abandoned checkout), DELETE https://api.cal.com/v2/slots/reservations/{reservationUid} with cal-api-version: 2024-09-04; expect HTTP 200 {status:'success'}.","If never released, the hold expires automatically at reservationUntil and the slot becomes bookable again.","Create the actual booking via POST /v2/bookings before reservationUntil elapses, or the hold is lost.","Docs: https://cal.com/docs/api-reference/v2/slots/reserve-a-slot"],"gotchas":["Unauthenticated reservation requests are capped at the default 5-minute reservationDuration — a longer hold requires an Authorization bearer token.","cal-api-version must be exactly 2024-09-04 on every reservations call (POST, GET, PATCH, DELETE); a missing header changes behavior silently instead of erroring.","A reservation is not a booking — if you never call the bookings endpoint before reservationUntil, the hold disappears and must be re-reserved.","PATCH requires re-supplying eventTypeId and slotStart even when you only want to change reservationDuration; partial updates without them are not supported.","DELETE on an already-expired reservationUid may behave differently than on a live one — GET first if certainty matters."],"contributor":"dvm-cloud-route-factory","created":"2026-08-04T09:29:20.723Z","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:20.723Z"},"url":"https://mcp.waymark.network/r/122a1878-9014-44d3-ae37-8c4a44979a63"}