Booking Pro API
API ReferenceBookings

Retrieve a booking

View on GitHub
Connect your AI:ClaudeChatGPT
GET
/bookings/{id}

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer bp_sk_live_.... Mint and revoke keys in your dashboard under Settings -> Developers.

In: header

Path Parameters

id*string
Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/bookings/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",  "contact_id": "f245e2a3-e141-4d41-912c-b1c1f5bd5598",  "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0",  "technician_id": "557e6e8c-3c29-4825-b73f-0884ad39f2d9",  "start": "2019-08-24T14:15:22Z",  "end": "2019-08-24T14:15:22Z",  "status": "booked",  "status_name": "string",  "staff_busy": [    {      "start": "2019-08-24T14:15:22Z",      "end": "2019-08-24T14:15:22Z"    }  ],  "source": "string",  "created_at": "2019-08-24T14:15:22Z",  "slug": "string"}

Create a booking

Books an appointment. The start is re-checked exactly the way the public booking page re-checks it: the staff member's working hours, the location's hours, existing bookings, classes, rooms, and the location's booking rules (same day, how far ahead, minimum notice). The visit is sized for the staff member doing it (their own duration, waiting period and cleanup time for the service). A taken or closed time returns `409 slot_unavailable`; a broken booking rule returns `422 booking_rule_violation`. Without `technician_id`, at a location where every appointment needs a staff member, the first free staff member who performs the service (in the location's booking priority order) is assigned: the same person `GET /availability` named for that slot. At a location that books onto rooms, the appointment is booked onto a room with no staff member (the service must have a room there, else `422 service_not_bookable`).

List bookings

Lists bookings, newest first by default. To find a client's appointments from what you know about them, pass `phone` and/or `email`: the client is matched the same way booking matches a contact (any stored phone format), and the response adds `contact_found` and `matched_contacts` (more than one person can share a phone). Each matched contact carries `client_status`: `returning` when they have a past visit (an appointment completed, checked in or passed), otherwise `new`. For a "what are my upcoming appointments" lookup use `from` = now, `order=asc` and `exclude_cancelled=true`.