Overview
A booking (dossier) is the unit your teams manage in BookingShake: one or several events (a date, a time slot, a space, a number of guests) created and handled together, with a contact, a company, a status and its financial documents. The API exposes bookings read-only:GET /bookings/{id}returns one booking with its nestedevents[]GET /bookingslists bookings with cursor pagination and filters
POST /events/create, which returns the booking_id, and change notifications are available through the booking webhooks.
The booking payload
The same payload shape is served by both endpoints and by thedata field of booking.* webhooks.
Conventions
- References are bare IDs. Resolve
status_id,source_idandspace_idwithGET /status,GET /sources,GET /spaces(these endpoints exposetype,is_canceled,slug,is_default… so you never hardcode venue-specific IDs). Followcontact_id,account_id,invoice_ids,payment_idsto their own endpoints. - Timestamps are Unix milliseconds, business dates are
YYYY-MM-DD, empty fields are an explicitnull. - Custom fields configured for your venue appear as additional
custom_*properties: booking-level fields (collectionrequests) on the booking, event-level fields (collectionreservations) on each event. UseGET /fieldsfor their definitions. owner_idsare internal user IDs (the salespeople assigned to the booking), exposed for correlation only.payment_idsexclude security deposits / pre-authorization holds, consistent with the payments endpoints.
GET /bookings/
{ "message": "success", "data": { ...booking } }. A uniform 404 is returned when the booking does not exist, belongs to another venue, or when the id is an event that is member of a group (bookings are addressed by their booking id, not by member event ids).
GET /bookings
Pagination
Cursor-based. Passnext_cursor back as the cursor parameter until it comes back null.
A page may contain fewer than
limit items even when more data remains (an internal scan bound protects very large venues). Always iterate on next_cursor; never treat a short page as the end of the listing.Filters
Allowed combinations:
date_from/date_to alone or with status_id; created_from/created_to combinable with status_id OR contact_id; status_id and contact_id are mutually exclusive.
The
updated_at payload field is reliable from the feature go-live onward: modifications are stamped going forward, without backfill. canceled_at follows the same rule for bookings cancelled before go-live.