Cancel a booking
const url = 'https://example.kwickbooking.com/public/v1/bookings/example/cancel';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"phone":"07911 123456","reason":"Can\'t make it","venueId":null}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.kwickbooking.com/public/v1/bookings/example/cancel \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "phone": "07911 123456", "reason": "Can'\''t make it", "venueId": null }'Cancels a booking at once and frees its table. A paid deposit is never refunded automatically: the venue’s team is told and will be in touch. Inside the venue’s notice for cancellations the request goes to the venue instead (needs_venue). Send an Idempotency-Key header.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”POST /public/v1/bookings/{reference}/cancel: the phone on the booking and an optional reason.
object
Example
{ "phone": "07911 123456", "reason": "Can't make it", "venueId": null}Responses
Section titled “Responses”OK
The answer to an amend or cancel: amended, cancelled or already_cancelled with the booking; unavailable with alternatives; or needs_venue with the enquiry raised for staff.
object
A booking as a caller who proved reference and phone may see it: its own details and the guest’s first name, nothing else about the guest.
object
A booking’s deposit: whether one applies, how much, and none, awaiting_payment or paid.
object
Another time, day or venue that fits when the asked one doesn’t.
object
A booking type that fits a time, with its length and deposit.
object
A deposit as a guest would hear it.
object
Example
{ "outcome": "cancelled", "booking": { "reference": "48271936", "venueId": "01920000-0000-7000-8000-000000000001", "venueName": "Soho", "date": "2026-10-16", "time": "20:00", "partySize": 4, "bookingType": "Table booking", "state": "cancelled", "guestFirstName": "Sam", "deposit": { "required": false, "amountPence": 0, "amountDisplay": null, "status": "none" }, "expectedArrival": null }, "alternatives": [], "enquiryId": null, "depositTopUp": null, "summary": "Cancelled: Fri 16/10 at 20:00 for 4."}Idempotency-Key required (https://developers.kwickblocks.ai/problems/idempotency-key-required)
RFC 9457 problem details. type is a URI with a page describing the problem.
object
Safe to read to a guest.
A machine-readable code on the widget’s routes.
Examples
Idempotency-Key required
{ "type": "https://developers.kwickblocks.ai/problems/idempotency-key-required", "title": "Idempotency-Key required", "status": 400, "detail": "This request needs an Idempotency-Key header."}Invalid or missing integration key (https://developers.kwickblocks.ai/problems/invalid-key)
RFC 9457 problem details. type is a URI with a page describing the problem.
object
Safe to read to a guest.
A machine-readable code on the widget’s routes.
Examples
Invalid or missing integration key
{ "type": "https://developers.kwickblocks.ai/problems/invalid-key", "title": "Invalid or missing integration key", "status": 401, "detail": "This integration key isn't valid. Ask the venue's admin for a new one."}Capability not granted (https://developers.kwickblocks.ai/problems/capability-missing)
RFC 9457 problem details. type is a URI with a page describing the problem.
object
Safe to read to a guest.
A machine-readable code on the widget’s routes.
Examples
Capability not granted
{ "type": "https://developers.kwickblocks.ai/problems/capability-missing", "title": "Capability not granted", "status": 403, "detail": "This integration key isn't allowed to do that. Ask the venue's admin to add the capability."}Booking not found (https://developers.kwickblocks.ai/problems/booking-not-found)
RFC 9457 problem details. type is a URI with a page describing the problem.
object
Safe to read to a guest.
A machine-readable code on the widget’s routes.
Examples
Booking not found
{ "type": "https://developers.kwickblocks.ai/problems/booking-not-found", "title": "Booking not found", "status": 404, "detail": "I couldn't find a booking with that reference and phone number."}Booking can’t be changed (https://developers.kwickblocks.ai/problems/booking-not-changeable); Idempotency-Key conflict (https://developers.kwickblocks.ai/problems/idempotency-conflict)
RFC 9457 problem details. type is a URI with a page describing the problem.
object
Safe to read to a guest.
A machine-readable code on the widget’s routes.
Examples
Booking can't be changed
{ "type": "https://developers.kwickblocks.ai/problems/booking-not-changeable", "title": "Booking can't be changed", "status": 409, "detail": "This booking can't be changed any more."}Idempotency-Key conflict
{ "type": "https://developers.kwickblocks.ai/problems/idempotency-conflict", "title": "Idempotency-Key conflict", "status": 409, "detail": "That Idempotency-Key was already used for a different request."}Too many requests (https://developers.kwickblocks.ai/problems/rate-limited); Too many attempts (https://developers.kwickblocks.ai/problems/lookup-throttled)
RFC 9457 problem details. type is a URI with a page describing the problem.
object
Safe to read to a guest.
A machine-readable code on the widget’s routes.
Examples
Too many requests
{ "type": "https://developers.kwickblocks.ai/problems/rate-limited", "title": "Too many requests", "status": 429, "detail": "There have been too many requests. Please try again in a minute."}Too many attempts
{ "type": "https://developers.kwickblocks.ai/problems/lookup-throttled", "title": "Too many attempts", "status": 429, "detail": "Too many attempts. Please try again later."}