Documentation Index
Fetch the complete documentation index at: https://calendly-preview.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Authorization scopes define the permissions that an application requests when accessing Calendly APIs on behalf of a user. Scopes control which Calendly resources your integration can read or modify. When a user installs your app, the scopes you request determine what actions your app is permitted to perform. Scopes follow these rules: Read vs Write- Read scopes allow safe retrieval of data.
- Write scopes allow creation, modification, or deletion of data.
- A
:writescope implicitly includes the corresponding:readscope within the same domain.
- Webhook subscriptions must be scoped by the event family you want to receive. Your app must be granted the related read scopes to receive webhook event payloads.
Scope Catalog
| Category | Scope | Description | Provides access to |
|---|---|---|---|
| Scheduling | availability:read | Retrieve user and event-type availability. | GET /user_busy_timesGET /user_availability_schedulesGET /user_availability_schedules/{uuid}GET /event_type_availability_schedules |
availability:write | Update event type availability. | PATCH /event_type_availability_schedules/{uuid} | |
event_types:read | Retrieve event type details and available times. | GET /event_types, GET /event_types/{uuid} GET /event_type_available_timesGET /event_type_memberships | |
event_types:write | Create or update event types. | POST /event_typesPATCH /event_types/{uuid}POST /one_off_event_types | |
locations:read | Retrieve configured meeting locations. | GET /locations | |
routing_forms:read | Retrieve routing forms and submissions. | GET /routing_formsGET /routing_forms/{uuid}GET /routing_form_submissionsGET /routing_form_submissions/{uuid} | |
shares:write | Create and customize a single-use scheduling link from an existing event type. | POST /shares | |
scheduled_events:read | Retrieve scheduled events and event invitee information. | GET /scheduled_eventsGET /scheduled_events/{uuid}GET /scheduled_events/{uuid}/inviteesGET /scheduled_events/{uuid}/invitees/{invitee_uuid}GET /invitee_no_shows/{uuid} | |
scheduled_events:write | Create event invitees, cancel events or mark invitees as no-show. | POST /inviteesPOST /scheduled_events/{uuid}/cancellationPOST /invitees/{uuid}/no_showDELETE /invitees/{uuid}/no_show | |
scheduling_links:write | Create a single-use scheduling link from an existing event type without any customization. | POST /scheduling_links | |
| User management | groups:read | Retrieve group details and relationships. | GET /groupsGET /groups/{uuid}GET /group_relationshipsGET /group_relationships/{uuid} |
organizations:read | Retrieve organization data, memberships, and invitations. | GET /organizations/{uuid}GET /organization_membershipsGET /organization_memberships/{uuid}GET /organization_invitationsGET /organization_invitations/{uuid} | |
organizations:write | Invite or remove users from an organization. | POST /organization_invitationsDELETE /organization_invitations/{uuid}DELETE /organization_memberships/{uuid} | |
users:read | Retrieve user information. | GET /users/{uuid}GET /users/me | |
| Webhooks | webhooks:read | Retrieve webhook subscriptions and sample payloads. | GET /webhook_subscriptionsGET /webhook_subscriptions/{uuid}GET /webhook_subscriptions/sample_data |
webhooks:write | Create or delete webhook subscriptions. | POST /webhook_subscriptionsDELETE /webhook_subscriptions/{uuid} | |
| Security & Compliance | activity_log:read | View organization activity. | GET /activity_log_entries |
data_compliance:write | Delete invitee or event data. | POST /data_compliance/deletion_eventPOST /data_compliance/invitee_deletion | |
outgoing_communications:read | Retrieve a list of outgoing SMS and email communications. | GET /outgoing_communications |
Required Scopes Per Endpoint
Each API endpoint in the reference includes a “Required scopes” section that tells you which Auth scopes must be granted for the request to succeed. Example callout:
Choosing Scopes
When your app initiates an OAuth flow, it should request the minimum set of scopes needed for your use cases. Overly broad scopes can lead to unnecessary user friction at install time. Review your integration’s features and map them to the scopes in the catalog above. Example: Syncing basic scheduling data into a third party systemscheduled_events:readRequired to read scheduled meetings and their status.invitees:readRequired to associate meetings with people and contact details.webhooks:write(optional) Recommended for near real time updates. Not required if the integration relies on polling.
Troubleshooting
Missing scope error If you receive a 403 error indicating missing scopes:- Verify that the scopes requested during installation include all required by the endpoint you are calling.
- Confirm that the user granted all requested scopes (users can decline scopes during install).
- For existing installs, you may need to reauthorize the app to request additional scopes.
- Check that
webhooks:writeis granted. - Confirm that your subscription includes the event family you want to receive.
- Ensure that the related domain read scopes are also granted.
Backward Compatibility
Legacy OAuth apps and Personal Access Tokens issued before the introduction of scoped permissions retain full access to available endpoints by default. For newly created OAuth apps and new Personal Access Tokens, no API access is granted until scopes are explicitly requested and approved. When a legacy token is refreshed, it is automatically migrated to the scoped token format. This migration happens transparently and does not require the user to reauthorize the application.Sample Authorization URL
ReplaceCLIENT_ID and REDIRECT_URI with your values: