Skip to main content
POST
/
Bookings
Create Booking
curl --request POST \
  --url https://{base_url}/Bookings \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <x-api-key>' \
  --data '
{
  "time": "<string>",
  "bookingTimeAsUtc": "<string>",
  "numOfPeople": 123,
  "serviceId": "<string>",
  "sectionId": "<string>",
  "bookingId": "<string>",
  "notes": "<string>",
  "status": "<string>",
  "duration": 123,
  "staffId": "<string>",
  "staffName": "<string>",
  "tables": [
    {}
  ],
  "customer": {
    "id": "<string>",
    "firstName": "<string>",
    "lastName": "<string>",
    "company": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "address": "<string>"
  },
  "links": [
    {
      "linkName": "<string>",
      "linkURL": "<string>"
    }
  ]
}
'
{
  "bookingId": "<string>",
  "time": "<string>",
  "numOfPeople": 123,
  "bookingStatus": "<string>",
  "duration": 123,
  "tableNames": [
    {}
  ],
  "serviceId": "<string>",
  "serviceName": "<string>",
  "sectionId": "<string>",
  "isSuccess": true,
  "errorMessage": "<string>"
}
X-API-KEY
string
required
Your partner API key.

Request Body

time
string
Booking datetime in the venue’s local timezone. Format: yyyy-MM-dd HH:mmExample: "2024-06-15 19:00"Ignored if bookingTimeAsUtc is also provided.
bookingTimeAsUtc
string
Booking datetime in UTC. Format: yyyy-MM-ddTHH:mm:ssZExample: "2024-06-15T09:00:00Z"When provided, this takes precedence over time.
numOfPeople
integer
required
Number of guests in the party.
serviceId
string
NowBookIt Service ID to assign this booking to (e.g., "Dinner" service). Fetch available services from your NowBookIt venue configuration.
sectionId
string
NowBookIt Section ID (area of the venue, e.g., main floor, terrace).
bookingId
string
Your POS’s external booking identifier. Stored in NowBookIt for cross-reference.
notes
string
Free-text booking notes (e.g., dietary requirements, special requests).
status
string
Initial booking status from your POS. See GET /Resources/booking-statuses for valid values.
duration
integer
Duration of the booking in minutes.
staffId
string
ID of the staff member managing the booking.
staffName
string
Name of the staff member managing the booking.
tables
array
List of NowBookIt Table IDs to assign to this booking. Fetch available table IDs using GET /Bookings/tables.Example: ["tbl_001", "tbl_002"]
customer
object
Guest/customer details.
Optional external links to associate with the booking (e.g., order URLs, reservation links).
Either time or bookingTimeAsUtc is required. If both are provided, bookingTimeAsUtc takes precedence.

Response

bookingId
string
The NowBookIt-assigned booking ID for the newly created booking.
time
string
Confirmed booking time in venue local timezone.
numOfPeople
integer
Confirmed party size.
bookingStatus
string
Status of the booking after creation.
duration
integer
Confirmed duration in minutes.
tableNames
array
Names of tables assigned to this booking.
serviceId
string
NowBookIt service ID assigned to this booking.
serviceName
string
Human-readable service name.
sectionId
string
NowBookIt section ID assigned to this booking.
isSuccess
boolean
true if the booking was created successfully.
errorMessage
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": "jane.smith@example.com",
      "phone": "+61412345678"
    }
  }'

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

CodeDescription
201Booking created successfully
400Validation error — check errorMessage in response or missing required fields
401Invalid or missing X-API-KEY
500Internal server error