Skip to main content
POST
Create a reservation
Service, section and option ids come from Get Availability; tagIds come from List Venue Tags.

Authorizations

Authorization
string
header
required

Your API key. See Authorization to create one.

Path Parameters

venueId
string
required

The venue being addressed. Every endpoint on this API is venue-scoped.

Minimum string length: 1
Example:

"6247"

Body

application/json

At least one of firstName / lastName, and at least one of email / mobileNumber, must be present. Unknown fields are ignored rather than rejected. The originating channel is taken from your credential.

localBookingDateAndTime
string
required

Venue-local wall clock. A time component is required — a bare date means midnight, which is almost never a real sitting. Must be outside the venue's notice period and within its future-booking horizon.

Example:

"2026-09-01T18:30:00"

partySize
integer
required

Also limited by the venue's maximum party size.

Required range: 1 <= x <= 1000
Example:

2

serviceId
string
required

The service, by id — take it from the availability response.

Minimum string length: 1
Example:

"service_dinner"

sectionId
string

Preferred section, by id. Absent — or the any / all sentinels — means no preference and the best match is picked. A named section that cannot seat the party fails with no fallback.

Example:

"section_main"

firstName
string

Guest's first name. At least one of firstName / lastName is required; a missing pair is reported against firstName.

Maximum string length: 100
lastName
string

Guest's last name.

Maximum string length: 200
email
string<email>

Guest's email. At least one of email / mobileNumber is required; a missing pair is reported against email.

Maximum string length: 250
mobileNumber
string

Guest's mobile number, in international format.

Maximum string length: 20
subscribed
boolean
default:false

Marketing consent. Recorded on the reservation and sent to the guest's customer record.

termsAgreementChecked
boolean
default:false

Terms acceptance. Sent to the customer record only; the reservation does not carry it.

emailSmsNotifications
boolean
default:false

Not supported yet. Accepted and recorded on the reservation, but it has no effect today: no confirmation email or SMS is sent for a reservation created through this API. Send your own guest confirmation.

companyName
string

Guest's company. Forwarded to the customer record.

Maximum string length: 100
membershipNumber
string

Accepted and forwarded to the guest's customer record. Not currently stored on the reservation itself.

Maximum string length: 30
notes
string

Free-text note for the venue, e.g. a seating request.

Maximum string length: 1000
tagIds
string[]

Tag ids from the tags endpoint.

Maximum array length: 20
Minimum string length: 1
selectedOptions
object[]

The booking options the guest chose. Which selections are allowed depends on the service — see the pricing and option lists in the availability response. A quantity of 0 is accepted and dropped, so you may post one entry per option on the menu.

Maximum array length: 50

Response

The reservation was written, with status Unconfirmed.

Payment is not collected through this API, so paymentDetails comes back as NoPayment with total: 0 even for a priced service. Read what the guest will owe at the venue from the availability response's pricing, never from here, and do not build a checkout step against this response.

A reservation. Absent optional fields are omitted from the JSON rather than sent as null or [].

id
string
required

The identifier that addresses this reservation.

Example:

"booking_2026-08-24_G3F7PA8HO438Z_1787294227662"

bookingDateTime
string
required

Venue-local wall clock, ISO formatted. Not an absolute instant.

Example:

"2026-08-24T14:00:00"

partySize
integer
required
Example:

2

tableIds
string[]
required

The tables allocated. Empty only for a standby or waitlist entry.

tagIds
string[]
required
optionsSelected
object[]
required

Booking options the guest chose, with the prices that determined what was payable.

paymentDetails
object
required

Where the reservation stands on payment. Always present, including for reservations that take no payment.

bookingRef
string

The reference you quote to a guest. A different identifier from id, and not usable as a path parameter.

Example:

"94227662"

status
enum<string>

The status code the reservation carries, joining onto the reservation-statuses endpoint's code. U unconfirmed, P$ pending payment, C confirmed, X cancelled, NS cancelled no-show, S seated, F finished, SP standby pending, TX SMS sent or SMS failed.

Several statuses can share one code, so treat code as a coarse grouping and statusId as the precise value. Venues can add statuses of their own, so read the venue's own set from the reservation-statuses endpoint rather than assuming this list is closed.

Available options:
U,
P$,
C,
X,
NS,
S,
F,
SP,
TX
statusId
string

The status's id. Several statuses can share one code, so this is what identifies the status the reservation is in — and the value a patch sets status to.

Example:

"status_seated_main"

reservationType
enum<string>

A standby or waitlist entry is the same kind of record as a confirmed booking.

Available options:
Booking,
WaitList,
StandbyList
durationMinutes
integer
Example:

120

service
object
diner
object

Guest details recorded on the reservation.

requestedSectionId
string

The section the reservation asked for, which is often not where the allocated table sits. Absent when no preference was given.

movedFromBookingId
string

The reservation this one replaced, set when a reservation was moved to another calendar date. The same id coming back means an ordinary change; a new id with this set means a replacement, and the value names the reservation to stop tracking.

Example:

"booking_2026-08-24_G3F7PA8HO438Z_1787294227662"

notes
string
source
string

Originating channel. Read-only — set from your credential when the reservation is created.

Example:

"online"

createdAt
string<date-time>

When the reservation was made. An absolute instant, unlike bookingDateTime.

updatedAt
string<date-time>