Skip to main content
POST
Quote a booking price

Authorizations

Authorization
string
header
required

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

Body

application/json

A booking to price. Name what is booked with areaId, instructorId or classId; every id must belong to this organization. Unknown fields are rejected.

startTime
string<date-time>
required

ISO date-time with an offset.

endTime
string<date-time>
required

After startTime, and at most 24 hours later.

areaId
integer

The area (court, room) being booked.

instructorId
integer

The coach being booked. With areaId, a court booked with a coach.

classId
integer

A class being booked into.

classTypeId
integer

Price as this class type. Derived from classId when left out.

planIds
integer[]

Price as a holder of these plans, without naming a person.

Maximum array length: 20
contactId
integer

Price for this person: their plans unlock member rates and may cover the booking. Also requires the contacts:read scope.

clubId
integer

The club the booking lands in. Only matters for a coach who works at every club.

groupSize
integer

How many people a session with a coach and no court is for.

Required range: x >= 1
ignoreMembershipCoverage
boolean

Quote the list price even when a membership would cover the booking.

Response

The quoted price, with the rules that produced it

What a booking would cost, from the same calculator checkout uses. Nothing is booked or held.

basePrice
number

The resource's own rate for the booking, before any rule.

finalPrice
number

The price after every rule, before tax is added.

appliedRules
object[]

The rules that moved the price, in the order they applied. A rule pricing several time bands appears once per band.

tax
object | null

Tax on the price, or null when none applies.

membershipCoverage
object

Whether a membership the contact holds would cover the booking, making it free to them.