Create Booking
curl --request POST \
--url https://ipos.dev.nowbookit.com/Bookings \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"numOfPeople": 1073741824,
"time": "<string>",
"bookingTimeAsUtc": "<string>",
"bookingId": "<string>",
"serviceId": "<string>",
"sectionId": "<string>",
"customer": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"email": "<string>",
"phone": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"country": "<string>"
}
},
"notes": "<string>",
"tables": [
"<string>"
],
"links": [
{
"linkName": "<string>",
"linkURL": "<string>"
}
],
"status": "<string>",
"duration": 123,
"staffId": "<string>",
"staffName": "<string>"
}
'import requests
url = "https://ipos.dev.nowbookit.com/Bookings"
payload = {
"numOfPeople": 1073741824,
"time": "<string>",
"bookingTimeAsUtc": "<string>",
"bookingId": "<string>",
"serviceId": "<string>",
"sectionId": "<string>",
"customer": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"email": "<string>",
"phone": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"country": "<string>"
}
},
"notes": "<string>",
"tables": ["<string>"],
"links": [
{
"linkName": "<string>",
"linkURL": "<string>"
}
],
"status": "<string>",
"duration": 123,
"staffId": "<string>",
"staffName": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
numOfPeople: 1073741824,
time: '<string>',
bookingTimeAsUtc: '<string>',
bookingId: '<string>',
serviceId: '<string>',
sectionId: '<string>',
customer: {
id: '<string>',
firstName: '<string>',
lastName: '<string>',
company: '<string>',
email: '<string>',
phone: '<string>',
address: {
line1: '<string>',
line2: '<string>',
city: '<string>',
state: '<string>',
postalCode: '<string>',
country: '<string>'
}
},
notes: '<string>',
tables: ['<string>'],
links: [{linkName: '<string>', linkURL: '<string>'}],
status: '<string>',
duration: 123,
staffId: '<string>',
staffName: '<string>'
})
};
fetch('https://ipos.dev.nowbookit.com/Bookings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ipos.dev.nowbookit.com/Bookings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'numOfPeople' => 1073741824,
'time' => '<string>',
'bookingTimeAsUtc' => '<string>',
'bookingId' => '<string>',
'serviceId' => '<string>',
'sectionId' => '<string>',
'customer' => [
'id' => '<string>',
'firstName' => '<string>',
'lastName' => '<string>',
'company' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'address' => [
'line1' => '<string>',
'line2' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postalCode' => '<string>',
'country' => '<string>'
]
],
'notes' => '<string>',
'tables' => [
'<string>'
],
'links' => [
[
'linkName' => '<string>',
'linkURL' => '<string>'
]
],
'status' => '<string>',
'duration' => 123,
'staffId' => '<string>',
'staffName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ipos.dev.nowbookit.com/Bookings"
payload := strings.NewReader("{\n \"numOfPeople\": 1073741824,\n \"time\": \"<string>\",\n \"bookingTimeAsUtc\": \"<string>\",\n \"bookingId\": \"<string>\",\n \"serviceId\": \"<string>\",\n \"sectionId\": \"<string>\",\n \"customer\": {\n \"id\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"company\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"address\": {\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"country\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"tables\": [\n \"<string>\"\n ],\n \"links\": [\n {\n \"linkName\": \"<string>\",\n \"linkURL\": \"<string>\"\n }\n ],\n \"status\": \"<string>\",\n \"duration\": 123,\n \"staffId\": \"<string>\",\n \"staffName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://ipos.dev.nowbookit.com/Bookings")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"numOfPeople\": 1073741824,\n \"time\": \"<string>\",\n \"bookingTimeAsUtc\": \"<string>\",\n \"bookingId\": \"<string>\",\n \"serviceId\": \"<string>\",\n \"sectionId\": \"<string>\",\n \"customer\": {\n \"id\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"company\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"address\": {\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"country\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"tables\": [\n \"<string>\"\n ],\n \"links\": [\n {\n \"linkName\": \"<string>\",\n \"linkURL\": \"<string>\"\n }\n ],\n \"status\": \"<string>\",\n \"duration\": 123,\n \"staffId\": \"<string>\",\n \"staffName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ipos.dev.nowbookit.com/Bookings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"numOfPeople\": 1073741824,\n \"time\": \"<string>\",\n \"bookingTimeAsUtc\": \"<string>\",\n \"bookingId\": \"<string>\",\n \"serviceId\": \"<string>\",\n \"sectionId\": \"<string>\",\n \"customer\": {\n \"id\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"company\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"address\": {\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"country\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"tables\": [\n \"<string>\"\n ],\n \"links\": [\n {\n \"linkName\": \"<string>\",\n \"linkURL\": \"<string>\"\n }\n ],\n \"status\": \"<string>\",\n \"duration\": 123,\n \"staffId\": \"<string>\",\n \"staffName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"bookingId": "<string>",
"time": "2023-11-07T05:31:56Z",
"numOfPeople": 123,
"bookingStatus": "<string>",
"duration": 123,
"tableNames": [
"<string>"
],
"serviceId": "<string>",
"serviceName": "<string>",
"sectionId": "<string>",
"isSuccess": true,
"errorMessage": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Bookings
Create Booking
Create a new booking at your venue from your POS or external system
POST
/
Bookings
Create Booking
curl --request POST \
--url https://ipos.dev.nowbookit.com/Bookings \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"numOfPeople": 1073741824,
"time": "<string>",
"bookingTimeAsUtc": "<string>",
"bookingId": "<string>",
"serviceId": "<string>",
"sectionId": "<string>",
"customer": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"email": "<string>",
"phone": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"country": "<string>"
}
},
"notes": "<string>",
"tables": [
"<string>"
],
"links": [
{
"linkName": "<string>",
"linkURL": "<string>"
}
],
"status": "<string>",
"duration": 123,
"staffId": "<string>",
"staffName": "<string>"
}
'import requests
url = "https://ipos.dev.nowbookit.com/Bookings"
payload = {
"numOfPeople": 1073741824,
"time": "<string>",
"bookingTimeAsUtc": "<string>",
"bookingId": "<string>",
"serviceId": "<string>",
"sectionId": "<string>",
"customer": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"email": "<string>",
"phone": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"country": "<string>"
}
},
"notes": "<string>",
"tables": ["<string>"],
"links": [
{
"linkName": "<string>",
"linkURL": "<string>"
}
],
"status": "<string>",
"duration": 123,
"staffId": "<string>",
"staffName": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
numOfPeople: 1073741824,
time: '<string>',
bookingTimeAsUtc: '<string>',
bookingId: '<string>',
serviceId: '<string>',
sectionId: '<string>',
customer: {
id: '<string>',
firstName: '<string>',
lastName: '<string>',
company: '<string>',
email: '<string>',
phone: '<string>',
address: {
line1: '<string>',
line2: '<string>',
city: '<string>',
state: '<string>',
postalCode: '<string>',
country: '<string>'
}
},
notes: '<string>',
tables: ['<string>'],
links: [{linkName: '<string>', linkURL: '<string>'}],
status: '<string>',
duration: 123,
staffId: '<string>',
staffName: '<string>'
})
};
fetch('https://ipos.dev.nowbookit.com/Bookings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ipos.dev.nowbookit.com/Bookings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'numOfPeople' => 1073741824,
'time' => '<string>',
'bookingTimeAsUtc' => '<string>',
'bookingId' => '<string>',
'serviceId' => '<string>',
'sectionId' => '<string>',
'customer' => [
'id' => '<string>',
'firstName' => '<string>',
'lastName' => '<string>',
'company' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'address' => [
'line1' => '<string>',
'line2' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postalCode' => '<string>',
'country' => '<string>'
]
],
'notes' => '<string>',
'tables' => [
'<string>'
],
'links' => [
[
'linkName' => '<string>',
'linkURL' => '<string>'
]
],
'status' => '<string>',
'duration' => 123,
'staffId' => '<string>',
'staffName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ipos.dev.nowbookit.com/Bookings"
payload := strings.NewReader("{\n \"numOfPeople\": 1073741824,\n \"time\": \"<string>\",\n \"bookingTimeAsUtc\": \"<string>\",\n \"bookingId\": \"<string>\",\n \"serviceId\": \"<string>\",\n \"sectionId\": \"<string>\",\n \"customer\": {\n \"id\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"company\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"address\": {\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"country\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"tables\": [\n \"<string>\"\n ],\n \"links\": [\n {\n \"linkName\": \"<string>\",\n \"linkURL\": \"<string>\"\n }\n ],\n \"status\": \"<string>\",\n \"duration\": 123,\n \"staffId\": \"<string>\",\n \"staffName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://ipos.dev.nowbookit.com/Bookings")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"numOfPeople\": 1073741824,\n \"time\": \"<string>\",\n \"bookingTimeAsUtc\": \"<string>\",\n \"bookingId\": \"<string>\",\n \"serviceId\": \"<string>\",\n \"sectionId\": \"<string>\",\n \"customer\": {\n \"id\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"company\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"address\": {\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"country\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"tables\": [\n \"<string>\"\n ],\n \"links\": [\n {\n \"linkName\": \"<string>\",\n \"linkURL\": \"<string>\"\n }\n ],\n \"status\": \"<string>\",\n \"duration\": 123,\n \"staffId\": \"<string>\",\n \"staffName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ipos.dev.nowbookit.com/Bookings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"numOfPeople\": 1073741824,\n \"time\": \"<string>\",\n \"bookingTimeAsUtc\": \"<string>\",\n \"bookingId\": \"<string>\",\n \"serviceId\": \"<string>\",\n \"sectionId\": \"<string>\",\n \"customer\": {\n \"id\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"company\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"address\": {\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"country\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"tables\": [\n \"<string>\"\n ],\n \"links\": [\n {\n \"linkName\": \"<string>\",\n \"linkURL\": \"<string>\"\n }\n ],\n \"status\": \"<string>\",\n \"duration\": 123,\n \"staffId\": \"<string>\",\n \"staffName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"bookingId": "<string>",
"time": "2023-11-07T05:31:56Z",
"numOfPeople": 123,
"bookingStatus": "<string>",
"duration": 123,
"tableNames": [
"<string>"
],
"serviceId": "<string>",
"serviceName": "<string>",
"sectionId": "<string>",
"isSuccess": true,
"errorMessage": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}string
required
Your partner API key.
Request Body
string
Booking datetime in the venue’s local timezone. Format:
yyyy-MM-dd HH:mmExample: "2024-06-15 19:00"At least one of time or bookingTimeAsUtc is required. Ignored if bookingTimeAsUtc is also provided.string
Booking datetime in UTC. Format:
yyyy-MM-ddTHH:mm:ssZExample: "2024-06-15T09:00:00Z"At least one of time or bookingTimeAsUtc is required. When provided, this takes precedence over time.integer
required
Number of guests in the party.
string
NowBookIt Service ID to assign this booking to (e.g.,
"Dinner" service). Fetch available services from your NowBookIt venue configuration.string
NowBookIt Section ID (area of the venue, e.g., main floor, terrace).
string
Your POS’s external booking identifier. Stored in NowBookIt for cross-reference.
string
Free-text booking notes (e.g., dietary requirements, special requests).
string
Initial booking status from your POS. See GET /Resources/booking-statuses for valid values.
integer
Duration of the booking in minutes.
string
ID of the staff member managing the booking.
string
Name of the staff member managing the booking.
array
List of NowBookIt Table IDs to assign to this booking. Fetch available table IDs using GET /Bookings/tables.Example:
["tbl_001", "tbl_002"]object
array
Either
time or bookingTimeAsUtc is required. If both are provided, bookingTimeAsUtc takes precedence.Response
string
The NowBookIt-assigned booking ID for the newly created booking.
string
Confirmed booking time in venue local timezone.
integer
Confirmed party size.
string
Status of the booking after creation.
integer
Confirmed duration in minutes.
array
Names of tables assigned to this booking.
string
NowBookIt service ID assigned to this booking.
string
Human-readable service name.
string
NowBookIt section ID assigned to this booking.
boolean
true if the booking was created successfully.string
Error detail when
isSuccess is false. null on success.Examples
curl -X POST https://{base_url}/Bookings \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"bookingTimeAsUtc": "2024-06-15T09:00:00Z",
"numOfPeople": 4,
"serviceId": "svc_dinner",
"notes": "Birthday celebration",
"customer": {
"firstName": "Jane",
"lastName": "Smith",
"email": "[email protected]",
"phone": "+61412345678"
}
}'
curl -X POST https://{base_url}/Bookings \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"bookingTimeAsUtc": "2024-06-15T09:00:00Z",
"numOfPeople": 2,
"duration": 90,
"tables": ["tbl_001"],
"customer": {
"firstName": "Tom",
"lastName": "Jones",
"email": "[email protected]"
}
}'
const response = await fetch("https://{base_url}/Bookings", {
method: "POST",
headers: {
"X-API-KEY": "your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
bookingTimeAsUtc: "2024-06-15T09:00:00Z",
numOfPeople: 4,
serviceId: "svc_dinner",
customer: {
firstName: "Jane",
lastName: "Smith",
email: "[email protected]",
},
}),
});
const booking = await response.json();
console.log("Created booking:", booking.bookingId);
Example Response (201)
{
"bookingId": "bk_new123",
"time": "2024-06-15 19:00",
"numOfPeople": 4,
"bookingStatus": "confirmed",
"duration": 90,
"tableNames": ["Table 5"],
"serviceId": "svc_dinner",
"serviceName": "Dinner",
"sectionId": null,
"isSuccess": true,
"errorMessage": null
}
Status Codes
| Code | Description |
|---|---|
201 | Booking created successfully |
400 | Validation error — check errorMessage in response or missing required fields |
401 | Invalid or missing X-API-KEY |
500 | Internal server error |
Authorizations
Headers
API Key authentication header
Body
application/json
The number of guests on booking.
Required range:
1 <= x <= 2147483647Booking Date and time in Venue's Timezone. Valid Format: 'yyyy-MM-dd HH:mm'
Booking Date and time in UTC Timezone. Valid Format: 'yyyy-MM-ddTHH:mm:ssZ'
Show child attributes
Show child attributes
Nominate NBI Table Ids for this Booking.
Show child attributes
Show child attributes
The Booking duration in Minutes.
Response
Create new Booking from API
The new NBI Booking Id.
The Booking Date and Time.
⌘I