Bookings

Confirm or cancel a booking

Sets a booking's status to confirmed or cancelled, which is how you approve or decline pending bookings on approval pages. Confirming creates the Google Calendar event and Meet link when the page has auto_generate_meet_link and the booking has no event yet, and Google sends the guest the invite. clndr.pro doesn't send its own confirmation email for confirmations made through the API, so email the guest yourself when the page has no Meet link. Cancelling deletes the booking's Google Calendar event (Google tells the guest) and opens the slot up again. There's no status check: confirming a booking the host already declined confirms it again, so read it first if that matters. Scope: bookings:write. Keys: secret.

PATCH/bookings/{id}updateBooking

Authorizations

bearerAuthhttp (bearer)

Authorization: Bearer clndr_sk_… (secret) or clndr_pk_… (publishable).

apiKeyHeaderapiKey

The same key in a custom header, for clients that can't set Authorization.

Server

https://www.clndr.pro/api/v1

Production

Path Parameters

idstring<uuid>required

The booking's id.

Example: c3a7e5d1-2b9f-4c6e-8a1d-7f4b0e2c9a58

Request Body

Content-Type: application/jsonrequired

statusenum("confirmed", "cancelled")required
reasonstring

Stored as cancellation_reason. Sending a status without a reason clears any earlier one.

Responses

200The updated booking.application/json
dataobjectrequired

A booking (a meeting on the host's calendar).

idstring<uuid>required
booking_page_idstring<uuid>required
user_idstring<uuid>required

The host.

guest_namestringrequired
guest_emailstring<email>required
start_timestring<date-time>required
end_timestring<date-time>required
statusenum("pending", "confirmed", "cancelled", "completed")required

pending is waiting for the host's approval. completed is reserved and not set today.

cancellation_reasonstringnull
reminder_sentbooleannull
google_meet_linkstring,null<uri>

Set once a Google Meet link exists: at booking time for direct pages with Meet links on, at confirmation for approval pages.

google_calendar_event_idstringnull
google_calendar_idstringnull
sync_statusenum("not_synced", "pending", "synced", "failed")

Whether the booking's Google Calendar event was created, as recorded when the guest booked or the host acted in the dashboard. Confirming or cancelling through this API doesn't update it, so check google_calendar_event_id and google_meet_link after a PATCH or DELETE. not_synced means no event was needed when it was last recorded (no Meet links on the page, or not confirmed yet).

last_synced_atstring,null<date-time>
sync_failure_reasonstringnull

Why the Google Calendar event couldn't be created, for example Google Calendar is not connected.

created_atstring<date-time>required
updated_atstring<date-time>required
400Invalid JSON, or status isn't confirmed or cancelled.application/json
errorstringrequired

What went wrong, in plain English.

401The key is missing, unknown, revoked or expired.application/json
errorstringrequired

What went wrong, in plain English.

403The key doesn't have the scope this endpoint needs.application/json
errorstringrequired

What went wrong, in plain English.

404No booking with this id on the key's account.application/json
errorstringrequired

What went wrong, in plain English.

429Too many requests from this key in the current 60-second window.application/json
errorstringrequired

What went wrong, in plain English.

500Something failed on our side. Retry with exponential backoff.application/json
errorstringrequired

What went wrong, in plain English.

curl https://www.clndr.pro/api/v1/bookings/c3a7e5d1-2b9f-4c6e-8a1d-7f4b0e2c9a58 \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "status": "confirmed"
}'
{
  "data": {
    "id": "c3a7e5d1-2b9f-4c6e-8a1d-7f4b0e2c9a58",
    "booking_page_id": "8b6f2c1e-4a1d-4f0b-9a63-2f0c5d7e9b14",
    "user_id": "5d2e9f40-7c1b-4e8a-b0d6-3a9f1c2e8d77",
    "guest_name": "Grace Hopper",
    "guest_email": "grace@example.com",
    "start_time": "2026-10-15T08:40:00+00:00",
    "end_time": "2026-10-15T09:10:00+00:00",
    "status": "confirmed",
    "cancellation_reason": null,
    "reminder_sent": false,
    "google_meet_link": "https://meet.google.com/abc-defg-hij",
    "google_calendar_event_id": "6v1m0r2k8f3t5q9b7n4c",
    "google_calendar_id": "primary",
    "sync_status": "synced",
    "last_synced_at": "2026-10-10T12:31:07.481+00:00",
    "sync_failure_reason": null,
    "created_at": "2026-10-10T12:31:05.902+00:00",
    "updated_at": "2026-10-10T12:31:07.481+00:00"
  }
}