Skip to content

Bookings VenueAPI (6.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
Production
https://api.bookabletech.com
Sandbox
https://api-sandbox.bookabletech.com
Operations

Request

Returns a paginated list of venues available to the authenticated user or system. This endpoint supports page-based pagination to efficiently retrieve large sets of results.

Security
Production(Required scopes:
venue:read
)
or Sandbox(Required scopes:
venue:read
)
Query
venueNamestring[ 2 .. 100 ] characters

Filter venues by name. Supports partial matching (case-insensitive). Example: "dishoom" will match "Dishoom Covent Garden".

Example: venueName=dishoom
venueGroupNamestring[ 2 .. 100 ] characters

Filter venues by group or chain name. Supports partial matching (case-insensitive). Example: "gordon ramsay" will match all Gordon Ramsay restaurants.

Example: venueGroupName=gordon ramsay
featuresArray of strings[ 1 .. 10 ] items

Filter venues by features. Supports multiple values separated by commas. Available features include: dog_friendly, wifi, parking, wheelchair_accessible, tv_sports, live_music, karaoke, pool_table, romantic, casual, family_friendly, quiet, lively, italian, asian, vegetarian, seafood, etc.

Example: features=dog_friendly,wifi,romantic
contentstring[ 3 .. 200 ] characters

Filter venues by description content. Supports partial matching (case-insensitive). Searches within the venue's content/description field.

Example: content=bombay cuisine
productNamestring[ 2 .. 100 ] characters

Filter venues by product/experience name. Supports partial matching (case-insensitive). Searches within product names and experience names.

Example: productName=dining room
productCategoryArray of strings[ 1 .. 10 ] items

Filter venues by product categories. Supports multiple values separated by commas. Only returns venues that have active products in the specified categories. Supports partial matching (case-insensitive).

Example: productCategory=lunch,dinner,brunch
bookingDaysArray of strings(DayOfWeek)[ 1 .. 7 ] items

Filter venues by available booking days. Supports multiple values separated by commas. Use day names (monday, tuesday, wednesday, thursday, friday, saturday, sunday).

Items Enum"sunday""monday""tuesday""wednesday""thursday""friday""saturday"
Example: bookingDays=monday,tuesday,friday
areastring[ 2 .. 100 ] characters

Filter venues by area/location. Supports partial matching (case-insensitive). Searches within the venue's area field.

Example: area=covent garden
citystring[ 2 .. 100 ] characters

Filter venues by city. Supports partial matching (case-insensitive).

Example: city=london
streetstring[ 3 .. 200 ] characters

Filter venues by street address. Supports partial matching (case-insensitive). Searches within the venue's street address field.

Example: street=upper st martin
venueTypesArray of strings[ 1 .. 10 ] items

Filter venues by type. Supports multiple values separated by commas. Available types include: restaurant, bar, cafe, hotel, pub, club, etc.

Example: venueTypes=restaurant,bar
datestring(date)

Filter venues by booking rules for a specific date. Format: ISO 8601 (YYYY-MM-DD). Returns venues that accept bookings on the specified date according to their booking rules. When both 'date' and 'bookingDays' filters are provided, the 'date' filter takes precedence and overrides the 'bookingDays' filter.

Example: date=2025-10-15
timestring or null(time)

Filter venues by booking rules at a specific time. Format: 24-hour (HH:MM). Returns venues that accept bookings at the specified time according to their booking rules. Must be used in conjunction with the date parameter.

Example: time=19:30
pageNumberinteger>= 1

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

Default 1
pageSizeinteger[ 1 .. 100 ]

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

Default 20
sortBystring

The field to sort results by. Defaults to 'Default' (composite ID ordering).

  • default: Sort by composite ID (venue_group_id, rms_id, venue_id)
  • name: Sort venues alphabetically by name
  • city: Sort venues by city name, then by venue name
  • area: Sort venues by area, then by venue name
  • venueGroup: Sort venues by venue group name (requires venueGroupName filter)
  • relevance: Sort by semantic similarity using vector embeddings (requires at least one embedding filter: venueName, content, or features with semantic search enabled)
Default "default"
Enum"default""name""city""area""venueGroup""relevance"
Example: sortBy=Name
sortDirectionstring

The direction to sort results. Defaults to 'ASC'.

  • ASC: Ascending order (A-Z, 0-9, most similar to least similar for relevance)
  • DESC: Descending order (Z-A, 9-0, least similar to most similar for relevance)
Default "ASC"
Enum"ASC""DESC"
Example: sortDirection=ASC
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.

Example: bottomlessbrunch.com
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?venueName=dishoom&venueGroupName=gordon+ramsay&features=dog_friendly%2Cwifi%2Cromantic&content=bombay+cuisine&productName=dining+room&productCategory=lunch%2Cdinner%2Cbrunch&bookingDays=monday%2Ctuesday%2Cfriday&area=covent+garden&city=london&street=upper+st+martin&venueTypes=restaurant%2Cbar&date=2025-10-15&time=19%3A30&pageNumber=1&pageSize=20&sortBy=Name&sortDirection=ASC' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: bottomlessbrunch.com'

Responses

A list of venues was successfully retrieved.

Bodyapplication/json
metaobject
dataArray of objects(Venue)

A list of venue records for the current page.

Response
application/json
{ "meta": { "totalItems": 0, "totalPages": 0, "currentPage": 0, "limit": 0 }, "data": [ {} ] }

Request

Retrieve a list of venues.

Security
Production(Required scopes:
venue:read
)
or Sandbox(Required scopes:
venue:read
)
Path
venueIdstringrequired

The id of venue

Example: 29|X9|275cc44dd2e2496fba44857c9257443a
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.

Example: bottomlessbrunch.com
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/29|X9|275cc44dd2e2496fba44857c9257443a' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: bottomlessbrunch.com'

Responses

Schema for the response returned when retrieving a list of venues.

Bodyapplication/json
idstringrequired

Unique identifier for the venue.

namestringrequired

The name of the venue.

venueGroupNamestring

The name of the venue group or chain that this venue belongs to.

contentstring

Description or additional content about the venue.

phone_numberstring

The contact phone number of the venue.

websitestring(uri)

The official website of the venue.

reservableboolean

Indicates if the venue can be reserved.

locationobject(Location)
typesArray of strings

A list of types that categorize the venue.

photosArray of strings

A collection of photo URLs representing the venue.

updated_atstring(date-time)

Timestamp when the venue was last updated.

productsArray of objects(Product)

List of products available at the venue.

preordersobject(VenuePreorders)

Pre-order options available at the venue, including packages and menus.

opening_timesobject

Opening times for the venue, including weekly schedule and specific date overrides.

Example: {"monday":{"status":true,"open":"10:00","close":"23:00","notes":"","private_hire":false},"tuesday":{"status":true,"open":"10:00","close":"23:00","notes":"","private_hire":false},"2025-12-25":{"status":false,"open":"","close":"","notes":"Closed for Christmas"}}
is_activebooleanDeprecated

Indicates if the venue is currently active.

Default true
created_atstring(date-time)Deprecated

Timestamp when the venue was created.

Response
application/json
{ "id": "string", "name": "string", "venueGroupName": "string", "content": "string", "phone_number": "string", "website": "http://example.com", "reservable": true, "location": { "area": "string", "city": "string", "lat": 0.1, "lng": 0.1, "street": "string", "postCode": "string", "gPlace": "string" }, "types": [ "string" ], "photos": [ "string" ], "is_active": true, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "products": [ {} ], "preorders": { "packages": [], "menus": [] }, "opening_times": { "monday": {}, "tuesday": {}, "2025-12-25": {} } }

Request

Security
Production(Required scopes:
venue:read
)
or Sandbox(Required scopes:
venue:read
)
Path
compositeIdstringrequired

The unique identifier of the venue or product.

Query
AvailabilityRequestobject(AvailabilityRequest)
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.

Example: bottomlessbrunch.com
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/{compositeId}/availability?partySize=1&date=2019-08-24&startTime=14%3A15%3A22Z&endTime=14%3A15%3A22Z&duration=0' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: bottomlessbrunch.com'

Responses

Success response

Bodyapplication/json
namestring or null

The name of the available booking option.

depositnumber or null(float)

The deposit amount required for the booking.

policystring or null

General policy details regarding the booking.

cancellationPolicystring or null

Terms and conditions for canceling the booking.

timesArray of objects or null
noAvailabilityActionstring or null

Strategy provided by the TMS (Table Management System) when no availability is found. Defines fallback actions or alternative options to present to customers.

autoConfirmRuleobject(AutoConfirmRule)

Defines the criteria for automatically confirming bookings without manual intervention.

Response
application/json
{ "name": "string", "deposit": 0.1, "policy": "string", "cancellationPolicy": "string", "times": [ {} ], "noAvailabilityAction": "string", "autoConfirmRule": { "date": "2019-08-24", "dateType": "string", "minPeople": 0, "maxPeople": 0, "timeFrom": "14:15:22Z", "timeTo": "14:15:22Z", "weekdays": {} } }

Request

Security
Production(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.

Example: bottomlessbrunch.com
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 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-02-15"
timestring or null(time)required

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

Example: "18:30"
typestring(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: 1234567890
notesstring or null

Any additional booking notes or special requests.

Example: "Please prepare a birthday cake."
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(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.

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: bottomlessbrunch.com' \
  -d '{
    "firstName": "John",
    "lastName": "Doe",
    "partySize": 4,
    "date": "2025-02-15",
    "time": "18:30",
    "type": "request",
    "duration": 90,
    "email": "john.doe@example.com",
    "phone": 1234567890,
    "notes": "Please prepare a birthday cake.",
    "adminNotes": [
      "string"
    ],
    "comments": [
      "string"
    ],
    "labels": [
      "string"
    ],
    "preorders": {
      "packages": [
        {
          "id": "62692e90d2cf1f163744efc4",
          "quantity": 2
        }
      ],
      "menus": [
        {
          "id": "61a4af3137b80d0bae3a7e19",
          "quantity": 4,
          "items": [
            {
              "id": "619d19eb40e1512ebb03b378",
              "quantity": 3,
              "options": [
                {}
              ]
            }
          ]
        }
      ]
    },
    "partnerBookingId": "string"
  }'

Responses

Success created

Bodyapplication/json
idstring(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring(The Composite ID)

A globally unique identifier for the venue/product.

datestring(date)(Reservation Date)

The date of the booking.

timestring(time)(Reservation Time)

The time of the booking.

partySizeinteger(int32)(Party Size)

Number of guests for the booking.

statusstring(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(First Name)

Guest's first name.

lastNamestring(Last Name)

Guest's last name.

emailstring(email)(Email)

Email address of the guest.

phonestring(Phone)

Phone number of the guest.

venueGroupNamestring(Venue Group Name)

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

locationobject(Location)
durationinteger(int32)(Duration)

Duration of the booking in minutes.

productNamestring(Product Type)

Name of the product or service reserved.

notesstring(Notes)

Additional notes for the booking.

createdDatestring(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring(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(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.

referencestring(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
application/json
{ "id": "string", "compositeId": "string", "date": "2019-08-24", "time": "14:15:22Z", "partySize": 0, "status": "Confirmed", "reference": "string", "firstName": "string", "lastName": "string", "email": "user@example.com", "phone": "string", "venueGroupName": "string", "location": { "area": "string", "city": "string", "lat": 0.1, "lng": 0.1, "street": "string", "postCode": "string", "gPlace": "string" }, "duration": 0, "productName": "string", "notes": "string", "createdDate": "2019-08-24T14:15:22Z", "lastUpdate": "2019-08-24T14:15:22Z", "preorders": { "packages": [], "menus": [] }, "partnerBookingId": "string", "operatorBookingId": "string" }

Request

Returns a paginated list of all bookings.

Security
Production(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(Booking Status)

Filter bookings by status.

Enum"Pending""InProgress""Confirmed""Cancelled""Deleted""Lost"
Example: status=Confirmed
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.

Example: bottomlessbrunch.com
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&pageNumber=1&pageSize=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: bottomlessbrunch.com'

Responses

A list of bookings

Bodyapplication/json
metaobject
dataArray of objects(Bookings)

The list of bookings

Response
application/json
{ "meta": { "totalItems": 0, "totalPages": 0, "currentPage": 0, "limit": 0 }, "data": [ {} ] }

Request

Returns a specific booking by its unique ID.

Security
Production(Required scopes:
venue-booking:read
)
or Sandbox(Required scopes:
venue-booking:read
)
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.

Example: bottomlessbrunch.com
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}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: bottomlessbrunch.com'

Responses

Reservation details

Bodyapplication/json
idstring(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring(The Composite ID)

A globally unique identifier for the venue/product.

datestring(date)(Reservation Date)

The date of the booking.

timestring(time)(Reservation Time)

The time of the booking.

partySizeinteger(int32)(Party Size)

Number of guests for the booking.

statusstring(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(First Name)

Guest's first name.

lastNamestring(Last Name)

Guest's last name.

emailstring(email)(Email)

Email address of the guest.

phonestring(Phone)

Phone number of the guest.

venueGroupNamestring(Venue Group Name)

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

locationobject(Location)
durationinteger(int32)(Duration)

Duration of the booking in minutes.

productNamestring(Product Type)

Name of the product or service reserved.

notesstring(Notes)

Additional notes for the booking.

createdDatestring(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring(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(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.

referencestring(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
application/json
{ "id": "string", "compositeId": "string", "date": "2019-08-24", "time": "14:15:22Z", "partySize": 0, "status": "Confirmed", "reference": "string", "firstName": "string", "lastName": "string", "email": "user@example.com", "phone": "string", "venueGroupName": "string", "location": { "area": "string", "city": "string", "lat": 0.1, "lng": 0.1, "street": "string", "postCode": "string", "gPlace": "string" }, "duration": 0, "productName": "string", "notes": "string", "createdDate": "2019-08-24T14:15:22Z", "lastUpdate": "2019-08-24T14:15:22Z", "preorders": { "packages": [], "menus": [] }, "partnerBookingId": "string", "operatorBookingId": "string" }

Request

Security
Production(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.

Example: bottomlessbrunch.com
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|e4d909c290d0fb1ca068ffaddf22cbd0"
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-02-15"
timestring or null(time)required

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

Example: "18:30"
durationinteger or null

The duration of the booking in minutes.

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

The guest’s email address.

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

The guest’s phone number.

Example: 1234567890
notesstring or null

Any additional booking notes or special requests.

Example: "Please prepare a birthday cake."
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: bottomlessbrunch.com' \
  -d '{
    "compositeId": "29|X9|275cc44dd2e2496fba44857c9257443a|e4d909c290d0fb1ca068ffaddf22cbd0",
    "firstName": "John",
    "lastName": "Doe",
    "partySize": 4,
    "date": "2025-02-15",
    "time": "18:30",
    "duration": 120,
    "email": "john.doe@example.com",
    "phone": 1234567890,
    "notes": "Please prepare a birthday cake."
  }'

Responses

Reservation details

Bodyapplication/json
idstring(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring(The Composite ID)

A globally unique identifier for the venue/product.

datestring(date)(Reservation Date)

The date of the booking.

timestring(time)(Reservation Time)

The time of the booking.

partySizeinteger(int32)(Party Size)

Number of guests for the booking.

statusstring(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(First Name)

Guest's first name.

lastNamestring(Last Name)

Guest's last name.

emailstring(email)(Email)

Email address of the guest.

phonestring(Phone)

Phone number of the guest.

venueGroupNamestring(Venue Group Name)

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

locationobject(Location)
durationinteger(int32)(Duration)

Duration of the booking in minutes.

productNamestring(Product Type)

Name of the product or service reserved.

notesstring(Notes)

Additional notes for the booking.

createdDatestring(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring(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(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.

referencestring(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
application/json
{ "id": "string", "compositeId": "string", "date": "2019-08-24", "time": "14:15:22Z", "partySize": 0, "status": "Confirmed", "reference": "string", "firstName": "string", "lastName": "string", "email": "user@example.com", "phone": "string", "venueGroupName": "string", "location": { "area": "string", "city": "string", "lat": 0.1, "lng": 0.1, "street": "string", "postCode": "string", "gPlace": "string" }, "duration": 0, "productName": "string", "notes": "string", "createdDate": "2019-08-24T14:15:22Z", "lastUpdate": "2019-08-24T14:15:22Z", "preorders": { "packages": [], "menus": [] }, "partnerBookingId": "string", "operatorBookingId": "string" }

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
Production(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.

Example: bottomlessbrunch.com
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 or null

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: bottomlessbrunch.com' \
  -d '[
    {
      "op": "replace",
      "path": "/email",
      "value": "newemail@example.com"
    },
    {
      "op": "replace",
      "path": "/firstName",
      "value": "John"
    }
  ]'

Responses

Booking successfully updated

Bodyapplication/json
idstring(The Booking ID)

A globally unique identifier for the booking.

compositeIdstring(The Composite ID)

A globally unique identifier for the venue/product.

datestring(date)(Reservation Date)

The date of the booking.

timestring(time)(Reservation Time)

The time of the booking.

partySizeinteger(int32)(Party Size)

Number of guests for the booking.

statusstring(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(First Name)

Guest's first name.

lastNamestring(Last Name)

Guest's last name.

emailstring(email)(Email)

Email address of the guest.

phonestring(Phone)

Phone number of the guest.

venueGroupNamestring(Venue Group Name)

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

locationobject(Location)
durationinteger(int32)(Duration)

Duration of the booking in minutes.

productNamestring(Product Type)

Name of the product or service reserved.

notesstring(Notes)

Additional notes for the booking.

createdDatestring(date-time)(Created Date)

Timestamp when the booking was created.

lastUpdatestring(date-time)(Last Updated)

Timestamp of the last booking update.

preordersobject or null

Preordered items for the booking

partnerBookingIdstring(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(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.

referencestring(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
application/json
{ "id": "string", "compositeId": "string", "date": "2019-08-24", "time": "14:15:22Z", "partySize": 0, "status": "Confirmed", "reference": "string", "firstName": "string", "lastName": "string", "email": "user@example.com", "phone": "string", "venueGroupName": "string", "location": { "area": "string", "city": "string", "lat": 0.1, "lng": 0.1, "street": "string", "postCode": "string", "gPlace": "string" }, "duration": 0, "productName": "string", "notes": "string", "createdDate": "2019-08-24T14:15:22Z", "lastUpdate": "2019-08-24T14:15:22Z", "preorders": { "packages": [], "menus": [] }, "partnerBookingId": "string", "operatorBookingId": "string" }

Request

Security
Production(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.

Example: bottomlessbrunch.com
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: bottomlessbrunch.com'

Responses

Booking cancelled successfully

Response
No content

Request

Returns a list of all available product categories used to classify venue products (e.g., Breakfast, Lunch, Dinner, Afternoon Tea).

Security
Production(Required scopes:
venue:read
)
or Sandbox(Required scopes:
venue:read
)
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.

Example: bottomlessbrunch.com
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/category \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Correlation-ID: 11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA' \
  -H 'X-Partner-Reference: bottomlessbrunch.com'

Responses

A list of product categories

Bodyapplication/json
dataArray of objects(ProductCategory)

List of available product categories

Response
application/json
{ "data": [ {} ] }

Information about the booking

Operations