Skip to content

API: bookings

List a team’s bookings and swap a reserved pool member.

All paths are under https://api.quorumcal.com. Send Authorization: Bearer <token>, and optionally Quorum-Version: 2026-10-20. Body properties are listed as arguments with In = body.

Swap one reserved pool member for another: POST /v1/me/bookings/{bookingId}/swap

For the booking’s host or a team admin. to must be in the same pool as from, still sharing availability with the link, and free at the booking’s time (calendar, reservations and buffers are checked again under the same locks as a booking; working hours are not). The calendar event’s guests are updated in place and Google emails the change. An unavailable replacement answers 409 unavailable.

  • Needs: bookings:write (not for credentials limited to some orgs)
  • CLI: quorum bookings swap
  • MCP tool: bookings_swap
  • Returns: 200 SwapBookingMemberResult
Argument In Type Required Description
bookingId path string (uuid) yes
from body string (uuid) yes The reserved pool member to replace
to body string (uuid) yes Another member of the same pool

Swap one reserved pool member for another: POST /v1/orgs/{handle}/teams/{teamPath}/bookings/{bookingId}/swap

For the booking’s host or a team admin. to must be in the same pool as from, still sharing availability with the link, and free at the booking’s time (calendar, reservations and buffers are checked again under the same locks as a booking; working hours are not). The calendar event’s guests are updated in place and Google emails the change. An unavailable replacement answers 409 unavailable.

  • Needs: bookings:write
  • CLI: quorum team bookings swap
  • MCP tool: team_bookings_swap
  • Returns: 200 SwapBookingMemberResult
Argument In Type Required Description
handle path string yes
teamPath path string yes The team’s slug or id
bookingId path string (uuid) yes
from body string (uuid) yes The reserved pool member to replace
to body string (uuid) yes Another member of the same pool