Bookings

List bookings

Returns bookings across all of the account's booking pages, latest start_time first. Responses include guest names and emails, so call this from your server only. Scope: bookings:read. Keys: secret.

GET/bookingslistBookings

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

Query Parameters

statusenum("pending", "confirmed", "cancelled", "completed")

Only return bookings with this status.

limitinteger

How many bookings to return. Values above 200 are capped at 200. There's no cursor; narrow with status instead.

Responses

200Bookings, latest start time first.application/json
dataarray<object>required
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
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.

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 \
  --header 'Authorization: Bearer <token>'
{
  "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"
    }
  ]
}