Skip to main content

Endpoints

MethodPathDescription
GET/v1/bookingsList bookings
GET/v1/bookings/:idGet booking
POST/v1/book/:username/:event_slugCreate booking (public)
POST/v1/bookings/:id/rescheduleReschedule (authenticated)
GET/v1/bookings/:confirm_token/confirmConfirm pending booking
GET/v1/bookings/:confirm_token/declineDecline pending booking
POST/v1/cancel/:token/confirmCancel booking

GET /v1/bookings

List your bookings. Includes past and upcoming. Query params
ParamDefaultDescription
limit50Max results
page1Page number

POST /v1/book/:username/:event_slug

Create a booking on someone’s calendar. This endpoint is public — no API key needed if called from a booking page. URL params
ParamDescription
usernameHost’s slug
event_slugEvent type slug
Body
{
  "attendee_name": "Jason Johnson",
  "attendee_email": "jason@example.com",
  "start_time": "2026-03-20T14:00:00Z",
  "timezone": "America/Chicago",
  "notes": "Looking to discuss the enterprise plan"
}
FieldRequiredDescription
attendee_nameyesFull name
attendee_emailyesEmail address
start_timeyesISO 8601 UTC
timezoneyesIANA timezone string
notesnoOptional message to the host
answersnoArray of {question_id, answer} for custom questions
Response 201
{
  "id": 101,
  "status": "confirmed",
  "requires_confirmation": false,
  "attendee_name": "Jason Johnson",
  "attendee_email": "jason@example.com",
  "start_time": "2026-03-20T14:00:00Z",
  "end_time": "2026-03-20T14:30:00Z",
  "cancel_token": "xyz...",
  "reschedule_token": "abc..."
}
When requires_confirmation: true, status will be pending until the host confirms or declines.

POST /v1/bookings/:id/reschedule

Move a booking to a new time. Requires authentication (host only).
{
  "start_time": "2026-03-21T15:00:00Z",
  "timezone": "America/Chicago"
}

Confirm / Decline (host)

When requires_confirmation: true, the host receives an email with two links:
  • GET /v1/bookings/:confirm_token/confirm — Approves, emails attendee confirmation
  • GET /v1/bookings/:confirm_token/decline — Rejects, emails attendee decline notice
These are browser-navigable (no API key) — they’re linked directly from the email.

postMessage events (SDK)

When embedded via @schedkit/react, a schedkit:booked message fires after successful booking:
window.addEventListener('message', (e) => {
  if (e.data?.type === 'schedkit:booked') {
    const { id, status, requires_confirmation, attendee_name, start_time } = e.data.payload;
  }
});
status is "confirmed" or "pending" depending on the event type’s confirmation setting.