# Creates a new attendee Source: https://cal.com/docs/api-reference/v1/attendees/creates-a-new-attendee api-reference/v1/openapi-v1.json post /attendees # Edit an existing attendee Source: https://cal.com/docs/api-reference/v1/attendees/edit-an-existing-attendee api-reference/v1/openapi-v1.json patch /attendees/{id} # Find all attendees Source: https://cal.com/docs/api-reference/v1/attendees/find-all-attendees api-reference/v1/openapi-v1.json get /attendees # Find an attendee Source: https://cal.com/docs/api-reference/v1/attendees/find-an-attendee api-reference/v1/openapi-v1.json get /attendees/{id} # Remove an existing attendee Source: https://cal.com/docs/api-reference/v1/attendees/remove-an-existing-attendee api-reference/v1/openapi-v1.json delete /attendees/{id} # Authentication Source: https://cal.com/docs/api-reference/v1/authentication The Cal.com API uses API keys to authenticate requests. You can view and manage your API keys in your settings page under the security tab in Cal.com. API Keys are under Settings > Security Test mode secret keys have the prefix `cal_` and live mode secret keys have the prefix `cal_live_`. Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. Authentication to the API is performed via URL Query Params. Provide your API key as a query param like: `https://api.cal.com/v1/?apiKey=cal_live_xxxxxx` All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail. # Creates a new availability Source: https://cal.com/docs/api-reference/v1/availabilities/creates-a-new-availability api-reference/v1/openapi-v1.json post /availabilities # Edit an existing availability Source: https://cal.com/docs/api-reference/v1/availabilities/edit-an-existing-availability api-reference/v1/openapi-v1.json patch /availabilities/{id} # Find an availability Source: https://cal.com/docs/api-reference/v1/availabilities/find-an-availability api-reference/v1/openapi-v1.json get /availabilities/{id} # Remove an existing availability Source: https://cal.com/docs/api-reference/v1/availabilities/remove-an-existing-availability api-reference/v1/openapi-v1.json delete /availabilities/{id} # Creates a new booking reference Source: https://cal.com/docs/api-reference/v1/booking-references/creates-a-new-booking-reference api-reference/v1/openapi-v1.json post /booking-references # Edit an existing booking reference Source: https://cal.com/docs/api-reference/v1/booking-references/edit-an-existing-booking-reference api-reference/v1/openapi-v1.json patch /booking-references/{id} # Find a booking reference Source: https://cal.com/docs/api-reference/v1/booking-references/find-a-booking-reference api-reference/v1/openapi-v1.json get /booking-references/{id} # Find all booking references Source: https://cal.com/docs/api-reference/v1/booking-references/find-all-booking-references api-reference/v1/openapi-v1.json get /booking-references # Remove an existing booking reference Source: https://cal.com/docs/api-reference/v1/booking-references/remove-an-existing-booking-reference api-reference/v1/openapi-v1.json delete /booking-references/{id} # Booking cancellation Source: https://cal.com/docs/api-reference/v1/bookings/booking-cancellation api-reference/v1/openapi-v1.json delete /bookings/{id}/cancel # Creates a new booking Source: https://cal.com/docs/api-reference/v1/bookings/creates-a-new-booking api-reference/v1/openapi-v1.json post /bookings # Edit an existing booking Source: https://cal.com/docs/api-reference/v1/bookings/edit-an-existing-booking api-reference/v1/openapi-v1.json patch /bookings/{id} # Find a booking Source: https://cal.com/docs/api-reference/v1/bookings/find-a-booking api-reference/v1/openapi-v1.json get /bookings/{id} # Find all Cal video recordings of that booking Source: https://cal.com/docs/api-reference/v1/bookings/find-all-cal-video-recordings-of-that-booking api-reference/v1/openapi-v1.json get /bookings/{id}/recordings # Find all Cal video transcripts of that booking Source: https://cal.com/docs/api-reference/v1/bookings/find-all-cal-video-transcripts-of-that-booking api-reference/v1/openapi-v1.json get /bookings/{id}/transcripts # Find all Cal video transcripts of that recording Source: https://cal.com/docs/api-reference/v1/bookings/find-all-cal-video-transcripts-of-that-recording api-reference/v1/openapi-v1.json get /bookings/{id}/transcripts/{recordingId} # Create a credential record for a user Source: https://cal.com/docs/api-reference/v1/credentials/create-a-credential-record-for-a-user api-reference/v1/openapi-v1.json post /credential-sync # Delete a credential record for a user Source: https://cal.com/docs/api-reference/v1/credentials/delete-a-credential-record-for-a-user api-reference/v1/openapi-v1.json delete /credential-sync # Get all app credentials for a user Source: https://cal.com/docs/api-reference/v1/credentials/get-all-app-credentials-for-a-user api-reference/v1/openapi-v1.json get /credential-sync # Update a credential record for a user Source: https://cal.com/docs/api-reference/v1/credentials/update-a-credential-record-for-a-user api-reference/v1/openapi-v1.json patch /credential-sync # Creates a new destination calendar Source: https://cal.com/docs/api-reference/v1/destination-calendars/creates-a-new-destination-calendar api-reference/v1/openapi-v1.json post /destination-calendars # Edit an existing destination calendar Source: https://cal.com/docs/api-reference/v1/destination-calendars/edit-an-existing-destination-calendar api-reference/v1/openapi-v1.json patch /destination-calendars/{id} # Find a destination calendar Source: https://cal.com/docs/api-reference/v1/destination-calendars/find-a-destination-calendar api-reference/v1/openapi-v1.json get /destination-calendars/{id} # Find all destination calendars Source: https://cal.com/docs/api-reference/v1/destination-calendars/find-all-destination-calendars api-reference/v1/openapi-v1.json get /destination-calendars # Remove an existing destination calendar Source: https://cal.com/docs/api-reference/v1/destination-calendars/remove-an-existing-destination-calendar api-reference/v1/openapi-v1.json delete /destination-calendars/{id} # Errors Source: https://cal.com/docs/api-reference/v1/errors Cal.com uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, or something else failed, etc.). Codes in the 5xx range indicate an error with Cal.com's servers (these are rare).
HTTP Status Code Summary
200 OK Everything worked as expected
400 Bad Request The request was unacceptable, often due to missing a required parameter
401 Unauthorized No valid API key provided.
402 Request Failed The parameters were valid but the request failed.
403 Forbidden The API key doesn't have permissions to perform the request.
404 Not Found The requested resource doesn't exist.
429 Too Many Requests Too many requests hit the API too quickly. We recommend an exponential backoff of your requests.
500, 502, 503, 504 erver Errors Something went wrong on our servers end. (These are rare.)
# Creates a new event type Source: https://cal.com/docs/api-reference/v1/event-types/creates-a-new-event-type api-reference/v1/openapi-v1.json post /event-types # Edit an existing eventType Source: https://cal.com/docs/api-reference/v1/event-types/edit-an-existing-eventtype api-reference/v1/openapi-v1.json patch /event-types/{id} # Find a eventType Source: https://cal.com/docs/api-reference/v1/event-types/find-a-eventtype api-reference/v1/openapi-v1.json get /event-types/{id} # Find all event types Source: https://cal.com/docs/api-reference/v1/event-types/find-all-event-types api-reference/v1/openapi-v1.json get /event-types # Find all event types that belong to teamId Source: https://cal.com/docs/api-reference/v1/event-types/find-all-event-types-that-belong-to-teamid api-reference/v1/openapi-v1.json get /teams/{teamId}/event-types # Remove an existing eventType Source: https://cal.com/docs/api-reference/v1/event-types/remove-an-existing-eventtype api-reference/v1/openapi-v1.json delete /event-types/{id} # Quick start Source: https://cal.com/docs/api-reference/v1/introduction ## Get your API keys Your API requests are authenticated using API keys. Any request that doesn't include an API key will return an error. You can generate an API key from **Settings >** [**Security**](https://app.cal.com/settings/security) within the application. There you will find the API keys section which allows you to generate a key for use. More information on this can be found in the [Authentication](authentication) page. ## Install the library The best way to interact with our API is using a good HTTP client like **axios**: ``` # Install via NPM npm install --save axios # Install via Yarn yarn add axios ``` ``` # Install via pip pip install --upgrade requests ``` ## Make your first request To make your first request, send an authenticated request to the event-types endpoint. This will list all of your event types. Example using `curl`: ``` curl https://api.cal.com/v1/event-types?apiKey=cal_test_xxxxxx ``` ## Try our Postman Collection We've created a small collection of frequently made API calls that you can try in our [Postman Collection](https://www.postman.com/calcom/workspace/cd670dd8-b36d-4aee-8ab2-9044122e30d1/collection/20666831-b92a1d73-bfcc-4a5f-9ef5-cb117d49c904) # Creates a new membership Source: https://cal.com/docs/api-reference/v1/memberships/creates-a-new-membership api-reference/v1/openapi-v1.json post /memberships # Edit an existing membership Source: https://cal.com/docs/api-reference/v1/memberships/edit-an-existing-membership api-reference/v1/openapi-v1.json patch /memberships/{userId}_{teamId} # Find a membership by userID and teamID Source: https://cal.com/docs/api-reference/v1/memberships/find-a-membership-by-userid-and-teamid api-reference/v1/openapi-v1.json get /memberships/{userId}_{teamId} # Find all memberships Source: https://cal.com/docs/api-reference/v1/memberships/find-all-memberships api-reference/v1/openapi-v1.json get /memberships # Remove an existing membership Source: https://cal.com/docs/api-reference/v1/memberships/remove-an-existing-membership api-reference/v1/openapi-v1.json delete /memberships/{userId}_{teamId} # Find a payment Source: https://cal.com/docs/api-reference/v1/payments/find-a-payment api-reference/v1/openapi-v1.json get /payments/{id} # Find all payments Source: https://cal.com/docs/api-reference/v1/payments/find-all-payments api-reference/v1/openapi-v1.json get /payments # Rate limits Source: https://cal.com/docs/api-reference/v1/rate-limit We limit the number of calls you can make over a certain period of time. Rate limits vary and are specified by the following header in all responses:
Header Description
X-RateLimit-Limit The maximum number of requests that the consumer is permitted to make.
X-RateLimit-Remaining The number of requests remaining in the current rate limit window.
X-RateLimit-Reset The time at which the current rate limit window resets in UTC epoch seconds.
When the rate limit is **exceeded**, an error is returned with the status **"429 Too Many Requests"**: ```json { "error": { "code": "too_many_requests", "message": "Rate limit exceeded", } } ``` # Creates a new schedule Source: https://cal.com/docs/api-reference/v1/schedules/creates-a-new-schedule api-reference/v1/openapi-v1.json post /schedules # Edit an existing schedule Source: https://cal.com/docs/api-reference/v1/schedules/edit-an-existing-schedule api-reference/v1/openapi-v1.json patch /schedules/{id} # Find a schedule Source: https://cal.com/docs/api-reference/v1/schedules/find-a-schedule api-reference/v1/openapi-v1.json get /schedules/{id} # Find all schedules Source: https://cal.com/docs/api-reference/v1/schedules/find-all-schedules api-reference/v1/openapi-v1.json get /schedules # Remove an existing schedule Source: https://cal.com/docs/api-reference/v1/schedules/remove-an-existing-schedule api-reference/v1/openapi-v1.json delete /schedules/{id} # Creates a new selected calendar Source: https://cal.com/docs/api-reference/v1/selected-calendars/creates-a-new-selected-calendar api-reference/v1/openapi-v1.json post /selected-calendars # Edit a selected calendar Source: https://cal.com/docs/api-reference/v1/selected-calendars/edit-a-selected-calendar api-reference/v1/openapi-v1.json patch /selected-calendars/{userId}_{integration}_{externalId} # Find a selected calendar by providing the compoundId(userId_integration_externalId) separated by `_` Source: https://cal.com/docs/api-reference/v1/selected-calendars/find-a-selected-calendar-by-providing-the-compoundiduserid_integration_externalid-separated-by-`_` api-reference/v1/openapi-v1.json get /selected-calendars/{userId}_{integration}_{externalId} # Find all selected calendars Source: https://cal.com/docs/api-reference/v1/selected-calendars/find-all-selected-calendars api-reference/v1/openapi-v1.json get /selected-calendars # Remove a selected calendar Source: https://cal.com/docs/api-reference/v1/selected-calendars/remove-a-selected-calendar api-reference/v1/openapi-v1.json delete /selected-calendars/{userId}_{integration}_{externalId} # Get all bookable slots between a datetime range Source: https://cal.com/docs/api-reference/v1/slots/get-all-bookable-slots-between-a-datetime-range api-reference/v1/openapi-v1.json get /slots # Creates a new team Source: https://cal.com/docs/api-reference/v1/teams/creates-a-new-team api-reference/v1/openapi-v1.json post /teams # Edit an existing team Source: https://cal.com/docs/api-reference/v1/teams/edit-an-existing-team api-reference/v1/openapi-v1.json patch /teams/{teamId} # Find a team Source: https://cal.com/docs/api-reference/v1/teams/find-a-team api-reference/v1/openapi-v1.json get /teams/{teamId} # Find all teams Source: https://cal.com/docs/api-reference/v1/teams/find-all-teams api-reference/v1/openapi-v1.json get /teams # Remove an existing team Source: https://cal.com/docs/api-reference/v1/teams/remove-an-existing-team api-reference/v1/openapi-v1.json delete /teams/{teamId} # Creates a new user Source: https://cal.com/docs/api-reference/v1/users/creates-a-new-user api-reference/v1/openapi-v1.json post /users # Edit an existing user Source: https://cal.com/docs/api-reference/v1/users/edit-an-existing-user api-reference/v1/openapi-v1.json patch /users/{userId} # Find a user, returns your user if regular user. Source: https://cal.com/docs/api-reference/v1/users/find-a-user-returns-your-user-if-regular-user api-reference/v1/openapi-v1.json get /users/{userId} # Find all users Source: https://cal.com/docs/api-reference/v1/users/find-all-users api-reference/v1/openapi-v1.json get /users # Remove an existing user Source: https://cal.com/docs/api-reference/v1/users/remove-an-existing-user api-reference/v1/openapi-v1.json delete /users/{userId} # Creates a new webhook Source: https://cal.com/docs/api-reference/v1/webhooks/creates-a-new-webhook api-reference/v1/openapi-v1.json post /webhooks # Edit an existing webhook Source: https://cal.com/docs/api-reference/v1/webhooks/edit-an-existing-webhook api-reference/v1/openapi-v1.json patch /webhooks/{id} # Find a webhook Source: https://cal.com/docs/api-reference/v1/webhooks/find-a-webhook api-reference/v1/openapi-v1.json get /webhooks/{id} # Find all webhooks Source: https://cal.com/docs/api-reference/v1/webhooks/find-all-webhooks api-reference/v1/openapi-v1.json get /webhooks # Remove an existing hook Source: https://cal.com/docs/api-reference/v1/webhooks/remove-an-existing-hook api-reference/v1/openapi-v1.json delete /webhooks/{id} # Refresh API Key Source: https://cal.com/docs/api-reference/v2/api-keys/refresh-api-key api-reference/v2/openapi.json post /v2/api-keys/refresh Generate a new API key and delete the current one. Provide API key to refresh as a Bearer token in the Authorization header (e.g. "Authorization: Bearer "). # Cancel a booking Source: https://cal.com/docs/api-reference/v2/bookings/cancel-a-booking api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/cancel :bookingUid can be :bookingUid of an usual booking, individual recurrence or recurring booking to cancel all recurrences. Cancelling seated bookings: It is possible to cancel specific seat within a booking as an attendee or all of the seats as the host. 1. As an attendee - provide :bookingUid in the request URL `/bookings/:bookingUid/cancel` and seatUid in the request body `{"seatUid": "123-123-123"}` . This will remove this particular attendance from the booking. 2. As the host - host can cancel booking for all attendees aka for every seat. Provide :bookingUid in the request URL `/bookings/:bookingUid/cancel` and cancellationReason in the request body `{"cancellationReason": "Will travel"}` and `Authorization: Bearer token` request header where token is event type owner (host) credential. This will cancel the booking for all attendees. Cancelling recurring seated bookings: For recurring seated bookings it is not possible to cancel all of them with 1 call like with non-seated recurring bookings by providing recurring bookind uid - you have to cancel each recurrence booking by its bookingUid + seatUid. # Confirm a booking Source: https://cal.com/docs/api-reference/v2/bookings/confirm-a-booking api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/confirm The provided authorization header refers to the owner of the booking. # Create a booking Source: https://cal.com/docs/api-reference/v2/bookings/create-a-booking api-reference/v2/openapi.json post /v2/bookings POST /v2/bookings is used to create regular bookings, recurring bookings and instant bookings. The request bodies for all 3 are almost the same except: If eventTypeId in the request body is id of a regular event, then regular booking is created. If it is an id of a recurring event type, then recurring booking is created. Meaning that the request bodies are equal but the outcome depends on what kind of event type it is with the goal of making it as seamless for developers as possible. For team event types it is possible to create instant meeting. To do that just pass `"instant": true` to the request body. The start needs to be in UTC aka if the timezone is GMT+2 in Rome and meeting should start at 11, then UTC time should have hours 09:00 aka without time zone. Finally, there are 2 ways to book an event type belonging to an individual user: 1. Provide `eventTypeId` in the request body. 2. Provide `eventTypeSlug` and `username` and optionally `organizationSlug` if the user with the username is within an organization. And 2 ways to book and event type belonging to a team: 1. Provide `eventTypeId` in the request body. 2. Provide `eventTypeSlug` and `teamSlug` and optionally `organizationSlug` if the team with the teamSlug is within an organization. # Decline a booking Source: https://cal.com/docs/api-reference/v2/bookings/decline-a-booking api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/decline The provided authorization header refers to the owner of the booking. # Get a booking Source: https://cal.com/docs/api-reference/v2/bookings/get-a-booking api-reference/v2/openapi.json get /v2/bookings/{bookingUid} `:bookingUid` can be 1. uid of a normal booking 2. uid of one of the recurring booking recurrences 3. uid of recurring booking which will return an array of all recurring booking recurrences (stored as recurringBookingUid on one of the individual recurrences). # Get 'Add to Calendar' links for a booking Source: https://cal.com/docs/api-reference/v2/bookings/get-add-to-calendar-links-for-a-booking api-reference/v2/openapi.json get /v2/bookings/{bookingUid}/calendar-links Retrieve calendar links for a booking that can be used to add the event to various calendar services. Returns links for Google Calendar, Microsoft Office, Microsoft Outlook, and a downloadable ICS file. # Get all bookings Source: https://cal.com/docs/api-reference/v2/bookings/get-all-bookings api-reference/v2/openapi.json get /v2/bookings # Get all the recordings for the booking Source: https://cal.com/docs/api-reference/v2/bookings/get-all-the-recordings-for-the-booking api-reference/v2/openapi.json get /v2/bookings/{bookingUid}/recordings Fetches all the recordings for the booking `:bookingUid` # Get all the transcripts download links for the booking Source: https://cal.com/docs/api-reference/v2/bookings/get-all-the-transcripts-download-links-for-the-booking api-reference/v2/openapi.json get /v2/bookings/{bookingUid}/transcripts Fetches all the transcripts download links for the booking `:bookingUid` # Get booking references Source: https://cal.com/docs/api-reference/v2/bookings/get-booking-references api-reference/v2/openapi.json get /v2/bookings/{bookingUid}/references # Mark a booking absence Source: https://cal.com/docs/api-reference/v2/bookings/mark-a-booking-absence api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/mark-absent The provided authorization header refers to the owner of the booking. # Reassign a booking to a specific host Source: https://cal.com/docs/api-reference/v2/bookings/reassign-a-booking-to-a-specific-host api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/reassign/{userId} Currently only supports reassigning host for round robin bookings. The provided authorization header refers to the owner of the booking. # Reassign a booking to auto-selected host Source: https://cal.com/docs/api-reference/v2/bookings/reassign-a-booking-to-auto-selected-host api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/reassign Currently only supports reassigning host for round robin bookings. The provided authorization header refers to the owner of the booking. # Reschedule a booking Source: https://cal.com/docs/api-reference/v2/bookings/reschedule-a-booking api-reference/v2/openapi.json post /v2/bookings/{bookingUid}/reschedule Reschedule a booking or seated booking # Get meeting details from calendar Source: https://cal.com/docs/api-reference/v2/cal-unified-calendars/get-meeting-details-from-calendar api-reference/v2/openapi.json get /v2/calendars/{calendar}/event/{eventUid} Returns detailed information about a meeting including attendance metrics # Update meeting details in calendar Source: https://cal.com/docs/api-reference/v2/cal-unified-calendars/update-meeting-details-in-calendar api-reference/v2/openapi.json patch /v2/calendars/{calendar}/events/{eventUid} Updates event information in the specified calendar provider # Check a calendar connection Source: https://cal.com/docs/api-reference/v2/calendars/check-a-calendar-connection api-reference/v2/openapi.json get /v2/calendars/{calendar}/check # Check an ICS feed Source: https://cal.com/docs/api-reference/v2/calendars/check-an-ics-feed api-reference/v2/openapi.json get /v2/calendars/ics-feed/check # Disconnect a calendar Source: https://cal.com/docs/api-reference/v2/calendars/disconnect-a-calendar api-reference/v2/openapi.json post /v2/calendars/{calendar}/disconnect # Get all calendars Source: https://cal.com/docs/api-reference/v2/calendars/get-all-calendars api-reference/v2/openapi.json get /v2/calendars # Get busy times Source: https://cal.com/docs/api-reference/v2/calendars/get-busy-times api-reference/v2/openapi.json get /v2/calendars/busy-times Get busy times from a calendar. Example request URL is `https://api.cal.com/v2/calendars/busy-times?loggedInUsersTz=Europe%2FMadrid&dateFrom=2024-12-18&dateTo=2024-12-18&calendarsToLoad[0][credentialId]=135&calendarsToLoad[0][externalId]=skrauciz%40gmail.com` # Get OAuth connect URL Source: https://cal.com/docs/api-reference/v2/calendars/get-oauth-connect-url api-reference/v2/openapi.json get /v2/calendars/{calendar}/connect # Save an ICS feed Source: https://cal.com/docs/api-reference/v2/calendars/save-an-ics-feed api-reference/v2/openapi.json post /v2/calendars/ics-feed/save # Save Apple calendar credentials Source: https://cal.com/docs/api-reference/v2/calendars/save-apple-calendar-credentials api-reference/v2/openapi.json post /v2/calendars/{calendar}/credentials # Save Google or Outlook calendar credentials Source: https://cal.com/docs/api-reference/v2/calendars/save-google-or-outlook-calendar-credentials api-reference/v2/openapi.json get /v2/calendars/{calendar}/save # Conferencing app OAuth callback Source: https://cal.com/docs/api-reference/v2/conferencing/conferencing-app-oauth-callback api-reference/v2/openapi.json get /v2/conferencing/{app}/oauth/callback # Connect your conferencing application Source: https://cal.com/docs/api-reference/v2/conferencing/connect-your-conferencing-application api-reference/v2/openapi.json post /v2/conferencing/{app}/connect # Disconnect your conferencing application Source: https://cal.com/docs/api-reference/v2/conferencing/disconnect-your-conferencing-application api-reference/v2/openapi.json delete /v2/conferencing/{app}/disconnect # Get OAuth conferencing app auth URL Source: https://cal.com/docs/api-reference/v2/conferencing/get-oauth-conferencing-app-auth-url api-reference/v2/openapi.json get /v2/conferencing/{app}/oauth/auth-url # Get your default conferencing application Source: https://cal.com/docs/api-reference/v2/conferencing/get-your-default-conferencing-application api-reference/v2/openapi.json get /v2/conferencing/default # List your conferencing applications Source: https://cal.com/docs/api-reference/v2/conferencing/list-your-conferencing-applications api-reference/v2/openapi.json get /v2/conferencing # Set your default conferencing application Source: https://cal.com/docs/api-reference/v2/conferencing/set-your-default-conferencing-application api-reference/v2/openapi.json post /v2/conferencing/{app}/default # Update destination calendars Source: https://cal.com/docs/api-reference/v2/destination-calendars/update-destination-calendars api-reference/v2/openapi.json put /v2/destination-calendars # Create a private link for an event type Source: https://cal.com/docs/api-reference/v2/event-types-private-links/create-a-private-link-for-an-event-type api-reference/v2/openapi.json post /v2/event-types/{eventTypeId}/private-links # Delete a private link for an event type Source: https://cal.com/docs/api-reference/v2/event-types-private-links/delete-a-private-link-for-an-event-type api-reference/v2/openapi.json delete /v2/event-types/{eventTypeId}/private-links/{linkId} # Get all private links for an event type Source: https://cal.com/docs/api-reference/v2/event-types-private-links/get-all-private-links-for-an-event-type api-reference/v2/openapi.json get /v2/event-types/{eventTypeId}/private-links # Update a private link for an event type Source: https://cal.com/docs/api-reference/v2/event-types-private-links/update-a-private-link-for-an-event-type api-reference/v2/openapi.json patch /v2/event-types/{eventTypeId}/private-links/{linkId} # Create a webhook Source: https://cal.com/docs/api-reference/v2/event-types-webhooks/create-a-webhook api-reference/v2/openapi.json post /v2/event-types/{eventTypeId}/webhooks # Delete a webhook Source: https://cal.com/docs/api-reference/v2/event-types-webhooks/delete-a-webhook api-reference/v2/openapi.json delete /v2/event-types/{eventTypeId}/webhooks/{webhookId} # Delete all webhooks Source: https://cal.com/docs/api-reference/v2/event-types-webhooks/delete-all-webhooks api-reference/v2/openapi.json delete /v2/event-types/{eventTypeId}/webhooks # Get a webhook Source: https://cal.com/docs/api-reference/v2/event-types-webhooks/get-a-webhook api-reference/v2/openapi.json get /v2/event-types/{eventTypeId}/webhooks/{webhookId} # Get all webhooks Source: https://cal.com/docs/api-reference/v2/event-types-webhooks/get-all-webhooks api-reference/v2/openapi.json get /v2/event-types/{eventTypeId}/webhooks # Update a webhook Source: https://cal.com/docs/api-reference/v2/event-types-webhooks/update-a-webhook api-reference/v2/openapi.json patch /v2/event-types/{eventTypeId}/webhooks/{webhookId} # Create an event type Source: https://cal.com/docs/api-reference/v2/event-types/create-an-event-type api-reference/v2/openapi.json post /v2/event-types # Delete an event type Source: https://cal.com/docs/api-reference/v2/event-types/delete-an-event-type api-reference/v2/openapi.json delete /v2/event-types/{eventTypeId} # Get all event types Source: https://cal.com/docs/api-reference/v2/event-types/get-all-event-types api-reference/v2/openapi.json get /v2/event-types # Get an event type Source: https://cal.com/docs/api-reference/v2/event-types/get-an-event-type api-reference/v2/openapi.json get /v2/event-types/{eventTypeId} # Update an event type Source: https://cal.com/docs/api-reference/v2/event-types/update-an-event-type api-reference/v2/openapi.json patch /v2/event-types/{eventTypeId} # Introduction to API v2 Source: https://cal.com/docs/api-reference/v2/introduction Introduction to Cal.com API v2 endpoints ## Platform endpoints Platform customers have the following endpoints available: 1. Endpoints prefixed with "Platform". 2. Endpoints with no prefix e.g "Bookings", "Event Types". 3. If you are at least on the ESSENTIALS plan, then all endpoints prefixed with "Orgs" except "Orgs / Attributes", "Orgs / Attributes / Options" and "Orgs / Teams / Routing forms / Responses". ## Organizations endpoints Organizations customers have all the endpoints except the ones prefixed with "Platform" and "Teams" and "Orgs / Orgs" because children organizations are only allowed in the platform plan right now. ## Teams endpoints Teams customers have all the endpoints except the ones prefixed with "Platform" and "Orgs". ## Authentication The Cal.com API has 3 authentication methods: 1. API key 2. Platform OAuth client credentials 3. Managed user access token If you are a platform customer you don't need an API key and must instead use OAuth credentials or a managed user access token. We cover when to use which below. ### 1. API key You can view and manage your API keys in your settings page under the security tab in Cal.com. API Keys are under Settings > Security Test mode secret keys have the prefix `cal_` and live mode secret keys have the prefix `cal_live_`. Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. Authentication to the API is performed via the Authorization header. For example, the request would go something like: ``` 'Authorization': 'Bearer YOUR_API_KEY' ``` in your request header. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail. ### 2. OAuth client credentials You need to use OAuth credentials when: 1. Managing managed users [API reference](https://cal.com/docs/api-reference/v2/platform-managed-users/create-a-managed-user) 2. Creating OAuth client webhooks [API reference](https://cal.com/docs/api-reference/v2/platform-webhooks/create-a-webhook) 3. Refreshing tokens of a managed user [API reference](https://cal.com/docs/api-reference/v2/platform-managed-users/refresh-managed-user-tokens) 4. Teams related endpoints: Managing organization teams [API reference](https://cal.com/docs/api-reference/v2/orgs-teams/create-a-team), adding managed users as members to teams [API reference](https://cal.com/docs/api-reference/v2/orgs-teams-memberships/create-a-membership), creating team event types [API reference](https://cal.com/docs/api-reference/v2/orgs-event-types/create-an-event-type). OAuth credentials can be accessed in the platform dashboard [https://app.cal.com/settings/platform](https://app.cal.com/settings/platform) after you have created an OAuth client. Each one has an ID and secret. You then need to pass them as request headers: 1. `x-cal-client-id` - ID of the OAuth client. 2. `x-cal-secret-key` - secret of the OAuth client. ### 3. Managed user access token After you create a managed user you will receive its access and refresh tokens. The response also includes managed user's id, so we recommend you to add new properties to your users table calAccessToken, calRefreshToken and calManagedUserId to store this information. You need to use access token when managing managed user's: 1. Schedules [API reference](https://cal.com/docs/api-reference/v2/schedules/create-a-schedule) 2. Event types [API reference](https://cal.com/docs/api-reference/v2/event-types/create-an-event-type) 3. Bookings - some endpoints like creating a booking is public, but some like getting all managed user's bookings require managed user's access token [API reference](https://cal.com/docs/api-reference/v2/bookings/get-all-bookings) It is passed as an authorization bearer request header Authorization: Bearer \. Validity period: access tokens are valid for 60 minutes and refresh tokens for 1 year, and tokens can be refreshed using the refresh endpoint [API reference](https://cal.com/docs/api-reference/v2/oauth/post-v2oauth-refresh). After refreshing you will receive the new access and refresh tokens that you have to store in your database. Recovering tokens: if you ever lose managed user's access or refresh tokens, you can force refresh them using the OAuth client credentials and store them in your database [API reference](https://cal.com/docs/api-reference/v2/platform-managed-users/force-refresh-tokens). # Create an organization within an organization Source: https://cal.com/docs/api-reference/v2/managed-orgs/create-an-organization-within-an-organization api-reference/v2/openapi.json post /v2/organizations/{orgId}/organizations Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint. # Delete an organization within an organization Source: https://cal.com/docs/api-reference/v2/managed-orgs/delete-an-organization-within-an-organization api-reference/v2/openapi.json delete /v2/organizations/{orgId}/organizations/{managedOrganizationId} Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint. # Get all organizations within an organization Source: https://cal.com/docs/api-reference/v2/managed-orgs/get-all-organizations-within-an-organization api-reference/v2/openapi.json get /v2/organizations/{orgId}/organizations Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint. # Get an organization within an organization Source: https://cal.com/docs/api-reference/v2/managed-orgs/get-an-organization-within-an-organization api-reference/v2/openapi.json get /v2/organizations/{orgId}/organizations/{managedOrganizationId} Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint. # Update an organization within an organization Source: https://cal.com/docs/api-reference/v2/managed-orgs/update-an-organization-within-an-organization api-reference/v2/openapi.json patch /v2/organizations/{orgId}/organizations/{managedOrganizationId} Requires the user to have at least the 'ORG_ADMIN' role within the organization. Additionally, for platform, the plan must be 'SCALE' or higher to access this endpoint. # Get my profile Source: https://cal.com/docs/api-reference/v2/me/get-my-profile api-reference/v2/openapi.json get /v2/me # Update my profile Source: https://cal.com/docs/api-reference/v2/me/update-my-profile api-reference/v2/openapi.json patch /v2/me # Create an OAuth client Source: https://cal.com/docs/api-reference/v2/oauth-clients/create-an-oauth-client api-reference/v2/openapi.json post /v2/oauth-clients # Delete an OAuth client Source: https://cal.com/docs/api-reference/v2/oauth-clients/delete-an-oauth-client api-reference/v2/openapi.json delete /v2/oauth-clients/{clientId} # Get all OAuth clients Source: https://cal.com/docs/api-reference/v2/oauth-clients/get-all-oauth-clients api-reference/v2/openapi.json get /v2/oauth-clients # Get an OAuth client Source: https://cal.com/docs/api-reference/v2/oauth-clients/get-an-oauth-client api-reference/v2/openapi.json get /v2/oauth-clients/{clientId} # Update an OAuth client Source: https://cal.com/docs/api-reference/v2/oauth-clients/update-an-oauth-client api-reference/v2/openapi.json patch /v2/oauth-clients/{clientId} # Get list of verified emails of an org team Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/get-list-of-verified-emails-of-an-org-team api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails # Get list of verified phone numbers of an org team Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/get-list-of-verified-phone-numbers-of-an-org-team api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones # Get verified email of an org team by id Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/get-verified-email-of-an-org-team-by-id api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/{id} # Get verified phone number of an org team by id Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/get-verified-phone-number-of-an-org-team-by-id api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/{id} # Request email verification code Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/request-email-verification-code api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/request Sends a verification code to the email # Request phone number verification code Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/request-phone-number-verification-code api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/request Sends a verification code to the phone number # Verify a phone number for an org team Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/verified-resources/phones/verification-code/verify Use code to verify a phone number # Verify an email for an org team Source: https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-an-email-for-an-org-team api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/verified-resources/emails/verification-code/verify Use code to verify an email # Assign an attribute to a user Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/assign-an-attribute-to-a-user api-reference/v2/openapi.json post /v2/organizations/{orgId}/attributes/options/{userId} # Create an attribute option Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/create-an-attribute-option api-reference/v2/openapi.json post /v2/organizations/{orgId}/attributes/{attributeId}/options # Delete an attribute option Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/delete-an-attribute-option api-reference/v2/openapi.json delete /v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId} # Get all assigned attribute options by attribute ID Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/get-all-assigned-attribute-options-by-attribute-id api-reference/v2/openapi.json get /v2/organizations/{orgId}/attributes/{attributeId}/options/assigned # Get all assigned attribute options by attribute slug Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/get-all-assigned-attribute-options-by-attribute-slug api-reference/v2/openapi.json get /v2/organizations/{orgId}/attributes/slugs/{attributeSlug}/options/assigned # Get all attribute options Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/get-all-attribute-options api-reference/v2/openapi.json get /v2/organizations/{orgId}/attributes/{attributeId}/options # Get all attribute options for a user Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/get-all-attribute-options-for-a-user api-reference/v2/openapi.json get /v2/organizations/{orgId}/attributes/options/{userId} # Unassign an attribute from a user Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/unassign-an-attribute-from-a-user api-reference/v2/openapi.json delete /v2/organizations/{orgId}/attributes/options/{userId}/{attributeOptionId} # Update an attribute option Source: https://cal.com/docs/api-reference/v2/orgs-attributes-options/update-an-attribute-option api-reference/v2/openapi.json patch /v2/organizations/{orgId}/attributes/{attributeId}/options/{optionId} # Create an attribute Source: https://cal.com/docs/api-reference/v2/orgs-attributes/create-an-attribute api-reference/v2/openapi.json post /v2/organizations/{orgId}/attributes # Delete an attribute Source: https://cal.com/docs/api-reference/v2/orgs-attributes/delete-an-attribute api-reference/v2/openapi.json delete /v2/organizations/{orgId}/attributes/{attributeId} # Get all attributes Source: https://cal.com/docs/api-reference/v2/orgs-attributes/get-all-attributes api-reference/v2/openapi.json get /v2/organizations/{orgId}/attributes # Get an attribute Source: https://cal.com/docs/api-reference/v2/orgs-attributes/get-an-attribute api-reference/v2/openapi.json get /v2/organizations/{orgId}/attributes/{attributeId} # Update an attribute Source: https://cal.com/docs/api-reference/v2/orgs-attributes/update-an-attribute api-reference/v2/openapi.json patch /v2/organizations/{orgId}/attributes/{attributeId} # Get organization bookings Source: https://cal.com/docs/api-reference/v2/orgs-bookings/get-organization-bookings api-reference/v2/openapi.json get /v2/organizations/{orgId}/bookings # Save delegation credentials for your organization Source: https://cal.com/docs/api-reference/v2/orgs-delegation-credentials/save-delegation-credentials-for-your-organization api-reference/v2/openapi.json post /v2/organizations/{orgId}/delegation-credentials # Update delegation credentials of your organization Source: https://cal.com/docs/api-reference/v2/orgs-delegation-credentials/update-delegation-credentials-of-your-organization api-reference/v2/openapi.json patch /v2/organizations/{orgId}/delegation-credentials/{credentialId} # Create a membership Source: https://cal.com/docs/api-reference/v2/orgs-memberships/create-a-membership api-reference/v2/openapi.json post /v2/organizations/{orgId}/memberships # Delete a membership Source: https://cal.com/docs/api-reference/v2/orgs-memberships/delete-a-membership api-reference/v2/openapi.json delete /v2/organizations/{orgId}/memberships/{membershipId} # Get a membership Source: https://cal.com/docs/api-reference/v2/orgs-memberships/get-a-membership api-reference/v2/openapi.json get /v2/organizations/{orgId}/memberships/{membershipId} # Get all memberships Source: https://cal.com/docs/api-reference/v2/orgs-memberships/get-all-memberships api-reference/v2/openapi.json get /v2/organizations/{orgId}/memberships # Update a membership Source: https://cal.com/docs/api-reference/v2/orgs-memberships/update-a-membership api-reference/v2/openapi.json patch /v2/organizations/{orgId}/memberships/{membershipId} # Create routing form response and get available slots Source: https://cal.com/docs/api-reference/v2/orgs-routing-forms/create-routing-form-response-and-get-available-slots api-reference/v2/openapi.json post /v2/organizations/{orgId}/routing-forms/{routingFormId}/responses # Get organization routing forms Source: https://cal.com/docs/api-reference/v2/orgs-routing-forms/get-organization-routing-forms api-reference/v2/openapi.json get /v2/organizations/{orgId}/routing-forms # Get routing form responses Source: https://cal.com/docs/api-reference/v2/orgs-routing-forms/get-routing-form-responses api-reference/v2/openapi.json get /v2/organizations/{orgId}/routing-forms/{routingFormId}/responses # Update routing form response Source: https://cal.com/docs/api-reference/v2/orgs-routing-forms/update-routing-form-response api-reference/v2/openapi.json patch /v2/organizations/{orgId}/routing-forms/{routingFormId}/responses/{responseId} # Get all schedules Source: https://cal.com/docs/api-reference/v2/orgs-schedules/get-all-schedules api-reference/v2/openapi.json get /v2/organizations/{orgId}/schedules # Get booking references Source: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-booking-references api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/bookings/{bookingUid}/references # Get organization team bookings Source: https://cal.com/docs/api-reference/v2/orgs-teams-bookings/get-organization-team-bookings api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/bookings # Connect your conferencing application to a team Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/connect-your-conferencing-application-to-a-team api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/connect # Disconnect team conferencing application Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/disconnect-team-conferencing-application api-reference/v2/openapi.json delete /v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/disconnect # Get OAuth conferencing app's auth URL for a team Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/get-oauth-conferencing-apps-auth-url-for-a-team api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/auth-url # Get team default conferencing application Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/get-team-default-conferencing-application api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/conferencing/default # List team conferencing applications Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/list-team-conferencing-applications api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/conferencing # Save conferencing app OAuth credentials Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/save-conferencing-app-oauth-credentials api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/oauth/callback # Set team default conferencing application Source: https://cal.com/docs/api-reference/v2/orgs-teams-conferencing/set-team-default-conferencing-application api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/conferencing/{app}/default # Create a private link for a team event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types-private-links/create-a-private-link-for-a-team-event-type api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links # Delete a private link for a team event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types-private-links/delete-a-private-link-for-a-team-event-type api-reference/v2/openapi.json delete /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links/{linkId} # Get all private links for a team event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types-private-links/get-all-private-links-for-a-team-event-type api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links # Update a private link for a team event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types-private-links/update-a-private-link-for-a-team-event-type api-reference/v2/openapi.json patch /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/private-links/{linkId} # Create a phone call Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/create-a-phone-call api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId}/create-phone-call # Create an event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/create-an-event-type api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/event-types # Delete a team event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/delete-a-team-event-type api-reference/v2/openapi.json delete /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId} # Get all team event types Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/get-all-team-event-types api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/event-types # Get an event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/get-an-event-type api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId} # Get team event types Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/get-team-event-types api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/event-types # Update a team event type Source: https://cal.com/docs/api-reference/v2/orgs-teams-event-types/update-a-team-event-type api-reference/v2/openapi.json patch /v2/organizations/{orgId}/teams/{teamId}/event-types/{eventTypeId} # Create a membership Source: https://cal.com/docs/api-reference/v2/orgs-teams-memberships/create-a-membership api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/memberships # Delete a membership Source: https://cal.com/docs/api-reference/v2/orgs-teams-memberships/delete-a-membership api-reference/v2/openapi.json delete /v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId} # Get a membership Source: https://cal.com/docs/api-reference/v2/orgs-teams-memberships/get-a-membership api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId} # Get all memberships Source: https://cal.com/docs/api-reference/v2/orgs-teams-memberships/get-all-memberships api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/memberships # Update a membership Source: https://cal.com/docs/api-reference/v2/orgs-teams-memberships/update-a-membership api-reference/v2/openapi.json patch /v2/organizations/{orgId}/teams/{teamId}/memberships/{membershipId} # Create routing form response and get available slots Source: https://cal.com/docs/api-reference/v2/orgs-teams-routing-forms-responses/create-routing-form-response-and-get-available-slots api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses # Get organization team routing form responses Source: https://cal.com/docs/api-reference/v2/orgs-teams-routing-forms-responses/get-organization-team-routing-form-responses api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses # Update routing form response Source: https://cal.com/docs/api-reference/v2/orgs-teams-routing-forms-responses/update-routing-form-response api-reference/v2/openapi.json patch /v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/responses/{responseId} # Get team routing forms Source: https://cal.com/docs/api-reference/v2/orgs-teams-routing-forms/get-team-routing-forms api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/routing-forms # Get all team member schedules Source: https://cal.com/docs/api-reference/v2/orgs-teams-schedules/get-all-team-member-schedules api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/schedules # Check team Stripe connection Source: https://cal.com/docs/api-reference/v2/orgs-teams-stripe/check-team-stripe-connection api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/stripe/check # Get Stripe connect URL for a team Source: https://cal.com/docs/api-reference/v2/orgs-teams-stripe/get-stripe-connect-url-for-a-team api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/stripe/connect # Save Stripe credentials Source: https://cal.com/docs/api-reference/v2/orgs-teams-stripe/save-stripe-credentials api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/stripe/save # Get schedules of a team member Source: https://cal.com/docs/api-reference/v2/orgs-teams-users-schedules/get-schedules-of-a-team-member api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedules # Create organization team workflow Source: https://cal.com/docs/api-reference/v2/orgs-teams-workflows/create-organization-team-workflow api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams/{teamId}/workflows # Delete organization team workflow Source: https://cal.com/docs/api-reference/v2/orgs-teams-workflows/delete-organization-team-workflow api-reference/v2/openapi.json delete /v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId} # Get organization team workflow Source: https://cal.com/docs/api-reference/v2/orgs-teams-workflows/get-organization-team-workflow api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId} # Get organization team workflows Source: https://cal.com/docs/api-reference/v2/orgs-teams-workflows/get-organization-team-workflows api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/workflows # Update organization team workflow Source: https://cal.com/docs/api-reference/v2/orgs-teams-workflows/update-organization-team-workflow api-reference/v2/openapi.json patch /v2/organizations/{orgId}/teams/{teamId}/workflows/{workflowId} # Create a team Source: https://cal.com/docs/api-reference/v2/orgs-teams/create-a-team api-reference/v2/openapi.json post /v2/organizations/{orgId}/teams # Delete a team Source: https://cal.com/docs/api-reference/v2/orgs-teams/delete-a-team api-reference/v2/openapi.json delete /v2/organizations/{orgId}/teams/{teamId} # Get a team Source: https://cal.com/docs/api-reference/v2/orgs-teams/get-a-team api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId} # Get all teams Source: https://cal.com/docs/api-reference/v2/orgs-teams/get-all-teams api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams # Get teams membership for user Source: https://cal.com/docs/api-reference/v2/orgs-teams/get-teams-membership-for-user api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/me # Update a team Source: https://cal.com/docs/api-reference/v2/orgs-teams/update-a-team api-reference/v2/openapi.json patch /v2/organizations/{orgId}/teams/{teamId} # Get all bookings for an organization user Source: https://cal.com/docs/api-reference/v2/orgs-users-bookings/get-all-bookings-for-an-organization-user api-reference/v2/openapi.json get /v2/organizations/{orgId}/users/{userId}/bookings # Create an out-of-office entry for a user Source: https://cal.com/docs/api-reference/v2/orgs-users-ooo/create-an-out-of-office-entry-for-a-user api-reference/v2/openapi.json post /v2/organizations/{orgId}/users/{userId}/ooo # Delete an out-of-office entry for a user Source: https://cal.com/docs/api-reference/v2/orgs-users-ooo/delete-an-out-of-office-entry-for-a-user api-reference/v2/openapi.json delete /v2/organizations/{orgId}/users/{userId}/ooo/{oooId} # Get all out-of-office entries for a user Source: https://cal.com/docs/api-reference/v2/orgs-users-ooo/get-all-out-of-office-entries-for-a-user api-reference/v2/openapi.json get /v2/organizations/{orgId}/users/{userId}/ooo # Get all out-of-office entries for organization users Source: https://cal.com/docs/api-reference/v2/orgs-users-ooo/get-all-out-of-office-entries-for-organization-users api-reference/v2/openapi.json get /v2/organizations/{orgId}/ooo # Update an out-of-office entry for a user Source: https://cal.com/docs/api-reference/v2/orgs-users-ooo/update-an-out-of-office-entry-for-a-user api-reference/v2/openapi.json patch /v2/organizations/{orgId}/users/{userId}/ooo/{oooId} # Create a schedule Source: https://cal.com/docs/api-reference/v2/orgs-users-schedules/create-a-schedule api-reference/v2/openapi.json post /v2/organizations/{orgId}/users/{userId}/schedules # Delete a schedule Source: https://cal.com/docs/api-reference/v2/orgs-users-schedules/delete-a-schedule api-reference/v2/openapi.json delete /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId} # Get a schedule Source: https://cal.com/docs/api-reference/v2/orgs-users-schedules/get-a-schedule api-reference/v2/openapi.json get /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId} # Get all schedules Source: https://cal.com/docs/api-reference/v2/orgs-users-schedules/get-all-schedules api-reference/v2/openapi.json get /v2/organizations/{orgId}/users/{userId}/schedules # Update a schedule Source: https://cal.com/docs/api-reference/v2/orgs-users-schedules/update-a-schedule api-reference/v2/openapi.json patch /v2/organizations/{orgId}/users/{userId}/schedules/{scheduleId} # Create a user Source: https://cal.com/docs/api-reference/v2/orgs-users/create-a-user api-reference/v2/openapi.json post /v2/organizations/{orgId}/users # Delete a user Source: https://cal.com/docs/api-reference/v2/orgs-users/delete-a-user api-reference/v2/openapi.json delete /v2/organizations/{orgId}/users/{userId} # Get all users Source: https://cal.com/docs/api-reference/v2/orgs-users/get-all-users api-reference/v2/openapi.json get /v2/organizations/{orgId}/users # Update a user Source: https://cal.com/docs/api-reference/v2/orgs-users/update-a-user api-reference/v2/openapi.json patch /v2/organizations/{orgId}/users/{userId} # Create a webhook Source: https://cal.com/docs/api-reference/v2/orgs-webhooks/create-a-webhook api-reference/v2/openapi.json post /v2/organizations/{orgId}/webhooks # Delete a webhook Source: https://cal.com/docs/api-reference/v2/orgs-webhooks/delete-a-webhook api-reference/v2/openapi.json delete /v2/organizations/{orgId}/webhooks/{webhookId} # Get a webhook Source: https://cal.com/docs/api-reference/v2/orgs-webhooks/get-a-webhook api-reference/v2/openapi.json get /v2/organizations/{orgId}/webhooks/{webhookId} # Get all webhooks Source: https://cal.com/docs/api-reference/v2/orgs-webhooks/get-all-webhooks api-reference/v2/openapi.json get /v2/organizations/{orgId}/webhooks # Update a webhook Source: https://cal.com/docs/api-reference/v2/orgs-webhooks/update-a-webhook api-reference/v2/openapi.json patch /v2/organizations/{orgId}/webhooks/{webhookId} # Create a managed user Source: https://cal.com/docs/api-reference/v2/platform-managed-users/create-a-managed-user api-reference/v2/openapi.json post /v2/oauth-clients/{clientId}/users # Delete a managed user Source: https://cal.com/docs/api-reference/v2/platform-managed-users/delete-a-managed-user api-reference/v2/openapi.json delete /v2/oauth-clients/{clientId}/users/{userId} # Force refresh tokens Source: https://cal.com/docs/api-reference/v2/platform-managed-users/force-refresh-tokens api-reference/v2/openapi.json post /v2/oauth-clients/{clientId}/users/{userId}/force-refresh If you have lost managed user access or refresh token, then you can get new ones by using OAuth credentials. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields. Response also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields. # Get a managed user Source: https://cal.com/docs/api-reference/v2/platform-managed-users/get-a-managed-user api-reference/v2/openapi.json get /v2/oauth-clients/{clientId}/users/{userId} # Get all managed users Source: https://cal.com/docs/api-reference/v2/platform-managed-users/get-all-managed-users api-reference/v2/openapi.json get /v2/oauth-clients/{clientId}/users # Refresh managed user tokens Source: https://cal.com/docs/api-reference/v2/platform-managed-users/refresh-managed-user-tokens api-reference/v2/openapi.json post /v2/oauth/{clientId}/refresh If managed user access token is expired then get a new one using this endpoint - it will also refresh the refresh token, because we use "refresh token rotation" mechanism. Access token is valid for 60 minutes and refresh token for 1 year. Make sure to store them in your database, for example, in your User database model `calAccessToken` and `calRefreshToken` fields. Response also contains `accessTokenExpiresAt` and `refreshTokenExpiresAt` fields, but if you decode the jwt token the payload will contain `clientId` (OAuth client ID), `ownerId` (user to whom token belongs ID), `iat` (issued at time) and `expiresAt` (when does the token expire) fields. # Update a managed user Source: https://cal.com/docs/api-reference/v2/platform-managed-users/update-a-managed-user api-reference/v2/openapi.json patch /v2/oauth-clients/{clientId}/users/{userId} # Create a webhook Source: https://cal.com/docs/api-reference/v2/platform-webhooks/create-a-webhook api-reference/v2/openapi.json post /v2/oauth-clients/{clientId}/webhooks # Delete a webhook Source: https://cal.com/docs/api-reference/v2/platform-webhooks/delete-a-webhook api-reference/v2/openapi.json delete /v2/oauth-clients/{clientId}/webhooks/{webhookId} # Delete all webhooks Source: https://cal.com/docs/api-reference/v2/platform-webhooks/delete-all-webhooks api-reference/v2/openapi.json delete /v2/oauth-clients/{clientId}/webhooks # Get a webhook Source: https://cal.com/docs/api-reference/v2/platform-webhooks/get-a-webhook api-reference/v2/openapi.json get /v2/oauth-clients/{clientId}/webhooks/{webhookId} # Get all webhooks Source: https://cal.com/docs/api-reference/v2/platform-webhooks/get-all-webhooks api-reference/v2/openapi.json get /v2/oauth-clients/{clientId}/webhooks # Update a webhook Source: https://cal.com/docs/api-reference/v2/platform-webhooks/update-a-webhook api-reference/v2/openapi.json patch /v2/oauth-clients/{clientId}/webhooks/{webhookId} # Calculate slots based on routing form response Source: https://cal.com/docs/api-reference/v2/routing-forms/calculate-slots-based-on-routing-form-response api-reference/v2/openapi.json post /v2/routing-forms/{routingFormId}/calculate-slots It will not actually save the response just return the routed event type and slots when it can be booked. # Create a schedule Source: https://cal.com/docs/api-reference/v2/schedules/create-a-schedule api-reference/v2/openapi.json post /v2/schedules Create a schedule for the authenticated user. The point of creating schedules is for event types to be available at specific times. The first goal of schedules is to have a default schedule. If you are platform customer and created managed users, then it is important to note that each managed user should have a default schedule. 1. If you passed `timeZone` when creating managed user, then the default schedule from Monday to Friday from 9AM to 5PM will be created with that timezone. The managed user can then change the default schedule via the `AvailabilitySettings` atom. 2. If you did not, then we assume you want the user to have this specific schedule right away. You should create a default schedule by specifying `"isDefault": true` in the request body. Until the user has a default schedule the user can't be booked nor manage their schedule via the AvailabilitySettings atom. The second goal of schedules is to create another schedule that event types can point to. This is useful for when an event is booked because availability is not checked against the default schedule but instead against that specific schedule. After creating a non-default schedule, you can update an event type to point to that schedule via the PATCH `event-types/{eventTypeId}` endpoint. When specifying start time and end time for each day use the 24 hour format e.g. 08:00, 15:00 etc. # Delete a schedule Source: https://cal.com/docs/api-reference/v2/schedules/delete-a-schedule api-reference/v2/openapi.json delete /v2/schedules/{scheduleId} # Get a schedule Source: https://cal.com/docs/api-reference/v2/schedules/get-a-schedule api-reference/v2/openapi.json get /v2/schedules/{scheduleId} # Get all schedules Source: https://cal.com/docs/api-reference/v2/schedules/get-all-schedules api-reference/v2/openapi.json get /v2/schedules Get all schedules of the authenticated user. # Get default schedule Source: https://cal.com/docs/api-reference/v2/schedules/get-default-schedule api-reference/v2/openapi.json get /v2/schedules/default Get the default schedule of the authenticated user. # Update a schedule Source: https://cal.com/docs/api-reference/v2/schedules/update-a-schedule api-reference/v2/openapi.json patch /v2/schedules/{scheduleId} # Add a selected calendar Source: https://cal.com/docs/api-reference/v2/selected-calendars/add-a-selected-calendar api-reference/v2/openapi.json post /v2/selected-calendars # Delete a selected calendar Source: https://cal.com/docs/api-reference/v2/selected-calendars/delete-a-selected-calendar api-reference/v2/openapi.json delete /v2/selected-calendars # Delete a reserved slot Source: https://cal.com/docs/api-reference/v2/slots/delete-a-reserved-slot api-reference/v2/openapi.json delete /v2/slots/reservations/{uid} # Get available time slots for an event type Source: https://cal.com/docs/api-reference/v2/slots/get-available-time-slots-for-an-event-type api-reference/v2/openapi.json get /v2/slots There are 4 ways to get available slots for event type of an individual user: 1. By event type id. Event type id can be of user and team event types. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome' 2. By event type slug + username. Example '/v2/slots?eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06' 3. By event type slug + username + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&username=bob&start=2050-09-05&end=2050-09-06' 4. By usernames only (used for dynamic event type - there is no specific event but you want to know when 2 or more people are available). Example '/v2/slots?usernames=alice,bob&username=bob&organizationSlug=org-slug&start=2050-09-05&end=2050-09-06'. As you see you also need to provide the slug of the organization to which each user in the 'usernames' array belongs. And 3 ways to get available slots for team event type: 1. By team event type id. Example '/v2/slots?eventTypeId=10&start=2050-09-05&end=2050-09-06&timeZone=Europe/Rome' 2. By team event type slug + team slug. Example '/v2/slots?eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06' 3. By team event type slug + team slug + organization slug when searching within an organization. Example '/v2/slots?organizationSlug=org-slug&eventTypeSlug=intro&teamSlug=team-slug&start=2050-09-05&end=2050-09-06' All of them require "start" and "end" query parameters which define the time range for which available slots should be checked. Optional parameters are: - timeZone: Time zone in which the available slots should be returned. Defaults to UTC. - duration: Only use for event types that allow multiple durations or for dynamic event types. If not passed for multiple duration event types defaults to default duration. For dynamic event types defaults to 30 aka each returned slot is 30 minutes long. So duration=60 means that returned slots will be each 60 minutes long. - format: Format of the slots. By default return is an object where each key is date and value is array of slots as string. If you want to get start and end of each slot use "range" as value. - bookingUidToReschedule: When rescheduling an existing booking, provide the booking's unique identifier to exclude its time slot from busy time calculations. This ensures the original booking time appears as available for rescheduling. # Get reserved slot Source: https://cal.com/docs/api-reference/v2/slots/get-reserved-slot api-reference/v2/openapi.json get /v2/slots/reservations/{uid} # Reserve a slot Source: https://cal.com/docs/api-reference/v2/slots/reserve-a-slot api-reference/v2/openapi.json post /v2/slots/reservations Make a slot not available for others to book for a certain period of time. If you authenticate using oAuth credentials, api key or access token then you can also specify custom duration for how long the slot should be reserved for (defaults to 5 minutes). # Update a reserved slot Source: https://cal.com/docs/api-reference/v2/slots/update-a-reserved-slot api-reference/v2/openapi.json patch /v2/slots/reservations/{uid} # Check Stripe connection Source: https://cal.com/docs/api-reference/v2/stripe/check-stripe-connection api-reference/v2/openapi.json get /v2/stripe/check # Get Stripe connect URL Source: https://cal.com/docs/api-reference/v2/stripe/get-stripe-connect-url api-reference/v2/openapi.json get /v2/stripe/connect # Save Stripe credentials Source: https://cal.com/docs/api-reference/v2/stripe/save-stripe-credentials api-reference/v2/openapi.json get /v2/stripe/save # Create a phone call Source: https://cal.com/docs/api-reference/v2/teams-event-types/create-a-phone-call api-reference/v2/openapi.json post /v2/teams/{teamId}/event-types/{eventTypeId}/create-phone-call # Create an event type Source: https://cal.com/docs/api-reference/v2/teams-event-types/create-an-event-type api-reference/v2/openapi.json post /v2/teams/{teamId}/event-types # Delete a team event type Source: https://cal.com/docs/api-reference/v2/teams-event-types/delete-a-team-event-type api-reference/v2/openapi.json delete /v2/teams/{teamId}/event-types/{eventTypeId} # Get a team event type Source: https://cal.com/docs/api-reference/v2/teams-event-types/get-a-team-event-type api-reference/v2/openapi.json get /v2/teams/{teamId}/event-types # Get an event type Source: https://cal.com/docs/api-reference/v2/teams-event-types/get-an-event-type api-reference/v2/openapi.json get /v2/teams/{teamId}/event-types/{eventTypeId} # Update a team event type Source: https://cal.com/docs/api-reference/v2/teams-event-types/update-a-team-event-type api-reference/v2/openapi.json patch /v2/teams/{teamId}/event-types/{eventTypeId} # Create a membership Source: https://cal.com/docs/api-reference/v2/teams-memberships/create-a-membership api-reference/v2/openapi.json post /v2/teams/{teamId}/memberships # Delete a membership Source: https://cal.com/docs/api-reference/v2/teams-memberships/delete-a-membership api-reference/v2/openapi.json delete /v2/teams/{teamId}/memberships/{membershipId} # Get a membership Source: https://cal.com/docs/api-reference/v2/teams-memberships/get-a-membership api-reference/v2/openapi.json get /v2/teams/{teamId}/memberships/{membershipId} # Get all memberships Source: https://cal.com/docs/api-reference/v2/teams-memberships/get-all-memberships api-reference/v2/openapi.json get /v2/teams/{teamId}/memberships # Update membership Source: https://cal.com/docs/api-reference/v2/teams-memberships/update-membership api-reference/v2/openapi.json patch /v2/teams/{teamId}/memberships/{membershipId} # Get all team member schedules Source: https://cal.com/docs/api-reference/v2/teams-schedules/get-all-team-member-schedules api-reference/v2/openapi.json get /v2/teams/{teamId}/schedules # Get list of verified emails of a team Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/get-list-of-verified-emails-of-a-team api-reference/v2/openapi.json get /v2/teams/{teamId}/verified-resources/emails # Get list of verified phone numbers of a team Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/get-list-of-verified-phone-numbers-of-a-team api-reference/v2/openapi.json get /v2/teams/{teamId}/verified-resources/phones # Get verified email of a team by id Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/get-verified-email-of-a-team-by-id api-reference/v2/openapi.json get /v2/teams/{teamId}/verified-resources/emails/{id} # Get verified phone number of a team by id Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/get-verified-phone-number-of-a-team-by-id api-reference/v2/openapi.json get /v2/teams/{teamId}/verified-resources/phones/{id} # Request email verification code Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/request-email-verification-code api-reference/v2/openapi.json post /v2/teams/{teamId}/verified-resources/emails/verification-code/request Sends a verification code to the Email # Request phone number verification code Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/request-phone-number-verification-code api-reference/v2/openapi.json post /v2/teams/{teamId}/verified-resources/phones/verification-code/request Sends a verification code to the phone number # Verify a phone number for an org team Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/verify-a-phone-number-for-an-org-team api-reference/v2/openapi.json post /v2/teams/{teamId}/verified-resources/phones/verification-code/verify Use code to verify a phone number # Verify an email for a team Source: https://cal.com/docs/api-reference/v2/teams-verified-resources/verify-an-email-for-a-team api-reference/v2/openapi.json post /v2/teams/{teamId}/verified-resources/emails/verification-code/verify Use code to verify an email # Create a team Source: https://cal.com/docs/api-reference/v2/teams/create-a-team api-reference/v2/openapi.json post /v2/teams # Delete a team Source: https://cal.com/docs/api-reference/v2/teams/delete-a-team api-reference/v2/openapi.json delete /v2/teams/{teamId} # Get a team Source: https://cal.com/docs/api-reference/v2/teams/get-a-team api-reference/v2/openapi.json get /v2/teams/{teamId} # Get teams Source: https://cal.com/docs/api-reference/v2/teams/get-teams api-reference/v2/openapi.json get /v2/teams # Update a team Source: https://cal.com/docs/api-reference/v2/teams/update-a-team api-reference/v2/openapi.json patch /v2/teams/{teamId} # Differences between v1 and v2 Source: https://cal.com/docs/api-reference/v2/v1-v2-differences ## API Versions We offer two versions of our API: the legacy version (v1) and the latest v2 version. While both versions are currently available, we highly recommend using the v2 API in all your integrations and applications. ### Why Use v2? The v2 API includes numerous enhancements and new features that are not available in v1. It has been designed to be more efficient, secure, and easier to use. v2 reflects our commitment to providing the best possible developer experience and ensuring that your applications can take advantage of the latest advancements in our platform. ### Key Differences * **Performance Improvements**: v2 has been optimized for better performance and scalability. * **User friendly response objects**: In v2 we have focused heavily on improving the response object for a better User Experience. * **Enhanced Security**: v2 includes improved security measures to protect your data. * **Platform product**: Our new Platform product was built entirely on v2. We are committed to supporting our community during this transition. If you have any questions or need assistance with migrating to the v2 API, please contact our support team. Thank you for your understanding and cooperation. # Get list of verified emails Source: https://cal.com/docs/api-reference/v2/verified-resources/get-list-of-verified-emails api-reference/v2/openapi.json get /v2/verified-resources/emails # Get list of verified phone numbers Source: https://cal.com/docs/api-reference/v2/verified-resources/get-list-of-verified-phone-numbers api-reference/v2/openapi.json get /v2/verified-resources/phones # Get verified email by id Source: https://cal.com/docs/api-reference/v2/verified-resources/get-verified-email-by-id api-reference/v2/openapi.json get /v2/verified-resources/emails/{id} # Get verified phone number by id Source: https://cal.com/docs/api-reference/v2/verified-resources/get-verified-phone-number-by-id api-reference/v2/openapi.json get /v2/verified-resources/phones/{id} # Request email verification code Source: https://cal.com/docs/api-reference/v2/verified-resources/request-email-verification-code api-reference/v2/openapi.json post /v2/verified-resources/emails/verification-code/request Sends a verification code to the email # Request phone number verification code Source: https://cal.com/docs/api-reference/v2/verified-resources/request-phone-number-verification-code api-reference/v2/openapi.json post /v2/verified-resources/phones/verification-code/request Sends a verification code to the phone number # Verify a phone number Source: https://cal.com/docs/api-reference/v2/verified-resources/verify-a-phone-number api-reference/v2/openapi.json post /v2/verified-resources/phones/verification-code/verify Use code to verify a phone number # Verify an email Source: https://cal.com/docs/api-reference/v2/verified-resources/verify-an-email api-reference/v2/openapi.json post /v2/verified-resources/emails/verification-code/verify Use code to verify an email # Create a webhook Source: https://cal.com/docs/api-reference/v2/webhooks/create-a-webhook api-reference/v2/openapi.json post /v2/webhooks # Delete a webhook Source: https://cal.com/docs/api-reference/v2/webhooks/delete-a-webhook api-reference/v2/openapi.json delete /v2/webhooks/{webhookId} # Get a webhook Source: https://cal.com/docs/api-reference/v2/webhooks/get-a-webhook api-reference/v2/openapi.json get /v2/webhooks/{webhookId} # Get all webhooks Source: https://cal.com/docs/api-reference/v2/webhooks/get-all-webhooks api-reference/v2/openapi.json get /v2/webhooks Gets a paginated list of webhooks for the authenticated user. # Update a webhook Source: https://cal.com/docs/api-reference/v2/webhooks/update-a-webhook api-reference/v2/openapi.json patch /v2/webhooks/{webhookId} # How to Set Up the API in a Local Instance Source: https://cal.com/docs/developing/guides/api/how-to-setup-api-in-a-local-instance To test the API in your local instance, you have the following pre-requisites: Please clone the cal.com repository. You can do it by following the instructions provided in [Installation](/developing/local-development) Add a staging license key that goes in as value for `CALCOM_LICENSE_KEY` in your root `.env` file. You can use the following as staging license key ``` 1a1f8138-0bfc-4f37-b4af-1e24fd145839 ``` Start the cal.com server using `yarn dev` on localhost and create the test API keys by visiting `/settings/developer/api-keys` Start the API server by running `yarn workspace @calcom/api dev` and start testing your API locally By default, the app server runs on port 3000 and the API server runs on port 3003 # Build a greeter app Source: https://cal.com/docs/developing/guides/appstore-and-integration/build-a-greeter-app ## Building a **Greeter** app Create an app with the title "**Greeter".** Run the following command and provide the information it is looking for. ```bash yarn app-store create ```