ποΈGet booking!
APIs for managing reservations, including creating, updating, and canceling table bookings within the restaurant
βΉοΈ The Booking Engine is the core feature, allowing customers to make reservations, choose rooms, slot times, number of persons and cancel existing bookings. βοΈ Use the base resource URL for the following examples, or see the complete collection
https://api.octorate.com/octotable-pms/api/v2
π Find all reservations
GET
/reservations
Retrieves a list of all reservations for the specified property (e.g., restaurant) using the property ID see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Query params
next_cursor
string
Pagination cursor
limit
int
Elements limit per page
start_date
date [YYYY-MM-DD]
Start day of search
start_hour
[HH:MM:SS]
Starting hour of the reservation
end_date
date [YYYY-MM-DD]
End day of search
status[]
[WAITING, ACCEPTED, CANCELLED, CONFIRMED, EXPIRED, PREPAY, OUTOFORDER, REJECTED]
The status of reservation
text_search
string
The text search by customer name, last name or phone number
service_ids[]
[int]
The id list of services
room_ids[]
[int]
The id list of rooms
incoming
Boolean
Search criteria to retrieve incoming reservations
arrived
Boolean
Search criteria to retrieve arrived reservations
departed
Boolean
Search criteria to retrieve departed reservations
Response
{
"data": [
{
"id": 32992280,
"pax": 2,
"status": "CANCELLED",
"customer": {
"id": 33942074,
"first_name": "Adam",
"last_name": "Devis",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 33841,
"name": "Custom dinner"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 23288,
"name": "Sala Nuova"
},
"end_date": "2025-05-15T14:00:00",
"last_status_change": "2025-05-14T17:06:46",
"notes": "",
"special_request": "",
"start_date": "2025-05-15",
"start_hour": "13:00:00",
"tables": [
{
"id": 197934,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"online": true,
"room_id": 23288
}
],
"waiting_list": false
},
{
"id": 32992285,
"pax": 2,
"status": "CANCELLED",
"customer": {
"id": 33942079,
"first_name": "Adam 2",
"last_name": "Devis 2",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 33841,
"name": "Custom dinner"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 23288,
"name": "Sala Nuova"
},
"end_date": "2025-05-15T14:00:00",
"last_status_change": "2025-05-14T17:09:40",
"notes": "",
"special_request": "",
"start_date": "2025-05-15",
"start_hour": "13:00:00",
"tables": [
{
"id": 197934,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"online": true,
"room_id": 23288
}
],
"waiting_list": false
},
{
"id": 32992293,
"pax": 2,
"status": "CANCELLED",
"customer": {
"id": 33942086,
"first_name": "Adam 2",
"last_name": "Devis 2",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 33841,
"name": "Custom dinner"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 23288,
"name": "Sala Nuova"
},
"end_date": "2025-05-15T14:00:00",
"last_status_change": "2025-05-14T17:09:44",
"start_date": "2025-05-15",
"start_hour": "13:00:00",
"tables": [
{
"id": 197934,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"online": true,
"room_id": 23288
}
],
"waiting_list": false
}
]
}
π Find reservation by ID
GET
/reservations/{reservation_id}
Retrieves a reservations by its ID see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Response
{
"data": [
{
"id": 31753958,
"pax": 2,
"status": "CONFIRMED",
"customer": {
"id": 33499559,
"first_name": "Adam",
"last_name": "Devis",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 30911,
"name": "Lunch"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 21344,
"name": "Secondary dining room"
},
"end_date": "2024-12-14T14:30:00",
"start_day": "2024-12-14",
"start_hour": "13:30:00",
"tables": [
{
"id": 172246,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"room_id": 21344
}
],
"waiting_list": false
}
]
}
π Create a new reservation
POST
/reservations
Creates a new reservation for the specified property using the provided reservation details see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Body
start_date
date [YYYY-MM-DD]
The start date
start_hour
time [HH:mm:ss]
The start hour
pax
int
The number of person
channel
enum [OCTOTABLE_BOOK, OCTOTABLE_ADMIN]
OCTOTABLE_BOOK: This indicates reservations made through the Booking Engine. resents reservations made through Reserve with Google. OCTOTABLE_ADMIN: Refers to self reservations.
customer
Customer
The customer who makes the reservation
customer.first_name
string
The customers first name
customer.last_name
string
The customer last name
customer.email
string
The customers email
customer.phone
string
The customers phone
service_id
int
The id of the selected service
room_id
int
The id of the selected room
table_ids
[int]
The list of ids of the selected tables
waiting_list
boolean
Keep reservation in waiting list
Response
{
"data": [
{
"id": 31753956,
"pax": 2,
"status": "WAITING",
"customer": {
"id": 33499557,
"first_name": "Adam",
"last_name": "Devis",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 30907,
"name": "Pranzo nuovo"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 21343,
"name": "main dining room"
},
"end_date": "2024-12-12T13:30:00",
"start_date": "2024-12-12",
"start_hour": "12:30:00",
"tables": [
{
"id": 172245,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"room_id": 21343
}
],
"waiting_list": false
}
]
}
π’ Enable Google Engine
POST
/reservations/google
Activates the Google Engine for a specified property see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Body
enable_google_engine
boolean
Enable the google engine
Response
{
"status": "ACCEPTED"
}
π Update a reservation
PUT
/reservations/{reservation_id}
Update an existing reservation see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Body
start_day
date [YYYY-MM-DD ]
The start day
start_hour
time [HH:mm:ss]
The start hour
pax
int
The number of person
service_id
int
The id of the selected service
room_id
int
The id of the selected room
table_ids
[int]
The list of ids of the selected tables
Response
{
"data": [
{
"id": 31753936,
"pax": 2,
"status": "CONFIRMED",
"customer": {
"id": 3255826,
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@demo.com",
"phone": "55555555555"
},
"service": {
"id": 17884,
"name": "Breakfast"
},
"channel": "OCTOTABLE_ADMIN",
"start_day": "2024-10-30",
"start_hour": "18:00:00"
}
]
}
π Check in
PATCH
/reservations/{reservation_id}/checkin
Customers check-in see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Query params
undo
boolean
Undo check in if it has been made by mistake
Response
{
"data": [
{
"id": 31753956,
"pax": 2,
"status": "ACCEPTED",
"customer": {
"id": 33499557,
"first_name": "Adam",
"last_name": "Devis",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 30907,
"name": "Pranzo nuovo"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 21343,
"name": "main dining room"
},
"checkin_date": "2024-12-12T17:04:04.564",
"end_date": "2024-12-12T13:30:00",
"expiration_date": "2024-12-12T17:13:49",
"start_day": "2024-12-12",
"start_hour": "12:30:00",
"tables": [
{
"id": 172245,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"room_id": 21343
}
],
"waiting_list": false
}
]
}
π Check out
PATCH
/reservations/{reservation_id}/checkout
Customers check out see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Query param
undo
boolean
Undo check out if it has been made by mistake
Response
{
"data": [
{
"id": 31753958,
"pax": 2,
"status": "CONFIRMED",
"customer": {
"id": 33499559,
"first_name": "Adam",
"last_name": "Devis",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 30911,
"name": "Lunch"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 21344,
"name": "Secondary dining room"
},
"end_date": "2024-12-14T14:30:00",
"start_day": "2024-12-14",
"start_hour": "13:30:00",
"tables": [
{
"id": 172246,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"room_id": 21344
}
],
"waiting_list": false
}
]
}
π Update status
PATCH
/reservations/{reservation_id}
Update the status of the reservation in waiting list. If on the waiting list, the reservation should become accepted, declined, or confirmed see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Query param
status
enum
The status of the reservation in waiting list
Response
{
"data": [
{
"id": 31753956,
"pax": 2,
"status": "WAITING",
"customer": {
"id": 33499557,
"first_name": "Adam",
"last_name": "Devis",
"email": "adam.devis@email.com",
"phone": "3332211456"
},
"service": {
"id": 30907,
"name": "Pranzo nuovo"
},
"channel": "OCTOTABLE_ADMIN",
"room": {
"id": 21343,
"name": "main dining room"
},
"end_date": "2024-12-12T13:30:00",
"start_day": "2024-12-12",
"start_hour": "12:30:00",
"tables": [
{
"id": 172245,
"name": "T8",
"bookable": true,
"free": true,
"group": false,
"room_id": 21343
}
],
"waiting_list": false
}
]
}
ποΈ Delete a reservation
DELETE
/reservations/{reservation_id}
Delete a reservation see more
Headers
Content-Type
application/json
Authorization
Bearer <token>
Property
<your_property_id>
Response
{
"data": [
172221
]
}
π ADDITIONAL NOTES
Tables
Bookable / Online: These parameters indicate whether a table can be booked online (via the booking engine or Reserve with Google) or only through manual methods such as phone or walk-in (offline).
Free: A table is considered free if it has no active reservation during the selected time slot. This status is based on the
average_stay
setting. For example, if the average stay is 60 minutes and a reservation starts at 1:00 p.m., the table is marked as occupied from 1:00 p.m. to 2:00 p.m. However, it will also be considered unavailable starting from 12:00 p.m., in order to respect the buffer time before the next reservation.Group: Indicates whether the table is a grouped table (i.e. a combination of two or more individual tables).
Group = true β The table is formed by merging smaller tables (e.g., Indoor 1 {2 pax} + Indoor 2 {2 pax} = Indoor 1+2 {4 pax}).
Group = false β It is a standalone table.
Best_Choice: This parameter helps the system determine the most suitable table for a given party size. The goal is to optimize table usage by selecting the table that best fits the number of guests (e.g., assigning a 2-pax table to a 2-person reservation instead of a 4-pax table).
Last updated