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.
Hierarchy
A :write scope implicitly includes the corresponding :read scope within the same domain.
Webhooks
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.
Category | Scope | Description | Provides access to |
|---|---|---|---|
Scheduling |
| Retrieve user and event-type availability. |
|
| Update event type availability. |
| |
| Retrieve event type details and available times. |
| |
| Create or update event types. |
| |
| Retrieve configured meeting locations. |
| |
| Retrieve routing forms and submissions. |
| |
| Create and customize a single-use scheduling link from an existing event type. |
| |
| Retrieve scheduled events and event invitee information. |
| |
| Create event invitees, cancel events or mark invitees as no-show. |
| |
| Create a single-use scheduling link from an existing event type without any customization. |
| |
User management |
| Retrieve group details and relationships. |
|
| Retrieve organization data, memberships, and invitations. |
| |
| Invite or remove users from an organization. |
| |
| Retrieve user information. |
| |
Webhooks |
| Retrieve webhook subscriptions and sample payloads. |
|
| Create or delete webhook subscriptions. |
| |
Security & Compliance |
| View organization activity. |
|
| Delete invitee or event data. |
| |
| Retrieve a list of outgoing SMS and email communications. |
|
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:

When a request is missing required scopes, the API returns an error indicating insufficient permissions.
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 system
scheduled_events:read
Required to read scheduled meetings and their status.
invitees:read
Required 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.
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.
Webhooks not delivering events
Check that webhooks:write is granted.
Confirm that your subscription includes the event family you want to receive.
Ensure that the related domain read scopes are also granted.
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.
Replace CLIENT_ID and REDIRECT_URI with your values:
https://auth.calendly.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=code&scope=scheduled_events:read webhooks:write
List scopes separated by spaces. Only include the scopes your app needs.