- List bookings GET
- Create a booking POST
- Retrieve a booking GET
- Reschedule a booking POST
- Cancel a booking POST
- Approve a booking POST
- Decline a booking POST
- Mark a no-show POST
- Set a booking's location PATCH
- Hold a slot POST
- Confirm a hold POST
- Release a hold DELETE
- Erase an attendee DELETE
- Create a booker session POST
- Create a manage session POST
Create a booking
Books a slot, or joins a group session. Without a host, a pool chooses fairly among those free. An event type that requires approval answers with a pending_approval booking.
bearerAuthAuthorizationBearer <token>A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.
Idempotency-Key?stringMakes retries safe: a repeated request with the same key and body returns the original booking instead of creating another, for 24 hours. A refused request keeps no key. 1-256 characters.
1 <= length <= 256Coss-Version?"2026-10-10"The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.
"2026-10-10"application/json- body
- body
- …
event_type*stringThe event type's id or uid.
start*stringAn ISO 8601 instant with an offset.
host?stringA specific host (id or uid). Default: chosen fairly from those free.
attributes?Only choose among pool hosts matching all of these.
duration_minutes?integerOne of the event type's duration_options.
5 <= value <= 1440attendee*Name and email are only needed if coss.com notifies this attendee.
answers?Answers to the event type's questions. Stored encrypted, and returned only by retrieving the booking.
location?||||One of the event type's locations, with your link filled in if it has none.
metadata?Your own key-value pairs. Don't put sensitive data here.
The booking.
application/json- response
- response
- …
object*"scheduling.booking""scheduling.booking"id*stringevent_type*stringstatus*string"held""pending_approval""confirmed""cancelled""declined"title*stringstart*stringend*stringhosts*array<string>attendees*array<>location*||||hold_expires_at*string|nullapproval_expires_at*string|nullseries*string|nullseries_index*number|nullgroup_session*string|nullcalendar_unverified*booleanexternal_conflict_at*string|nullno_show_at*string|nullcancelled_at*string|nullmetadata*created_at*stringupdated_at*stringimport { Coss } from "coss";const coss = new Coss({ apiKey: process.env.COSS_API_KEY, baseUrl: "https://api.coss.com",});const { data, error } = await coss.scheduling.bookings.create({ event_type: "evtype_01kd2m9a0b1c2d3e4f5g6h7j8m", start: "2027-01-04T15:00:00.000Z", attendee: { uid: "patient_77", name: "Sam Lee", email: "sam@example.com", time_zone: "UTC", },});{ "object": "scheduling.booking", "id": "book_01kd2m9a0b1c2d3e4f5g6h7j8m", "event_type": "evtype_01kd2m9a0b1c2d3e4f5g6h7j8m", "status": "confirmed", "title": "Initial consultation", "start": "2027-01-04T15:00:00.000Z", "end": "2027-01-04T15:30:00.000Z", "hosts": [ "host_01kd2m9a0b1c2d3e4f5g6h7j8m" ], "attendees": [ { "id": "attn_01kd2m9a0b1c2d3e4f5g6h7j8m", "uid": "patient_77", "name": "Sam Lee", "email": "sam@example.com", "phone": null, "time_zone": "UTC", "locale": null } ], "location": null, "hold_expires_at": null, "approval_expires_at": null, "series": null, "series_index": null, "group_session": null, "calendar_unverified": false, "external_conflict_at": null, "no_show_at": null, "cancelled_at": null, "metadata": {}, "created_at": "2027-01-01T10:00:00.000Z", "updated_at": "2027-01-01T10:00:00.000Z"}