Skip to content

Reference

Cal.com

Set up Cal.com OAuth for open-source scheduling and appointment management

Connect your users to Cal.com for open-source scheduling, appointment management, and availability tracking.

PropertyValue
Provider IDcal-com
CategoryProductivity
PKCENot supported
Token refreshAutomatic
Redirect URIShown in Developer Portal

Go to Cal.com OAuth Settings

Navigate to Cal.com Settings > Developer > OAuth and sign in.

Create OAuth Client

Click Create OAuth Client.

Configure the client

Enter the client name, add the Alter callback URL (from the Developer Portal) under Redirect URIs (up to 10), and select at least one scope (e.g. BOOKING_READ, BOOKING_WRITE).

Get credentials

Copy the Client ID and Client Secret.

Open the Developer Portal

Go to portal.alterauth.com and navigate to the application.

Add Cal.com provider

Go to OAuth Providers > Add Provider > Cal.com.

Enter credentials

  • Client ID: Paste your Cal.com Client ID
  • Client Secret: Paste your Cal.com Client Secret

Select scopes

Choose the scopes the application needs.

Save

Click Save. The provider is now active.

ScopeDescription
BOOKING_READRead access to bookings
BOOKING_WRITECreate, update, and cancel bookings
EVENT_TYPE_READRead access to event types
EVENT_TYPE_WRITECreate and modify event types
SCHEDULE_READRead access to availability schedules
SCHEDULE_WRITECreate and modify availability schedules
PROFILE_READRead access to user profile
PROFILE_WRITEUpdate user profile
APPS_READRead access to installed Cal.com apps
APPS_WRITEInstall and configure Cal.com apps
  • Scopes use the RESOURCE_ACTION format (e.g. BOOKING_READ, BOOKING_WRITE) — not READ_BOOKING.
  • Newly created OAuth clients start in pending status and require admin approval from the Cal.com team before they can be used.
  • Cal.com’s standard OAuth (this provider) is a separate flow from Cal.com Platform’s “managed users” system — that variant is not covered by this provider.
  • For most scheduling use cases, BOOKING_READ and SCHEDULE_READ provide sufficient access.
  • See the Cal.com OAuth documentation for more details on the flow, scopes, and available API endpoints.

Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.

Operation IDFamiliesMethodProvider path
UserVerifiedResourcesController_requestEmailVerificationCodeadmin, sendPOST/v2/verified-resources/emails/verification-code/request
UserVerifiedResourcesController_verifyEmailadmin, sendPOST/v2/verified-resources/emails/verification-code/verify
BookingAttendeesController_2024_08_13_removeAttendeedeleteDELETE/v2/bookings/{bookingUid}/attendees/{attendeeId}
BookingsController_2024_08_13_cancelBookingdelete, writePOST/v2/bookings/{bookingUid}/cancel
CalUnifiedCalendarsController_deleteCalendarEventdeleteDELETE/v2/calendars/{calendar}/events/{eventUid}
CalUnifiedCalendarsController_deleteConnectionEventdeleteDELETE/v2/calendars/connections/{connectionId}/events/{eventId}
CalendarsController_deleteCalendarCredentialsdelete, writePOST/v2/calendars/{calendar}/disconnect
ConferencingController_disconnectdeleteDELETE/v2/conferencing/{app}/disconnect
EventTypeWebhooksController_deleteAllEventTypeWebhooksadmin, deleteDELETE/v2/event-types/{eventTypeId}/webhooks
EventTypeWebhooksController_deleteEventTypeWebhookadmin, deleteDELETE/v2/event-types/{eventTypeId}/webhooks/{webhookId}
EventTypesController_2024_06_14_deleteEventTypedeleteDELETE/v2/event-types/{eventTypeId}
EventTypesPrivateLinksController_deletePrivateLinkdeleteDELETE/v2/event-types/{eventTypeId}/private-links/{linkId}
OAuthClientUsersController_deleteUseradmin, deleteDELETE/v2/oauth-clients/{clientId}/users/{userId}
OAuthClientWebhooksController_deleteAllOAuthClientWebhooksadmin, deleteDELETE/v2/oauth-clients/{clientId}/webhooks
OAuthClientWebhooksController_deleteOAuthClientWebhookadmin, deleteDELETE/v2/oauth-clients/{clientId}/webhooks/{webhookId}
OAuthClientsController_deleteOAuthClientadmin, deleteDELETE/v2/oauth-clients/{clientId}
SchedulesController_2024_06_11_deleteScheduledeleteDELETE/v2/schedules/{scheduleId}
SelectedCalendarsController_deleteSelectedCalendardeleteDELETE/v2/selected-calendars
SlotsController_2024_09_04_deleteReservedSlotdeleteDELETE/v2/slots/reservations/{uid}
WebhooksController_deleteWebhookadmin, deleteDELETE/v2/webhooks/{webhookId}
BookingsController_2024_08_13_reassignBookingToUseradmin, writePOST/v2/bookings/{bookingUid}/reassign/{userId}
EventTypeWebhooksController_createEventTypeWebhookadmin, writePOST/v2/event-types/{eventTypeId}/webhooks
OAuthClientUsersController_createUseradmin, writePOST/v2/oauth-clients/{clientId}/users
OAuthClientWebhooksController_createOAuthClientWebhookadmin, writePOST/v2/oauth-clients/{clientId}/webhooks
OAuthClientsController_createOAuthClientadmin, writePOST/v2/oauth-clients
WebhooksController_createWebhookadmin, writePOST/v2/webhooks
BookingsController_2024_08_13_createBookingwritePOST/v2/bookings
CalUnifiedCalendarsController_createCalendarEventwritePOST/v2/calendars/{calendar}/events
CalUnifiedCalendarsController_createConnectionEventwritePOST/v2/calendars/connections/{connectionId}/events
CalendarsController_createIcsFeedwritePOST/v2/calendars/ics-feed/save
EventTypesController_2024_06_14_createEventTypewritePOST/v2/event-types
EventTypesPrivateLinksController_createPrivateLinkwritePOST/v2/event-types/{eventTypeId}/private-links
MeController_updateMewritePATCH/v2/me
SchedulesController_2024_06_11_createSchedulewritePOST/v2/schedules
BookingAttendeesController_2024_08_13_getBookingAttendeereadGET/v2/bookings/{bookingUid}/attendees/{attendeeId}
BookingAttendeesController_2024_08_13_getBookingAttendeesreadGET/v2/bookings/{bookingUid}/attendees
BookingsController_2024_08_13_getBookingRecordingsreadGET/v2/bookings/{bookingUid}/recordings
MeController_getMereadGET/v2/me
UserVerifiedResourcesController_getVerifiedEmailByIdreadGET/v2/verified-resources/emails/{id}
UserVerifiedResourcesController_getVerifiedEmailsreadGET/v2/verified-resources/emails

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.