Skip to main content
When a user picks a time, you often need a few moments for them to fill out a form before the booking is final. To avoid two people grabbing the same slot, use a hold-then-confirm pattern: reserve the slot to place a temporary hold, let the user complete checkout, then confirm by creating the booking. If they never finish, the hold expires on its own. All requests use the base URL https://api.cal.id and are authenticated with a Bearer token.
Before you begin, make sure you have:
1

Reserve the slot

Call POST /slots/reserve with the eventTypeId (integer) and the slotStart (ISO) you want to hold. Optionally pass slotDuration (minutes) and reservationDuration (how long to hold the slot, in minutes).
The reservation is returned in data, including its uid. Keep this uid — you’ll need it to release the hold early.
2

Confirm the booking

While the hold is active, let your user finish checkout, then create the booking as usual with POST /booking/ (its body includes eventTypeId, start, end, and responses with name and email). See Create a booking for the full flow.If the booking isn’t confirmed within reservationDuration minutes, the hold expires automatically and the slot becomes available to others again.
3

Release the hold

If the user cancels or backs out before confirming, release the hold early instead of waiting for it to expire. Call DELETE /slots/\{uid\} with the reservation uid from Step 1.

Next steps