The Bookings API provides a way for integrations to manage bookings and get Webhooks for any Orders related to those Bookings.
A Booking can be tied to a Customer or a Table during a specific time period, during which any other Orders created on that Table (or with that Customer) will trigger Webhooks, allowing the integration to get a full picture of all that happened during the Booking.
GET /v1/companies/5678/bookings |
|
GET /v1/companies/5678/customers/818839/bookings |
|
GET /v1/companies/5678/sites/409/bookings |
|
GET /v1/companies/5678/sites/409/pending/bookings |
|
GET /v1/companies/5678/sites/409/customers/818839/bookings |
|
GET /v1/companies/5678/sites/409/customers/818839/pending/bookings |
|
GET /v1/companies/5678/bookings?start_at_gte=2025-09-20T08:00:00Z&end_at_lte=2025-09-20T20:30:00Z |
|
GET /v1/companies/5678/bookings?created_at_gte=2025-09-11T10:00:00Z&created_at_lte=2025-09-12T20:30:00Z |
site_id - Filter bookings by site IDcustomer_id - Filter bookings by customer IDstatus - Filter bookings by status. One of PENDING, CONFIRMED, SEATED, CANCELLED, COMPLETE
start_at - Filter bookings by start time using an ISO 8601 timestamp. Range queries are supported with the suffixes _gt, _gte, _lt and _lte
end_at - Filter bookings by end time using an ISO 8601 timestamp. Range queries are supported with the suffixes _gt, _gte, _lt and _lte
created_at - Filter bookings by creation time using an ISO 8601 timestamp. Range queries are supported with the suffixes _gt, _gte, _lt and _lte
reference field is returned if the booking is created by the same API client requesting this endpoint.orders field will not be returned on this endpoint. You must request individual Bookings in order to retrieve the orders field. X-Next-Page with the URL in the response to get the next page of resultsGET /v1/companies/5678/bookings/15223.json |
orders field contains a list of order IDs for the orders that satisfied the following conditions:
start_at and end_at) ANDreference, booking_callback_uri, and order_callback_uri fields are optional and will only be returned if the booking is created by the same API client requesting this endpointPOST /v1/companies/5678/bookings |
site_id, customer_id, guests, status, start_at, and end_at
tables, notes, reference, booking_callback_uri, and order_callback_uri
site_id - Integercustomer_id - Integerguests - Integerstatus - String, one of PENDING, CONFIRMED, SEATED, CANCELLED, or COMPLETE
tables - Array of strings, each string is a table name/numbernotes - String, max length 1024 charactersreference - String, max length 40 characters, can be used to store an external reference for the booking. Must be unique per company.start_at - String in ISO 8601 format, e.g. "2025-09-05T18:00:00+10:00"end_at - String in ISO 8601 format, e.g. "2025-09-10T20:00:00+10:00"booking_callback_uri - String, max length 1024 characters, must be a valid URI. If provided, a webhook will be sent to this URI when the booking is created, updated or deleted.order_callback_uri - String, max length 1024 characters, must be a valid URI. If provided, a webhook will be sent to this URI when an order related to this booking is created or updated.site_id must refer to a valid site for the companycustomer_id must refer to a valid customer for the companystart_at must be before end_at
start_at can be in the past but end_at must be in the futurestart_at and end_at can't exceed one weektables must refer to a valid table for the site, see the GET Tables endpointThis POST will return a HTTP 201 with a Location header to the created resource.
PUT /v1/companies/5678/bookings/456 |
Any combination of the following fields can be updated:
status - String, one of PENDING, CONFIRMED, SEATED, CANCELLED, or COMPLETE
customer_id - Integer (note: this affects the orders output)tables - Array of strings (note: this affects the orders output)guests - Integerreference - String, max length 40 characters (only if modified by the creator of the booking)notes - String, max length 1024 charactersstart_at - String in ISO 8601 format (note: this affects the orders output)end_at - String in ISO 8601 format (note: this affects the orders output)Status can only be updated according to the following rules:
PENDING - can change to any other statusCONFIRMED - can change to SEATED, COMPLETE, or CANCELLED
SEATED - can change to COMPLETE or CANCELLED
COMPLETE - no further changes can be made to statusCANCELLED - no further changes can be made to statustables must be valid table names for the site (see Tables endpoint)end_at must not be in the past (start_at can be in the past)end_at must be after start_at
reference max length is 40 characters (allows for UUID formats)notes max length is 1024 charactersclient_id that created the booking can update itCOMPLETE or CANCELLED status, it can no longer be updatedHere is a list of the supported webhook topics.
Triggered when a new booking is created. The payload contains the full booking details as returned by the GET individual booking endpoint.
Note: The reference field is only included in the payload if the webhook subscriber is the same client that created the booking.
Triggered when a booking is updated. This includes updates to the booking itself as well as changes to the orders field when new orders are dynamically linked to the booking.
For example, if a booking is for table T12 and a new POS order is created on T12 during the booking window, this webhook will trigger because the order becomes linked to the booking.
The payload contains the full booking details as returned by the GET individual booking endpoint, including the updated orders array.
Note: The reference field is only included in the payload if the webhook subscriber is the same client that created the booking.