API v1 was shut down on April 8, 2026. All v1 endpoints have been removed. Use this guide to migrate any remaining v1 integrations to API v2.
Why migrate to v2?
The v2 API includes numerous enhancements and new features that are not available in v1:
Performance improvements : Optimized for better performance and scalability
User-friendly response objects : Improved response structure for better developer experience
Enhanced security : Improved security measures to protect your data
New features : Access to new Cal.com features only available in v2
Better error handling : More descriptive error messages and status codes
Authentication changes
In v1, you authenticated using an API key passed as a query parameter:
In v2, you authenticate using an API key in the Authorization header:
Endpoint-by-endpoint migration guide
Bookings
Create a booking
v1 endpoint:
v1 request body:
v2 endpoint:
v2 request body:
Key differences:
responses object replaced with attendee object
end time is no longer required (calculated from event type duration)
location structure changed from {value, optionValue} to {type}
Must include cal-api-version: 2024-08-13 header
Response structure is more detailed with status and data wrapper
v1 response:
v2 response:
Get all bookings
v1: Not available as a dedicated endpoint
v2 endpoint:
v2 query parameters:
status: Filter by booking status (accepted, pending, cancelled, rejected)
attendeeEmail: Filter by attendee email
eventTypeId: Filter by event type
afterStart, beforeEnd: Filter by date range
take, skip: Pagination
sortStart, sortEnd, sortCreated: Sorting options
v2 response includes pagination:
Cancel a booking
v1 endpoint:
v2 endpoint:
v2 request body:
Key differences:
Changed from DELETE to POST method
Uses booking uid in path instead of id query parameter
Cancellation reason in request body instead of query parameter
Reschedule a booking
v1: Required creating a new booking with rescheduleUid
v2 endpoint:
v2 request body:
Key differences:
Dedicated reschedule endpoint in v2
Simpler process - just provide new start time
Automatically handles the relationship between old and new bookings
Event types
Get all event types
v1 endpoint:
v2 endpoint:
Key differences:
v2 response includes more detailed information about each event type
v2 includes pagination support
v2 response wrapped in {status, data} structure
Create an event type
v1 endpoint:
v1 request body:
v2 endpoint:
v2 request body:
Key differences:
length renamed to lengthInMinutes for clarity
Location types simplified (no integrations: prefix)
More configuration options available in v2
Update an event type
v1 endpoint:
v2 endpoint:
Key differences:
Same HTTP method and path structure
Request/response body structure differences match create endpoint
v2 provides more granular control over event type settings
v2 treats the teamId and parentId of an event type as immutable. Update requests that attempt to change either field are rejected. Delete and recreate the event type to move it to another team or change its managed parent.
Schedules
Get all schedules
v1 endpoint:
v2 endpoint:
Key differences:
v2 includes default schedule indicator
v2 response includes more detailed availability information
v2 supports filtering and pagination
Create a schedule
v1 endpoint:
v1 request body:
v2 endpoint:
v2 request body:
Key differences:
availability renamed to schedule in v2
isDefault flag added to set default schedule
More flexible schedule configuration options
Webhooks
Get all webhooks
v1 endpoint:
v2 endpoint:
Create a webhook
v1 endpoint:
v1 request body:
v2 endpoint:
v2 request body:
Key differences:
eventTriggers renamed to triggers
Added payloadTemplate for custom webhook payloads
More webhook event types available in v2
Slots
Get available slots
v1 endpoint:
v2 endpoint:
Key differences:
v2 requires full ISO 8601 timestamps
v2 response includes more metadata about slot availability
v2 supports additional filtering options (username, teamSlug, etc.)
Teams
Get all teams
v1 endpoint:
v2 endpoint:
Key differences:
v2 includes organization context if team is part of an org
v2 response includes more team metadata
v2 supports pagination
Users
Get user profile
v1 endpoint:
v2 endpoint:
Key differences:
v2 uses /me endpoint for current user
v2 returns more detailed profile information
v2 includes organization and team memberships
Response structure changes
All v2 responses follow this consistent structure with:
status: Either “success” or “error”
data: The actual response data
error: Error details (only present when status is “error”)
Error handling
v1 errors
v2 errors
v2 provides more structured error responses with error codes for better error handling.
Migration checklist
Need help?
If you have questions or need assistance with migrating to v2, please contact our support team.