- 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
Hold a slot
Keeps a slot for a while (the event type's hold_ttl_seconds) so you can take payment, then confirm it. Answers with a held booking, which isn't charged and sends nothing.
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 held 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.holds.create({ event_type: "evtype_01kd2m9a0b1c2d3e4f5g6h7j8m", start: "2027-01-04T15:00:00.000Z", attendee: { uid: "patient_77", 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"}