Bookings
Admin API endpoints for creating and managing bookings
Bookings
The Bookings endpoints let you create and manage bookings within your organization through the Admin API.
For customer-scoped booking history (returns bookings for a single authenticated customer), see the Customer API Bookings endpoint.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /bookings | List bookings with filtering |
POST | /bookings | Create a booking |
GET | /bookings/{bookingId} | Get a single booking |
PATCH | /bookings/{bookingId} | Update a booking |
DELETE | /bookings/{bookingId} | Delete a booking |
GET | /bookings/{bookingId}/ticket | Download a booking ticket PDF |
Authentication
All requests require a valid Admin API key:
Authorization: Bearer your_api_key_hereTest the API
Enter your Admin API key and any required values, then select Send. Requests are sent directly from your browser to the live Admin API.
The POST, PATCH, and DELETE testers change live organization data. Your API key is stored only in this browser's local storage, so use the tester on a trusted device.
Authorization
BearerAuth API key from the Tiquo dashboard (Settings > Developer > Admin API)
In: header
Query Parameters
501 <= value <= 100"low" | "medium" | "high" | "urgent"emailSearch by booking number, customer name/email
Comma-separated: draft,scheduled,confirmed,reminder_sent,waiting_room,waiting_list,checked_in,active,in_progress,completed,cancelled,no_show,rescheduled
datedateResponse Body
application/json
application/json
application/json
curl -X GET "https://api.tiquo.app/api/v1/bookings"{
"success": true,
"data": [
{
"id": "string",
"bookingNumber": "string",
"status": "draft",
"date": 0,
"startTime": "string",
"endTime": "string",
"duration": 0,
"attendeeCount": 0,
"source": "string",
"serviceId": "string",
"serviceName": "string",
"serviceGroupName": "string",
"sublocationId": "string",
"sublocationName": "string",
"customerId": "string",
"customerName": "string",
"customerEmail": "string",
"parentOrderId": "string",
"orderNumber": "string",
"orderValue": 0,
"orderPaymentStatus": "string",
"createdAt": 0,
"updatedAt": 0
}
],
"pagination": {
"hasMore": true,
"nextCursor": "string",
"pageSize": 0
},
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}Authorization
BearerAuth API key from the Tiquo dashboard (Settings > Developer > Admin API)
In: header
Request Body
application/json
0 < value1 <= value1 <= value0 <= value0 <= value0 <= value"admin""scheduled""scheduled"Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.tiquo.app/api/v1/bookings" \ -H "Content-Type: application/json" \ -d '{ "serviceId": "string", "sublocationId": "string", "date": "2019-08-24T14:15:22Z", "duration": 0 }'{
"success": true,
"data": {
"id": "string",
"bookingNumber": "string",
"status": "draft",
"date": 0,
"startTime": "string",
"endTime": "string",
"duration": 0,
"attendeeCount": 0,
"source": "string",
"serviceId": "string",
"serviceName": "string",
"serviceGroupName": "string",
"sublocationId": "string",
"sublocationName": "string",
"customerId": "string",
"customerName": "string",
"customerEmail": "string",
"parentOrderId": "string",
"orderNumber": "string",
"orderValue": 0,
"orderPaymentStatus": "string",
"createdAt": 0,
"updatedAt": 0,
"timezone": "string",
"attendees": [
{
"name": "string",
"email": "string",
"phone": "string"
}
],
"customerNotes": "string",
"internalNotes": "string",
"isLegacy": true,
"completedAt": 0,
"cancelledAt": 0,
"checkedInAt": 0
},
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}Authorization
BearerAuth API key from the Tiquo dashboard (Settings > Developer > Admin API)
In: header
Path Parameters
Booking number, confirmation code, or document ID
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://api.tiquo.app/api/v1/bookings/string"{
"success": true,
"data": {
"id": "string",
"bookingNumber": "string",
"status": "draft",
"date": 0,
"startTime": "string",
"endTime": "string",
"duration": 0,
"attendeeCount": 0,
"source": "string",
"serviceId": "string",
"serviceName": "string",
"serviceGroupName": "string",
"sublocationId": "string",
"sublocationName": "string",
"customerId": "string",
"customerName": "string",
"customerEmail": "string",
"parentOrderId": "string",
"orderNumber": "string",
"orderValue": 0,
"orderPaymentStatus": "string",
"createdAt": 0,
"updatedAt": 0,
"timezone": "string",
"attendees": [
{
"name": "string",
"email": "string",
"phone": "string"
}
],
"customerNotes": "string",
"internalNotes": "string",
"isLegacy": true,
"completedAt": 0,
"cancelledAt": 0,
"checkedInAt": 0
},
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}Authorization
BearerAuth API key from the Tiquo dashboard (Settings > Developer > Admin API)
In: header
Path Parameters
Request Body
application/json
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://api.tiquo.app/api/v1/bookings/string" \ -H "Content-Type: application/json" \ -d '{ "status": "string" }'{
"success": true,
"data": {
"id": "string",
"bookingNumber": "string",
"status": "draft",
"date": 0,
"startTime": "string",
"endTime": "string",
"duration": 0,
"attendeeCount": 0,
"source": "string",
"serviceId": "string",
"serviceName": "string",
"serviceGroupName": "string",
"sublocationId": "string",
"sublocationName": "string",
"customerId": "string",
"customerName": "string",
"customerEmail": "string",
"parentOrderId": "string",
"orderNumber": "string",
"orderValue": 0,
"orderPaymentStatus": "string",
"createdAt": 0,
"updatedAt": 0,
"timezone": "string",
"attendees": [
{
"name": "string",
"email": "string",
"phone": "string"
}
],
"customerNotes": "string",
"internalNotes": "string",
"isLegacy": true,
"completedAt": 0,
"cancelledAt": 0,
"checkedInAt": 0
},
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}Authorization
BearerAuth API key from the Tiquo dashboard (Settings > Developer > Admin API)
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
curl -X DELETE "https://api.tiquo.app/api/v1/bookings/string"{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}Authorization
BearerAuth API key from the Tiquo dashboard (Settings > Developer > Admin API)
In: header
Path Parameters
Booking number or document ID
Response Body
application/pdf
application/json
application/json
application/json
application/json
curl -X GET "https://api.tiquo.app/api/v1/bookings/string/ticket""string"{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}{
"success": false,
"error": "string",
"timestamp": "2019-08-24T14:15:22Z"
}List Bookings
GET /bookingsQuery Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (1 to 100, default 50) |
search | string | No | Full-text search across booking number and customer name/email |
status | string | No | Comma-separated list of statuses (see Booking Status Values) |
dateFrom | string | No | ISO date string for the start of a date range |
dateTo | string | No | ISO date string for the end of a date range |
Example Request
curl "https://api.tiquo.app/api/v1/bookings?status=confirmed,checked_in&limit=25" \
-H "Authorization: Bearer your_api_key_here"Response
{
"success": true,
"data": [
{
"id": "k1234567890abcdef",
"bookingNumber": "BK-A12B34",
"status": "confirmed",
"date": "2025-01-20",
"startTime": "14:00",
"endTime": "15:00",
"duration": 60,
"attendeeCount": 2,
"source": "online",
"serviceName": "Deep Tissue Massage",
"serviceGroupName": "Massage Services",
"serviceCategoryName": "Massage Services",
"ticketing": {
"qrCodeTicketsEnabled": true,
"walletTicketsEnabled": true,
"ticketDownloadUrl": "https://api.tiquo.app/api/v1/bookings/k1234567890abcdef/ticket",
"walletTicketUrl": "https://cards.tiquo.app/ticket/org_123/BK-A12B34",
"appleWalletTicketUrl": "https://cards.tiquo.app/ticket/org_123/BK-A12B34",
"googleWalletTicketUrl": "https://cards.tiquo.app/ticket/org_123/BK-A12B34"
},
"sublocationName": "Treatment Room 1",
"customerId": "k1234567890abcdef",
"customerName": "John Doe",
"customerEmail": "john@example.com",
"parentOrderId": "k1234567890abcdef",
"orderNumber": "ORD-J98UBC",
"orderValue": 84.50,
"orderPaymentStatus": "paid",
"createdAt": 1640995200000,
"updatedAt": 1640995200000
}
],
"pagination": {
"hasMore": false,
"nextCursor": null,
"pageSize": 25
},
"timestamp": "2025-01-15T10:30:00.000Z"
}serviceName and serviceCategoryName use the booking's order-item snapshot when available. This keeps API output aligned with what the customer saw when the booking was created, even if the service is renamed later.
Get Booking
GET /bookings/{bookingId}Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
bookingId | string | Yes | Booking document ID, booking number, or confirmation code |
Example Request
curl "https://api.tiquo.app/api/v1/bookings/BK-A12B34" \
-H "Authorization: Bearer your_api_key_here"Response
Returns a single booking object with the same core fields as List Bookings, plus detailed fields such as:
| Field | Description |
|---|---|
timezone | IANA timezone for the booking |
attendees | Attendee names, email addresses, and phone numbers |
customerNotes | Customer-facing notes captured on the booking |
internalNotes | Internal staff notes |
isLegacy | Whether the booking came from legacy imported data |
completedAt | Completion timestamp, when available |
cancelledAt | Cancellation timestamp, when available |
checkedInAt | Check-in timestamp, when available |
Download Booking Ticket
GET /bookings/{bookingId}/ticketDownloads a PDF ticket for a booking when QR-code tickets are enabled for the booking's sublocation.
Example Request
curl -L "https://api.tiquo.app/api/v1/bookings/k1234567890abcdef/ticket" \
-H "Authorization: Bearer your_api_key_here" \
-o ticket.pdfThe response is application/pdf. If ticketing is not enabled or the booking cannot be accessed by the API key's organisation, the endpoint returns an error response.
Ticketing Object
| Field | Description |
|---|---|
qrCodeTicketsEnabled | Whether a QR-code ticket PDF can be downloaded |
walletTicketsEnabled | Whether wallet ticket links are available |
ticketDownloadUrl | API URL for downloading the ticket PDF |
walletTicketUrl | Wallet ticket URL for the booking |
appleWalletTicketUrl | Apple Wallet ticket URL |
googleWalletTicketUrl | Google Wallet ticket URL |
Booking Status Values
| Status | Description |
|---|---|
draft | Created but not yet committed. |
scheduled | Scheduled but not yet confirmed. |
confirmed | Confirmed; inventory reserved. |
reminder_sent | A reminder has been sent to the customer. |
waiting_room | Customer is in the virtual waiting room. |
waiting_list | On the waiting list for an unavailable slot. |
checked_in | Customer has checked in. |
active | Customer is present and orders can be added to this booking. |
in_progress | Service is in progress. |
completed | Service completed and customer checked out. |
cancelled | Booking cancelled; inventory released. |
no_show | Customer did not arrive. |
rescheduled | Booking moved to a different time. |
Booking Source Values
| Source | Description |
|---|---|
online | Created via online booking flow |
website | Created through the customer website |
phone | Taken over the phone by staff |
email | Taken via email by staff |
walk_in | Walk-in booking |
social | Created via social media channel |
referral | Referred booking |
pos | Created at point of sale |
admin | Created in the dashboard |
Error Responses
401 Unauthorized
{
"success": false,
"error": "Missing or invalid API key",
"timestamp": "2025-01-15T10:30:00.000Z"
}