docs/api-reference/v2/introduction.mdx
The Cal.com API has 3 authentication methods:
In order to be listed as an official partner and App in our App Store: cal.com/apps you need to create and get a verified OAuth client.
<Note> **Create an OAuth client and "Continue with Cal.com"** </Note>You can request it here: https://cal.com/docs/api-reference/v2/oauth.
While API keys can be created easily, bear in mind we almost always recommend using OAuth credentials, especially when building integrations or applications with Cal.com.
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.
Teams customers have all the endpoints except the ones prefixed with "Platform" and "Orgs".
Organizations customers have all the endpoints except the ones prefixed with "Teams" and "Orgs / Orgs".
There are three authentication methods for the API, and each of them has the following rate limits:
If no authentication method is provided, the default rate limit is 120 requests per minute.
You need to use OAuth credentials when:
OAuth credentials can be accessed in the platform dashboard 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:
x-cal-client-id - ID of the OAuth client.x-cal-secret-key - secret of the OAuth client.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:
It is passed as an authorization bearer request header Authorization: Bearer <access-token>.
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. 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.
Platform customers have the following endpoints available: