Skip to content

Bookings API (7.0.0)

Bookings VenueAPI is a RESTful, OpenAPI-based interface that enables seamless, standardized booking operations across diverse table management systems (TMS).

Designed for maximum interoperability, the API allows platforms to search, discover, and book venues regardless of the underlying technology stack.

Key capabilities include:

  • Retrieving venue data and availability in real-time
  • Creating bookings through a unified interface
  • Supporting both direct bookings and inquiry-based workflows
  • Enabling venues and distributors to discover each other via a dynamic, service-driven marketplace

The API supports RBAC-secured OAuth2 to ensure role-based access control and secure data transactions. Built for SaaS environments, this service offers scalable, multi-tenant integrations for distribution platforms, booking engines, and TMS providers.

Download OpenAPI description
Languages
Servers
Live
https://api.bookabletech.com
Sandbox
https://api-sandbox.bookabletech.com

Venue

Information about venue

Operations

Booking

Information about the booking

Operations

Create a new booking

Request

Security
Live(Required scopes:
venue-booking:create
)
or Sandbox(Required scopes:
venue-booking:create
)
Path
compositeIdstringrequired

The unique identifier of the venue/product.

Headers
X-Partner-Referencestring

Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope.

X-Correlation-IDstring

An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header.

Example: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA
X-Booking-Sourcestring

Identifies the source or channel through which the booking was created. Valid values include:

  • "email" - Booking created via email integration
  • "phone" - Booking created via phone integration
  • "api" - Booking created via API (default if not provided)
  • "webhook" - Booking created via webhook integration
  • "js-tag" - Booking created via JavaScript tag integration
  • "chatbot" - Booking created via chatbot integration
  • "puller" - Booking created via puller synchronization
  • "portal" - Booking created via portal integration

If not provided, defaults to "api" in the application logic.

Enum"email""phone""api""webhook""js-tag""chatbot""puller""portal"
Example: api
Bodyapplication/jsonrequired
firstNamestringrequired

The first name for the booking.

Example: "John"
lastNamestringrequired

The last name for the booking.

Example: "Doe"
partySizeinteger>= 1required

The number of adults the booking is for.

Example: 4
childreninteger or null

The number of children included in the booking. Note: not all TMS providers support a distinction between adults and children. When unsupported, children may be added to the total party size or ignored entirely.

Example: 2
datestring or null(date)required

The date of the booking, in the format YYYY-MM-DD.

Example: "2025-06-15"
timestring or null(time)required

The time of the booking, in the format HH:mm.

Example: "19:00"
typestring or null(AvailabilityType)required

Specifies how an operators time slot can be handled. A value of book indicates the slot is available for instant confirmation, while request means the slot requires manual approval through an enquiry-based process.

Enum"book""request"
Example: "request"
durationinteger or null

The duration of the booking in minutes.

Example: 90
emailstring(email)^\S+@\S+\.\S+$required

The guest's email address.

Example: "john.doe@example.com"
phonestringrequired

The guest's phone number.

Example: "+441234567890"
notesstring or null

Any additional booking notes or special requests.

Example: "Birthday celebration"
adminNotesArray of strings or null

Internal notes or comments specific to the distributor.

commentsArray of strings or null

Additional comments or notes provided by the distributor.

labelsArray of strings or null

A list of labels or tags associated with the booking.

preordersobject or null(PreorderContainer)

Container for all preorder items (packages and menus)

partnerBookingIdstring or null

Optional field that stores a reference code or unique identifier provided by an external system, used to link or synchronize records across platforms.

Example: "ext-ref-123"
spaceIdinteger or null

Optional space ID to book. When provided, overrides automatic area selection by the TMS. Obtain valid space IDs from the spaces array returned in the availability response time slots.

depositAmountnumber or null(float)

Optional deposit amount to charge for this booking. When provided, the payment call is made to the RMS for this exact amount. When absent, no payment is processed.

curl -i -X POST \
  'https://api.bookabletech.com/venues/{compositeId}/booking' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Booking-Source: api' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: string' \
  -d '{
    "firstName": "John",
    "lastName": "Doe",
    "partySize": 4,
    "date": "2025-06-15",
    "time": "19:00",
    "type": "book",
    "duration": 90,
    "email": "john.doe@example.com",
    "phone": "+441234567890",
    "notes": "Birthday celebration",
    "partnerBookingId": "ext-ref-123"
  }'

Responses

Success created

Body
idstring or null(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring or null(The Composite ID)

A globally unique identifier for the venue/product.

datestring or null(date)(Reservation Date)

The date of the booking.

timestring or null(time)(Reservation Time)

The time of the booking.

partySizeinteger or null(int32)(Party Size)

Number of guests for the booking.

statusstring or null(Booking Status)

Indicates the current status of the booking:

  • Pending: The booking request has been received but not yet processed.
  • InProgress: The enquiry has been received and assigned but is not yet confirmed.
  • Confirmed: The booking has been confirmed.
  • Cancelled: The booking was cancelled or rejected.
  • Deleted: The booking has been deleted from the system.
  • Lost: The booking was not completed before its scheduled date.
Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: "Confirmed"
firstNamestring or null(First Name)

Guest's first name.

lastNamestring or null(Last Name)

Guest's last name.

emailstring or null(email)(Email)

Email address of the guest.

phonestring or null(Phone)

Phone number of the guest.

venueGroupNamestring or null(Venue Group Name)

The name of the venue group that the booked venue belongs to.

locationobject or null(Location)
durationinteger or null(int32)(Duration)

Duration of the booking in minutes.

productNamestring or null(Product Type)

Name of the product or service reserved.

notesstring or null(Notes)

Additional notes for the booking.

createdDatestring or null(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring or null(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring or null(Partner Booking Reference)

A custom booking identifier provided by the distributor (partner). This ID is submitted when creating a booking via API or Portal and serves as the partner's own reference code for cross-system tracking.

operatorBookingIdstring or null(Operator Booking ID)

The booking identifier generated by the operator's TMS platform (e.g., SevenRooms, Collins, Zonal). This ID uniquely identifies the reservation within the operator's system and is displayed in the portal instead of the composite ID.

depositAmountnumber or null(float)(Deposit Amount)

The deposit amount already collected for this booking at the time of reservation. This value is captured from the operator's TMS (e.g., Zonal) and reflects any per-person or per-booking deposit charged to the guest.

areaobject or null(Booking Area)

Represents the area or zone assigned to a booking within a venue, as reported by the operator's TMS.

referencestring or null(Reference (deprecated))Deprecated

Legacy reference code for the booking. This field is deprecated and will be removed in future versions. Please use operatorBookingId instead.

Response
{ "id": "29|X9|69b3e37eb35cb412b60f3737", "compositeId": "29|X9|275cc44dd2e2496fba44857c9257443a|69b3e389b35cb412b60f3738", "date": "2025-06-15", "time": "19:00", "partySize": 4, "status": "Confirmed", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "+441234567890", "venueGroupName": "Dishoom Group", "location": { "city": "London", "area": "Covent Garden", "street": "12 Upper St Martin's Lane", "postCode": "WC2H 9FB" }, "duration": 90, "productName": "Dinner", "notes": "Birthday celebration", "createdDate": "2025-05-01T10:00:00Z", "lastUpdate": "2025-05-01T10:00:00Z", "partnerBookingId": "ext-ref-123", "operatorBookingId": "op-ref-456" }

Retrieve a list of bookings

Request

Returns a paginated list of all bookings.

Security
Live(Required scopes:
venue-booking:read
)
or Sandbox(Required scopes:
venue-booking:read
)
Query
compositeIdstring or null

Filter bookings by the unique composite identifier. This parameter supports two filtering modes:

  • Filter by venue: Provide a 3-part composite ID (venueGroupId|rmsId|venueId) to retrieve all bookings for a specific venue, regardless of product.
  • Filter by product: Provide a complete 4-part composite ID (venueGroupId|rmsId|venueId|productId) to retrieve bookings for a specific product within a venue.
Example: compositeId=29|X9|275cc44dd2e2496fba44857c9257443a
firstNamestring or null

Filter bookings by customer first name (partial match).

lastNamestring or null

Filter bookings by customer last name (partial match).

emailstring or null

Filter bookings by customer email (partial match).

partnerBookingIdstring or null

Filter bookings by partner booking reference ID.

operatorBookingIdstring or null

Filter bookings by operator booking reference ID.

datestring or null(date)

Filter bookings by exact booking date (YYYY-MM-DD).

dateFromstring or null(date)

Filter bookings from this date onwards (inclusive, YYYY-MM-DD).

dateTostring or null(date)

Filter bookings up to this date (inclusive, YYYY-MM-DD).

statusstring or null(Booking Status)

Filter bookings by status.

Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: status=Confirmed
fieldsstring

Field selection using Google Fields syntax. Comma-separated list of top-level Booking fields to include. Use parentheses to select sub-fields of complex objects. When omitted, all fields are returned (backwards compatible).

Examples:

  • fields=id,compositeId,date,time,status
  • fields=id,date,partySize,firstName,lastName,email
  • fields=id,compositeId,date,preorders(packages,menus)

Valid top-level fields: id, compositeId, date, time, partySize, status, firstName, lastName, email, phone, venueGroupName, location, duration, productName, notes, createdDate, lastUpdate, preorders, partnerBookingId, operatorBookingId

Example: fields=id,compositeId,date,time,partySize,status,firstName,lastName,email
pageNumberinteger or null>= 1

The index of the page to return (default is 1).

pageSizeinteger or null[ 1 .. 100 ]

The number of items to return per page (default is 20, max is 100).

Headers
X-Partner-Referencestring

Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope.

X-Correlation-IDstring

An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header.

Example: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA
curl -i -X GET \
  'https://api.bookabletech.com/venues/bookings?compositeId=29%2CX9%2C275cc44dd2e2496fba44857c9257443a&firstName=string&lastName=string&email=string&partnerBookingId=string&operatorBookingId=string&date=2019-08-24&dateFrom=2019-08-24&dateTo=2019-08-24&status=Confirmed&fields=id%2CcompositeId%2Cdate%2Ctime%2CpartySize%2Cstatus%2CfirstName%2ClastName%2Cemail&pageNumber=1&pageSize=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: string'

Responses

A list of bookings

Headers
X-RateLimit-Limitinteger

Maximum number of requests allowed per window.

Example: 200
X-RateLimit-Remaininginteger

Number of requests remaining in the current window.

Example: 150
X-RateLimit-Resetinteger(int64)

Unix timestamp (seconds since epoch) when the current rate-limit window resets.

Example: 1741651200
Body
metaobject
dataArray of objects(Bookings)required

The list of bookings

data[].​idstring or null(The Booking ID)

A globally unique identifier for the booking.

data[].​compositeIdstring or null(The Composite ID)

A globally unique identifier for the venue/product.

data[].​datestring or null(date)(Reservation Date)

The date of the booking.

data[].​timestring or null(time)(Reservation Time)

The time of the booking.

data[].​partySizeinteger or null(int32)(Party Size)

Number of guests for the booking.

data[].​statusstring or null(Booking Status)

Indicates the current status of the booking:

  • Pending: The booking request has been received but not yet processed.
  • InProgress: The enquiry has been received and assigned but is not yet confirmed.
  • Confirmed: The booking has been confirmed.
  • Cancelled: The booking was cancelled or rejected.
  • Deleted: The booking has been deleted from the system.
  • Lost: The booking was not completed before its scheduled date.
Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: "Confirmed"
data[].​firstNamestring or null(First Name)

Guest's first name.

data[].​lastNamestring or null(Last Name)

Guest's last name.

data[].​emailstring or null(email)(Email)

Email address of the guest.

data[].​phonestring or null(Phone)

Phone number of the guest.

data[].​venueGroupNamestring or null(Venue Group Name)

The name of the venue group that the booked venue belongs to.

data[].​locationobject or null(Location)
data[].​durationinteger or null(int32)(Duration)

Duration of the booking in minutes.

data[].​productNamestring or null(Product Type)

Name of the product or service reserved.

data[].​notesstring or null(Notes)

Additional notes for the booking.

data[].​createdDatestring or null(date-time)(Created Date)

Timestamp when the booking was created.

data[].​lastUpdatestring or null(date-time)(Last Updated)

Timestamp of the last booking update.

data[].​preordersobject or null

Preordered items for the booking

data[].​partnerBookingIdstring or null(Partner Booking Reference)

A custom booking identifier provided by the distributor (partner). This ID is submitted when creating a booking via API or Portal and serves as the partner's own reference code for cross-system tracking.

data[].​operatorBookingIdstring or null(Operator Booking ID)

The booking identifier generated by the operator's TMS platform (e.g., SevenRooms, Collins, Zonal). This ID uniquely identifies the reservation within the operator's system and is displayed in the portal instead of the composite ID.

data[].​depositAmountnumber or null(float)(Deposit Amount)

The deposit amount already collected for this booking at the time of reservation. This value is captured from the operator's TMS (e.g., Zonal) and reflects any per-person or per-booking deposit charged to the guest.

data[].​areaobject or null(Booking Area)

Represents the area or zone assigned to a booking within a venue, as reported by the operator's TMS.

data[].​referencestring or null(Reference (deprecated))Deprecated

Legacy reference code for the booking. This field is deprecated and will be removed in future versions. Please use operatorBookingId instead.

Response
{ "meta": { "currentPage": 1, "pageSize": 20, "totalItems": 2, "totalPages": 1 }, "data": [ { … }, { … } ] }

Retrieve a booking by ID

Request

Returns a specific booking by its unique ID.

Security
Live(Required scopes:
venue-booking:read
)
or Sandbox(Required scopes:
venue-booking:read
)
Path
bookingIdstringrequired

Unique identifier of the booking

Query
fieldsstring

Field selection using Google Fields syntax. Comma-separated list of top-level Booking fields to include. Use parentheses to select sub-fields of complex objects. When omitted, all fields are returned (backwards compatible).

Examples:

  • fields=id,compositeId,date,time,status
  • fields=id,date,partySize,firstName,lastName,email
  • fields=id,compositeId,date,preorders(packages,menus)

Valid top-level fields: id, compositeId, date, time, partySize, status, firstName, lastName, email, phone, venueGroupName, location, duration, productName, notes, createdDate, lastUpdate, preorders, partnerBookingId, operatorBookingId

Example: fields=id,compositeId,date,time,partySize,status,firstName,lastName,email
Headers
X-Partner-Referencestring

Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope.

X-Correlation-IDstring

An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header.

Example: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA
curl -i -X GET \
  'https://api.bookabletech.com/venues/bookings/{bookingId}?fields=id%2CcompositeId%2Cdate%2Ctime%2CpartySize%2Cstatus%2CfirstName%2ClastName%2Cemail' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: string'

Responses

Reservation details

Headers
X-RateLimit-Limitinteger

Maximum number of requests allowed per window.

Example: 200
X-RateLimit-Remaininginteger

Number of requests remaining in the current window.

Example: 150
X-RateLimit-Resetinteger(int64)

Unix timestamp (seconds since epoch) when the current rate-limit window resets.

Example: 1741651200
Body
idstring or null(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring or null(The Composite ID)

A globally unique identifier for the venue/product.

datestring or null(date)(Reservation Date)

The date of the booking.

timestring or null(time)(Reservation Time)

The time of the booking.

partySizeinteger or null(int32)(Party Size)

Number of guests for the booking.

statusstring or null(Booking Status)

Indicates the current status of the booking:

  • Pending: The booking request has been received but not yet processed.
  • InProgress: The enquiry has been received and assigned but is not yet confirmed.
  • Confirmed: The booking has been confirmed.
  • Cancelled: The booking was cancelled or rejected.
  • Deleted: The booking has been deleted from the system.
  • Lost: The booking was not completed before its scheduled date.
Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: "Confirmed"
firstNamestring or null(First Name)

Guest's first name.

lastNamestring or null(Last Name)

Guest's last name.

emailstring or null(email)(Email)

Email address of the guest.

phonestring or null(Phone)

Phone number of the guest.

venueGroupNamestring or null(Venue Group Name)

The name of the venue group that the booked venue belongs to.

locationobject or null(Location)
durationinteger or null(int32)(Duration)

Duration of the booking in minutes.

productNamestring or null(Product Type)

Name of the product or service reserved.

notesstring or null(Notes)

Additional notes for the booking.

createdDatestring or null(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring or null(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring or null(Partner Booking Reference)

A custom booking identifier provided by the distributor (partner). This ID is submitted when creating a booking via API or Portal and serves as the partner's own reference code for cross-system tracking.

operatorBookingIdstring or null(Operator Booking ID)

The booking identifier generated by the operator's TMS platform (e.g., SevenRooms, Collins, Zonal). This ID uniquely identifies the reservation within the operator's system and is displayed in the portal instead of the composite ID.

depositAmountnumber or null(float)(Deposit Amount)

The deposit amount already collected for this booking at the time of reservation. This value is captured from the operator's TMS (e.g., Zonal) and reflects any per-person or per-booking deposit charged to the guest.

areaobject or null(Booking Area)

Represents the area or zone assigned to a booking within a venue, as reported by the operator's TMS.

referencestring or null(Reference (deprecated))Deprecated

Legacy reference code for the booking. This field is deprecated and will be removed in future versions. Please use operatorBookingId instead.

Response
{ "id": "29|X9|69b3e37eb35cb412b60f3737", "compositeId": "29|X9|275cc44dd2e2496fba44857c9257443a|69b3e389b35cb412b60f3738", "date": "2025-06-15", "time": "19:00", "partySize": 4, "status": "Confirmed", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "+441234567890", "venueGroupName": "Dishoom Group", "location": { "city": "London", "area": "Covent Garden", "street": "12 Upper St Martin's Lane", "postCode": "WC2H 9FB" }, "duration": 90, "productName": "Dinner", "notes": "Birthday celebration", "createdDate": "2025-05-01T10:00:00Z", "lastUpdate": "2025-05-01T10:00:00Z", "partnerBookingId": "ext-ref-123", "operatorBookingId": "op-ref-456" }

Update an existing booking by ID

Request

Security
Live(Required scopes:
venue-booking:update
)
or Sandbox(Required scopes:
venue-booking:update
)
Path
bookingIdstringrequired

The unique identifier of the booking.

Headers
X-Partner-Referencestring

Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope.

X-Correlation-IDstring

An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header.

Example: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA
Bodyapplication/jsonrequired
compositeIdstringrequired

The unique identifier of the venue/product.

Example: "29|X9|275cc44dd2e2496fba44857c9257443a|69b3e389b35cb412b60f3738"
firstNamestringrequired

The first name for the booking.

Example: "John"
lastNamestringrequired

The last name for the booking.

Example: "Doe"
partySizeinteger>= 1required

The number of people the booking is for.

Example: 4
datestring or null(date)required

The date of the booking, in the format YYYY-MM-DD.

Example: "2025-06-15"
timestring or null(time)required

The time of the booking, in the format HH:mm.

Example: "19:00"
durationinteger or null

The duration of the booking in minutes.

Example: 90
emailstring(email)^\S+@\S+\.\S+$required

The guest's email address.

Example: "john.doe@example.com"
phonestringrequired

The guest's phone number.

Example: "+441234567890"
notesstring or null

Any additional booking notes or special requests.

Example: "Birthday celebration"
curl -i -X PUT \
  'https://api.bookabletech.com/venues/bookings/{bookingId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: string' \
  -d '{
    "compositeId": "29|X9|275cc44dd2e2496fba44857c9257443a|69b3e389b35cb412b60f3738",
    "firstName": "John",
    "lastName": "Doe",
    "partySize": 4,
    "date": "2025-06-15",
    "time": "19:00",
    "duration": 90,
    "email": "john.doe@example.com",
    "phone": "+441234567890",
    "notes": "Birthday celebration"
  }'

Responses

Reservation details

Headers
X-RateLimit-Limitinteger

Maximum number of requests allowed per window.

Example: 200
X-RateLimit-Remaininginteger

Number of requests remaining in the current window.

Example: 150
X-RateLimit-Resetinteger(int64)

Unix timestamp (seconds since epoch) when the current rate-limit window resets.

Example: 1741651200
Body
idstring or null(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring or null(The Composite ID)

A globally unique identifier for the venue/product.

datestring or null(date)(Reservation Date)

The date of the booking.

timestring or null(time)(Reservation Time)

The time of the booking.

partySizeinteger or null(int32)(Party Size)

Number of guests for the booking.

statusstring or null(Booking Status)

Indicates the current status of the booking:

  • Pending: The booking request has been received but not yet processed.
  • InProgress: The enquiry has been received and assigned but is not yet confirmed.
  • Confirmed: The booking has been confirmed.
  • Cancelled: The booking was cancelled or rejected.
  • Deleted: The booking has been deleted from the system.
  • Lost: The booking was not completed before its scheduled date.
Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: "Confirmed"
firstNamestring or null(First Name)

Guest's first name.

lastNamestring or null(Last Name)

Guest's last name.

emailstring or null(email)(Email)

Email address of the guest.

phonestring or null(Phone)

Phone number of the guest.

venueGroupNamestring or null(Venue Group Name)

The name of the venue group that the booked venue belongs to.

locationobject or null(Location)
durationinteger or null(int32)(Duration)

Duration of the booking in minutes.

productNamestring or null(Product Type)

Name of the product or service reserved.

notesstring or null(Notes)

Additional notes for the booking.

createdDatestring or null(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring or null(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring or null(Partner Booking Reference)

A custom booking identifier provided by the distributor (partner). This ID is submitted when creating a booking via API or Portal and serves as the partner's own reference code for cross-system tracking.

operatorBookingIdstring or null(Operator Booking ID)

The booking identifier generated by the operator's TMS platform (e.g., SevenRooms, Collins, Zonal). This ID uniquely identifies the reservation within the operator's system and is displayed in the portal instead of the composite ID.

depositAmountnumber or null(float)(Deposit Amount)

The deposit amount already collected for this booking at the time of reservation. This value is captured from the operator's TMS (e.g., Zonal) and reflects any per-person or per-booking deposit charged to the guest.

areaobject or null(Booking Area)

Represents the area or zone assigned to a booking within a venue, as reported by the operator's TMS.

referencestring or null(Reference (deprecated))Deprecated

Legacy reference code for the booking. This field is deprecated and will be removed in future versions. Please use operatorBookingId instead.

Response
{ "id": "29|X9|69b3e37eb35cb412b60f3737", "compositeId": "29|X9|275cc44dd2e2496fba44857c9257443a|69b3e389b35cb412b60f3738", "date": "2025-06-15", "time": "19:00", "partySize": 4, "status": "Confirmed", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "+441234567890", "venueGroupName": "Dishoom Group", "location": { "city": "London", "area": "Covent Garden", "street": "12 Upper St Martin's Lane", "postCode": "WC2H 9FB" }, "duration": 90, "productName": "Dinner", "notes": "Birthday celebration", "createdDate": "2025-05-01T10:00:00Z", "lastUpdate": "2025-05-01T10:00:00Z", "partnerBookingId": "ext-ref-123", "operatorBookingId": "op-ref-456" }

Update a booking

Request

Partially updates a booking using JSON Patch operations as defined in RFC 6902. This endpoint allows you to perform granular updates on a booking without sending the entire resource. Supported operations include:

  • add: Add a new field or append to an array
  • remove: Remove a field or array element
  • replace: Update an existing field value Read-only Fields (cannot be patched):
  • /id, /compositeId, /status, /reference, /venueGroupName, /location/*, /productName, /createdDate, /lastUpdate

Patchable Fields:

  • /date - Change booking date (format: YYYY-MM-DD)
  • /time - Change booking time (format: HH:MM)
  • /duration - Update duration in minutes
  • /partySize - Change number of guests
  • /firstName - Update guest first name
  • /lastName - Update guest last name
  • /email - Update guest email
  • /phone - Update guest phone number
  • /notes - Update booking notes
  • /partnerBookingId - Update partner booking reference
  • /operatorBookingId - Update operator booking ID Preorders - Packages:
  • /preorders/packages - Add/remove entire packages array
  • /preorders/packages/- - Add a package to the end of the array
  • /preorders/packages/{packageId} - Replace/remove a specific package by ID
  • /preorders/packages/{packageId}/quantity - Update quantity by package ID Note: For packages, only id and quantity can be modified. Other fields (name, description, type, price) are read-only. Package IDs are alphanumeric strings (e.g., "5de64c68ce9583458c447544"). Index-based paths are NOT supported. Preorders - Menus:
  • /preorders/menus - Add/remove entire menus array
  • /preorders/menus/- - Add a menu to the end of the array
  • /preorders/menus/{menuId} - Replace/remove a specific menu by ID
  • /preorders/menus/{menuId}/quantity - Update menu quantity by ID
  • /preorders/menus/{menuId}/items - Replace entire items array for a menu
  • /preorders/menus/{menuId}/items/- - Add an item to a menu
  • /preorders/menus/{menuId}/items/{itemId} - Replace/remove a menu item by ID
  • /preorders/menus/{menuId}/items/{itemId}/quantity - Update item quantity by ID Note: For menu items, only id and quantity can be modified. The name field is read-only. Menu and Item IDs are alphanumeric strings (e.g., "5de64c68ce9583458c447544"). Index-based paths are NOT supported. Examples: Update guest information:
  { "op": "replace", "path": "/email", "value": "newemail@example.com" },
  { "op": "replace", "path": "/phone", "value": "+44 20 7946 0958" }
] ```
Update booking date and time: ```json [
  { "op": "replace", "path": "/date", "value": "2025-12-25" },
  { "op": "replace", "path": "/time", "value": "19:30" }
] ```
Add a package to preorders: ```json [
  { "op": "add", "path": "/preorders/packages/-", "value": { "id": "5de64c68ce9583458c447544", "quantity": 2 } }
] ```
Update package quantity: ```json [
  { "op": "replace", "path": "/preorders/packages/5de64c68ce9583458c447544/quantity", "value": 5 }
] ```
Remove a package: ```json [
  { "op": "remove", "path": "/preorders/packages/5de64c68ce9583458c447544" }
] ```
Add a menu with items: ```json [
  {
    "op": "add",
    "path": "/preorders/menus/-",
    "value": {
      "id": "5de64c68ce9583458c447abc",
      "quantity": 3,
      "items": [
        { "id": "5de64c68ce9583458c447001", "quantity": 1 },
        { "id": "5de64c68ce9583458c447002", "quantity": 2 }
      ]
    }
  }
] ```
Add item to existing menu: ```json [
  { "op": "add", "path": "/preorders/menus/5de64c68ce9583458c447abc/items/-", "value": { "id": "5de64c68ce9583458c447003", "quantity": 1 } }
] ```
Update menu item quantity: ```json [
  { "op": "replace", "path": "/preorders/menus/5de64c68ce9583458c447abc/items/5de64c68ce9583458c447001/quantity", "value": 2 }
] ```
Security
Live(Required scopes:
venue-booking:update
)
or Sandbox(Required scopes:
venue-booking:update
)
Path
bookingIdstringrequired

The unique identifier of the booking.

Headers
X-Partner-Referencestring

Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope.

X-Correlation-IDstring

An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header.

Example: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA
Bodyapplication/json-patch+jsonrequired

Array of JSON Patch operations to apply to the booking

Array [
opstringrequired

The operation to perform

Enum"add""remove""replace"
Example: "replace"
pathstring^\/.*required

JSON Pointer (RFC 6901) to the target location in the document. Must start with / and use / as path separator.

Example: "/status"
valueany

The value to use for the operation. Required for add, replace, and test operations. Can be any valid JSON value (string, number, boolean, object, array, null).

Example: "Confirmed"
]
curl -i -X PATCH \
  'https://api.bookabletech.com/venues/bookings/{bookingId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json-patch+json' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: string' \
  -d '[
    {
      "op": "replace",
      "path": "/email",
      "value": "newemail@example.com"
    },
    {
      "op": "replace",
      "path": "/firstName",
      "value": "John"
    }
  ]'

Responses

Booking successfully updated

Headers
X-RateLimit-Limitinteger

Maximum number of requests allowed per window.

Example: 200
X-RateLimit-Remaininginteger

Number of requests remaining in the current window.

Example: 150
X-RateLimit-Resetinteger(int64)

Unix timestamp (seconds since epoch) when the current rate-limit window resets.

Example: 1741651200
Body
idstring or null(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring or null(The Composite ID)

A globally unique identifier for the venue/product.

datestring or null(date)(Reservation Date)

The date of the booking.

timestring or null(time)(Reservation Time)

The time of the booking.

partySizeinteger or null(int32)(Party Size)

Number of guests for the booking.

statusstring or null(Booking Status)

Indicates the current status of the booking:

  • Pending: The booking request has been received but not yet processed.
  • InProgress: The enquiry has been received and assigned but is not yet confirmed.
  • Confirmed: The booking has been confirmed.
  • Cancelled: The booking was cancelled or rejected.
  • Deleted: The booking has been deleted from the system.
  • Lost: The booking was not completed before its scheduled date.
Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: "Confirmed"
firstNamestring or null(First Name)

Guest's first name.

lastNamestring or null(Last Name)

Guest's last name.

emailstring or null(email)(Email)

Email address of the guest.

phonestring or null(Phone)

Phone number of the guest.

venueGroupNamestring or null(Venue Group Name)

The name of the venue group that the booked venue belongs to.

locationobject or null(Location)
durationinteger or null(int32)(Duration)

Duration of the booking in minutes.

productNamestring or null(Product Type)

Name of the product or service reserved.

notesstring or null(Notes)

Additional notes for the booking.

createdDatestring or null(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring or null(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring or null(Partner Booking Reference)

A custom booking identifier provided by the distributor (partner). This ID is submitted when creating a booking via API or Portal and serves as the partner's own reference code for cross-system tracking.

operatorBookingIdstring or null(Operator Booking ID)

The booking identifier generated by the operator's TMS platform (e.g., SevenRooms, Collins, Zonal). This ID uniquely identifies the reservation within the operator's system and is displayed in the portal instead of the composite ID.

depositAmountnumber or null(float)(Deposit Amount)

The deposit amount already collected for this booking at the time of reservation. This value is captured from the operator's TMS (e.g., Zonal) and reflects any per-person or per-booking deposit charged to the guest.

areaobject or null(Booking Area)

Represents the area or zone assigned to a booking within a venue, as reported by the operator's TMS.

referencestring or null(Reference (deprecated))Deprecated

Legacy reference code for the booking. This field is deprecated and will be removed in future versions. Please use operatorBookingId instead.

Response
{ "id": "29|X9|69b3e37eb35cb412b60f3737", "compositeId": "29|X9|275cc44dd2e2496fba44857c9257443a|69b3e389b35cb412b60f3738", "date": "2025-06-15", "time": "19:00", "partySize": 4, "status": "Confirmed", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "+441234567890", "venueGroupName": "Dishoom Group", "location": { "city": "London", "area": "Covent Garden", "street": "12 Upper St Martin's Lane", "postCode": "WC2H 9FB" }, "duration": 90, "productName": "Dinner", "notes": "Birthday celebration", "createdDate": "2025-05-01T10:00:00Z", "lastUpdate": "2025-05-01T10:00:00Z", "partnerBookingId": "ext-ref-123", "operatorBookingId": "op-ref-456" }

Cancel a booking by ID

Request

Security
Live(Required scopes:
venue-booking:delete
)
or Sandbox(Required scopes:
venue-booking:delete
)
Path
bookingIdstringrequired

Unique identifier of the booking

Headers
X-Partner-Referencestring

Required for Bookable Agents. Specifies the partner reference for whom the booking is being made. This header must contain a valid partner reference when making requests with the agent:write scope.

X-Correlation-IDstring

An optional ID which you can use to track transactions across multiple systems. It can have any value, but we recommend avoiding . characters. Mirrored back in a response header.

Example: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA
curl -i -X DELETE \
  'https://api.bookabletech.com/venues/bookings/{bookingId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: string'

Responses

Booking cancelled successfully

Headers
X-RateLimit-Limitinteger

Maximum number of requests allowed per window.

Example: 200
X-RateLimit-Remaininginteger

Number of requests remaining in the current window.

Example: 150
X-RateLimit-Resetinteger(int64)

Unix timestamp (seconds since epoch) when the current rate-limit window resets.

Example: 1741651200
Response
No content