API Version
Availability endpoints require thecal-api-version header:
Authentication
Availability endpoints support optional authentication:- API Key: Pass via
Authorization: Bearer <api-key>header (optional) - Access Token: OAuth access token (optional)
- Client Credentials: Use
x-cal-client-idheader (optional)
Get Available Slots
Retrieve available time slots for an event type.Query Parameters
Required Parameters
Start date in YYYY-MM-DD format (e.g., “2024-12-05”)
End date in YYYY-MM-DD format (e.g., “2024-12-12”)
Event Type Identification
Choose one of the following methods to identify the event type:Method 1: By Event Type ID
The ID of the event type
Method 2: By Event Type Slug + Username
The slug of the event type
Username of the event type owner
Organization slug (if user is in an organization)
Method 3: By Event Type Slug + Team Slug
The slug of the team event type
The team’s slug
Organization slug (if team is in an organization)
Method 4: Dynamic Event (Multiple Users)
Comma-separated list of usernames (minimum 2). Used to find when multiple people are available.
Organization slug (required for dynamic events)
Optional Parameters
Timezone for the slots (e.g., “America/New_York”). Defaults to UTC.
Duration in minutes. Required for:
- Event types with multiple duration options
- Dynamic events (defaults to 30)
Response format:
"time"(default): Returns start times only"range": Returns start and end times
When rescheduling, provide the booking UID to exclude its time from busy calculations
Response Format
Default Format (time)
Range Format
Use Cases
Individual User Event Types
There are 4 ways to get slots for individual user event types:-
By Event Type ID
-
By Slug and Username
-
Within an Organization
-
Dynamic Event (Multiple Users)
Team Event Types
There are 3 ways to get slots for team event types:-
By Event Type ID
-
By Slug and Team Slug
-
Within an Organization
Rescheduling
When rescheduling a booking, pass the booking UID to exclude its time from busy calculations:Reserve a Slot
Reserve a specific time slot temporarily (holds the slot for a short period).Request Body
Important Notes
Managed Event Types
Managed event types are templates that create individual child event types for each team member. You cannot fetch slots for the parent managed event type directly. Instead:- Find the child event type IDs (assigned to specific users)
- Use those child event type IDs to fetch slots as individual user event types
Time Zones
- All times in the response are in the specified
timeZoneparameter - If no timezone is provided, times are returned in UTC
- Use IANA timezone format (e.g., “America/New_York”, “Europe/London”)
Performance
- Keep the date range reasonable (1-4 weeks recommended)
- Larger date ranges will take longer to compute
- Consider caching results for frequently accessed event types