Skip to main content
GET
Get a booking

Authorizations

Authorization
string
header
required

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

Path Parameters

id
integer
required

1club booking id

Query Parameters

include
string

Comma-separated expansions to embed on the booking. customer is the booking's customer, identical to what GET /v1/platform/contacts/{id} returns, and needs contacts:read. money is what the booking billed, what was paid and what is still outstanding, with the charges, cancellation credits, payments and refunds behind those figures, and needs transactions:read. cancellation is the cancellation terms stamped on the booking when it was accepted (with the deadlines they give, and until when it cancels for free) and, once cancelled, who cancelled it, when, why, with how much notice and at what refund. An expansion whose scope the key lacks is refused with 403 rather than left out.

Pattern: ^(customer|money|cancellation)(,(customer|money|cancellation))*$
Example:

"customer,money,cancellation"

Response

Booking state

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

maxPlayers
integer | null

How many players the booking takes, the organizer included, when it differs from the area type's defaultMaxPlayers: 2 on a court booked for singles (area types with allowsSingles). null means the area type's own limit. Adding a player past it is refused.

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.

money
object

What the booking costs and how it was paid. Present only with include=money, which additionally requires the transactions:read scope. billed is always paid + outstanding, on the same basis as the admin's Booking audit: tax-inclusive, net of refunds, so a cancelled booking bills only the Cancellation Charge it kept.

cancellation
object

The cancellation terms stamped on the booking and how it was cancelled. Present only with include=cancellation.

payment
object
clubId
integer | null
source
string | null

Channel that created the booking (api, admin, portal, app, kiosk, network, website, integration).

notes
string | null
createdAt
string<date-time>