Cancel and Reschedule Bookings
Let the authenticated customer cancel or move their own bookings
These endpoints let a signed-in customer cancel one of their bookings, withdraw a waiting-list request, or move a booking to another time. They follow the same rules as the customer portal:
- The service's cancellation deadline applies to both cancelling and moving. It is 24 hours before the start unless the service sets another deadline. Waiting-list requests can be withdrawn at any time.
- Only bookings that are
scheduled,confirmed,reminder_sent, or on the waiting list can be changed. - A booking can only move to a time that is free, within the service's advance-booking limit (120 days ahead when the service has none).
- Waiting-list requests and stays (nightly or daily services) can't be moved online.
- Imported bookings, such as hotel stays from Mews, can only be changed by the venue.
The customer always comes from the access token, never from the request. Tiquo emails the customer a cancellation or an updated booking confirmation after each change.
Check what the customer can do
Each booking returned by List Bookings has a customerActions object. Use it to decide which buttons to show:
| Field | Type | Description |
|---|---|---|
canCancel | boolean | POST /bookings/cancel will be accepted now |
canReschedule | boolean | The booking can be moved with POST /bookings/reschedule |
isWaitlist | boolean | The booking is a waiting-list request; cancelling withdraws it |
cancellationDeadlineHours | number | Hours before the start after which the customer can't cancel or move the booking |
cancellationBlockedReason | string or omitted | Why canCancel is false, when it is one of the values below |
| Reason | Meaning |
|---|---|
status_not_cancellable | The booking is already cancelled, completed, checked in, or in another status customers can't change |
invalid_booking_time | The booking has no valid start time; the customer should contact the venue |
cancellation_deadline_passed | The cancellation deadline has passed |
managed_by_venue | An imported booking (for example a Mews stay) that only the venue can change. Show a message such as "Contact the venue to change this booking" instead of the buttons |
Authentication
All three endpoints require a valid JWT access token.
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...Cancel a booking
POST /bookings/cancelCancels the booking, or withdraws a waiting-list request.
| Field | Type | Required | Description |
|---|---|---|---|
bookingId | string | Yes | The booking id from List Bookings |
curl -X POST "https://edge.tiquo.app/api/client/v1/bookings/cancel" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..." \
-H "Content-Type: application/json" \
-d '{ "bookingId": "booking_123" }'{
"success": true,
"data": {
"bookingId": "booking_123",
"status": "cancelled"
}
}List reschedule options
GET /bookings/reschedule-optionsReturns the dates and times the booking can move to.
| Parameter | Type | Required | Description |
|---|---|---|---|
bookingId | string | Yes | The booking id from List Bookings |
dateFrom | string | No | First date to list, YYYY-MM-DD. Defaults to today |
dateTo | string | No | Last date to list, YYYY-MM-DD |
Slot bookings return every bookable slot. Calendar bookings return the next 31 days by default and at most 42 days per request, so page through later dates with dateFrom and dateTo. Dates and times are in the venue's timezone.
curl "https://edge.tiquo.app/api/client/v1/bookings/reschedule-options?bookingId=booking_123" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..."{
"success": true,
"data": {
"canReschedule": true,
"bookingMethod": "calendar",
"firstDate": "2026-10-19",
"lastDate": "2027-02-16",
"options": [
{ "date": "2026-10-21", "startTime": "14:00", "endTime": "15:00" },
{ "date": "2026-10-21", "startTime": "15:00", "endTime": "16:00" }
]
}
}| Field | Type | Description |
|---|---|---|
canReschedule | boolean | Whether the booking can be moved online |
reason | string or omitted | Why the booking can't be moved, when canReschedule is false |
bookingMethod | string or omitted | slots or calendar |
firstDate | string or omitted | First date the booking can move to |
lastDate | string or omitted | Last date the booking can move to |
options | array | Times the booking can move to, each with date, startTime, and endTime |
When the booking can't be moved, including when it isn't one of this customer's bookings, the response is still 200 OK, with canReschedule: false, a readable reason such as "The rescheduling deadline for this booking has passed.", and an empty options array.
Reschedule a booking
POST /bookings/rescheduleMoves the booking to one of the times returned by reschedule options. Availability and the deadline are checked again when you send the request.
| Field | Type | Required | Description |
|---|---|---|---|
bookingId | string | Yes | The booking id from List Bookings |
date | string | Yes | New date, YYYY-MM-DD, in the venue's timezone |
startTime | string | Yes | New start time, HH:mm |
curl -X POST "https://edge.tiquo.app/api/client/v1/bookings/reschedule" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..." \
-H "Content-Type: application/json" \
-d '{ "bookingId": "booking_123", "date": "2026-10-21", "startTime": "14:00" }'{
"success": true,
"data": {
"bookingId": "booking_123",
"status": "confirmed",
"date": "2026-10-21",
"startTime": "14:00",
"endTime": "15:00"
}
}Errors
Refusals return a readable error message that you can show to the customer, for example "The cancellation deadline for this booking has passed." or "That time has just sold out. Please choose another."
| Status | Description |
|---|---|
400 | Missing bookingId, date, or startTime, or the change isn't allowed online (deadline passed, time no longer available, imported booking) |
401 | Invalid or expired access token |
404 | The booking wasn't found for this customer |
500 | Internal server error |
DOM Package and Hosted Package
The DOM Package wraps these endpoints as cancelBooking(), getBookingRescheduleOptions(), and rescheduleBooking(). See Orders and Bookings. The Hosted Package exposes the same three methods on window.Tiquo.