Skip to main content
The Schedules API allows you to create, retrieve, update, and delete availability schedules that define when users can be booked.

API Version

Schedule endpoints require the cal-api-version header:

Authentication

All schedule endpoints require authentication:
  • API Key: Pass via Authorization: Bearer <api-key> header
  • Access Token: OAuth access token
Required permissions:
  • SCHEDULE_READ for GET operations
  • SCHEDULE_WRITE for POST, PATCH, DELETE operations

Overview

Schedules define when a user is available for bookings. Each user should have:
  1. Default Schedule: The primary availability schedule used when event types don’t specify a custom schedule
  2. Custom Schedules: Additional schedules that specific event types can reference

Create a Schedule

Create a new availability schedule.

Request Body

string
required
Schedule name (e.g., “Default Schedule”, “Evening Hours”)
string
required
IANA timezone (e.g., “America/New_York”, “Europe/London”)
boolean
Whether this is the default schedule. Each user should have exactly one default schedule.
array
required
Array of availability rules
array
Date-specific overrides

Response

string
Status of the response (“success”)
object
Schedule details

Get Default Schedule

Retrieve the authenticated user’s default schedule.

Response

Returns the default schedule object, or null if no default schedule exists.

Get a Schedule

Retrieve a specific schedule by ID.

Path Parameters

number
required
The ID of the schedule to retrieve

Get All Schedules

List all schedules for the authenticated user.

Response

Update a Schedule

Update an existing schedule.

Path Parameters

number
required
The ID of the schedule to update

Request Body

All fields from the create endpoint are supported. Only include fields you want to update.

Delete a Schedule

Delete a schedule.

Path Parameters

number
required
The ID of the schedule to delete

Response

Day Numbers

When specifying days in the availability array, use these numbers:
  • 0 = Sunday
  • 1 = Monday
  • 2 = Tuesday
  • 3 = Wednesday
  • 4 = Thursday
  • 5 = Friday
  • 6 = Saturday

Time Format

Use 24-hour time format for start and end times:
  • Morning: “09:00”, “08:30”
  • Afternoon: “13:00”, “14:30”
  • Evening: “17:00”, “20:00”

Example Schedules

Standard Business Hours (9-5, Weekdays)

Split Schedule (Morning and Afternoon)

Weekend Availability

Managed Users

For platform customers managing users:
  1. Pass timezone when creating managed users to automatically create a default schedule (Monday-Friday, 9AM-5PM)
  2. Without a default schedule, users cannot be booked or manage availability
  3. Users can modify their schedule via the AvailabilitySettings atom

Linking Schedules to Event Types

After creating a schedule, you can link it to event types:
If no scheduleId is specified, the event type uses the user’s default schedule.

Notes

  • Each user must have exactly one default schedule
  • Schedules are in the user’s specified timezone
  • Event types without a specific scheduleId use the default schedule
  • You can create multiple schedules for different availability patterns
  • Use overrides for date-specific changes (holidays, time off, etc.)