Skip to main content
PATCH
Update a booking

Authorizations

Authorization
string
header
required

Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.

Headers

Idempotency-Key
string

Retry-safe key; a repeat of the same request replays the first response

Maximum string length: 255

Path Parameters

id
integer
required

1club booking id

Query Parameters

scope
enum<string>
default:this_instance

For an occurrence of a recurring booking, whether the edit applies to it alone or to every not-yet-started occurrence of the series (see the description)

Available options:
this_instance,
all_future

Body

application/json

An edit to a booking. Every field is optional; send only what changes. A body with nothing but notifyCustomer is refused.

startTime
string<date-time>

New start. With scope=all_future, every later occurrence takes this time of day on its own date; change the weekday with recurrence.daysOfWeek.

endTime
string<date-time>

New end. Must be after the start, stored or sent.

areaId
integer

Move the booking to this area (from GET /v1/platform/areas). Must be an area this API can sell, as on create.

instructorId
integer | null

Attach this instructor to the session (from GET /v1/platform/instructors), or null to take the instructor off it. Must be free at the time.

contactId
integer

Reassign the booking to this contact (from GET /v1/platform/contacts). The outstanding charge, if any, moves with it.

notes
string
Maximum string length: 2000
amount
number

The booking's new price, before tax, in the club's currency - your own figure, kept as sent. Omit it to keep the price you recorded on a booking this API created, or to have a booking taken through 1club re-quoted by the club's pricing engine when the slot, area, instructor or contact changes. Cannot be set on a booking a membership covers.

Required range: x <= 1000000
recurrence
object

Make a one-off booking recur, or (with scope=all_future) rewrite the cadence or end condition of an existing series. The series starts at the booking's own start time, so there is no start date here. daysOfWeek is required for a weekly pattern, and a day repeated in it counts once. Not accepted on a booking an API key created.

notifyCustomer
boolean

Tell the customer their booking changed - email with the updated calendar invite plus the in-app and WhatsApp notification. Only sent when the edit names a time, area, instructor or class. Off by default for an API key, on by default over an OAuth connection, as on create.

Response

The booking after the edit - for a series edit, the occurrence you named

A booking created through the platform API. Recorded with a booking transaction so it counts for revenue, marked paid (settled against a payment method named after the caller's API key, so the club can reconcile what each partner collected) or unpaid (outstanding) per the caller. Collection stays with the caller; what it collected and what it gave back on cancellation are reported in payment.

bookingId
integer

1club booking id

bookingUuid
string<uuid>

Stable unguessable identifier. Prefer this over bookingId when storing a reference.

status
string

Booking status (e.g. confirmed, cancelled)

areaId
integer | null

Area id

classId
integer | null

The class occurrence this booking attends, when it is a class booking. Every attendee holds their own booking row against the same classId, and classes rows are per-occurrence - so this is what tells two classes running in the same hour apart. Join it against GET /v1/platform/classes, or read the roster with GET /v1/platform/classes/{id}/bookings.

eventId
integer | null

The event this booking attends, when it is an event booking

instructorId
integer | null

Instructor leading the session, when one is attached

contactId
integer | null

Contact the booking is for

startTime
string<date-time>
endTime
string<date-time>
customer
object | null

The booking's customer, identical to what GET /v1/platform/contacts/{id} returns. Present only when the request passes include=customer, which additionally requires the contacts:read scope; null when the booking has no contact. Use it to import a window of bookings without a contact lookup per row.

payment
object