Customer API

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:

FieldTypeDescription
canCancelbooleanPOST /bookings/cancel will be accepted now
canReschedulebooleanThe booking can be moved with POST /bookings/reschedule
isWaitlistbooleanThe booking is a waiting-list request; cancelling withdraws it
cancellationDeadlineHoursnumberHours before the start after which the customer can't cancel or move the booking
cancellationBlockedReasonstring or omittedWhy canCancel is false, when it is one of the values below
ReasonMeaning
status_not_cancellableThe booking is already cancelled, completed, checked in, or in another status customers can't change
invalid_booking_timeThe booking has no valid start time; the customer should contact the venue
cancellation_deadline_passedThe cancellation deadline has passed
managed_by_venueAn 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/cancel

Cancels the booking, or withdraws a waiting-list request.

FieldTypeRequiredDescription
bookingIdstringYesThe 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-options

Returns the dates and times the booking can move to.

ParameterTypeRequiredDescription
bookingIdstringYesThe booking id from List Bookings
dateFromstringNoFirst date to list, YYYY-MM-DD. Defaults to today
dateTostringNoLast 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" }
    ]
  }
}
FieldTypeDescription
canReschedulebooleanWhether the booking can be moved online
reasonstring or omittedWhy the booking can't be moved, when canReschedule is false
bookingMethodstring or omittedslots or calendar
firstDatestring or omittedFirst date the booking can move to
lastDatestring or omittedLast date the booking can move to
optionsarrayTimes 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/reschedule

Moves the booking to one of the times returned by reschedule options. Availability and the deadline are checked again when you send the request.

FieldTypeRequiredDescription
bookingIdstringYesThe booking id from List Bookings
datestringYesNew date, YYYY-MM-DD, in the venue's timezone
startTimestringYesNew 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."

StatusDescription
400Missing bookingId, date, or startTime, or the change isn't allowed online (deadline passed, time no longer available, imported booking)
401Invalid or expired access token
404The booking wasn't found for this customer
500Internal 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.

Sur cette page