Bookings
The booking lifecycle, status transitions, and all booking operations.
Lifecycle
| Status | Description |
|---|---|
DRAFT | Created; routing in progress (transient — typically resolves in milliseconds) |
SCHEDULED | Assigned to a team member, confirmed |
PENDING_CONFIRMATION | Waiting for host to confirm (requires_confirmation: true on the event type) |
RESCHEDULED | Active booking at a new time (original booking moves to CANCELLED) |
COMPLETED | Meeting took place |
CANCELLED | Cancelled by host, attendee, or API |
NO_SHOW | Attendee did not show up |
Create a booking
Returns 201 Created on success. See Idempotency for retry-safe creation.
Get a booking
List bookings
| Prop | Type | Default |
|---|---|---|
status | string | - |
event_type_id | string | - |
assigned_to_id | string | - |
attendee_email | string | - |
start_date | ISO 8601 | - |
end_date | ISO 8601 | - |
limit | integer | 50 |
cursor | string | - |
Bookings use cursor-based pagination. Pass pagination.next_cursor from any response as the cursor param on the next request:
When has_more is false, you have reached the last page and next_cursor is null.
Update attendee details
Only attendee fields can be patched (name, email, phone, timezone). Scheduling fields (time, status, assignment) are rejected.
Allowed states: SCHEDULED, RESCHEDULED, PENDING_CONFIRMATION.
If the email changes, a fresh confirmation email is sent to the new address. Ensure this is intentional before patching.
Status transitions
Transitions PENDING_CONFIRMATION → SCHEDULED. Naturally idempotent — calling on an already-confirmed booking returns the current state.
Idempotency
Pass an Idempotency-Key header on POST /v1/bookings to safely retry without creating duplicates:
- First call: creates the booking, returns
201 Created - Duplicate call (same key): returns
200 OKwith"idempotent_replay": trueand the byte-identical original response body - Keys are scoped per team — two teams may reuse the same key string independently
- Keys expire after 24 hours
Status transition endpoints (confirm, complete, no-show, cancel) are inherently idempotent — repeating the same operation returns the current state without side effects. No idempotency key needed.