Cal.com OAuth

Add Cal.com to your app

One button connects your users' Cal.com accounts. Your app then reads their availability and books on their behalf through API v2, with only the scopes they allow. Built it? List it in the Cal.com App Store.

Trusted by fast-growing companies around the world

Continue with Cal.com

The official buttons, served from app.cal.com. Check each one on a light or a dark background, copy it as HTML, React, Markdown or its URL, then put in your client ID and redirect URI.

Background
Copy as
  • Continue with Cal.com, dark, rounded
    Dark, rounded
  • Continue with Cal.com, light, rounded
    Light, rounded
  • Continue with Cal.com, neutral, rounded
    Neutral, rounded
  • Continue with Cal.com, dark, squared
    Dark, squared
  • Continue with Cal.com, light, squared
    Light, squared
  • Continue with Cal.com, neutral, squared
    Neutral, squared
  • Continue with Cal.com, coss ui
    coss ui

From the button to a booking

Standard OAuth 2.0 with the authorization code flow. The button sends people to Cal.com, they choose what your app may do, and you trade the code for tokens.

  • Confidential clients keep a secret on the server; public clients use PKCE (S256).
  • Access tokens last 30 minutes; refresh tokens get new ones.
  • Up to 10 exact redirect URIs per client, no wildcards.
  • A token calls only the endpoints its scopes cover.

Send people to Cal.com

The button's link. Cal.com shows the consent screen and redirects back with a code.

1GET https://app.cal.com/auth/oauth2/authorize2  ?client_id=YOUR_CLIENT_ID3  &redirect_uri=https://your-app.com/callback4  &state=YOUR_STATE5  &scope=BOOKING_READ%20BOOKING_WRITE67# back on your side8https://your-app.com/callback?code=AUTHORIZATION_CODE&state=YOUR_STATE

Three steps to the App Store

The OAuth client connects your app to people's accounts. The App Store listing is how Cal.com users find it.

01

Create an OAuth client

In Settings → Developer → OAuth, name your app, pick at least one scope and add your redirect URIs. The client starts as pending; Cal.com reviews it and emails you when it is accepted.

02

Add the button

Put a Continue with Cal.com button where your users connect tools. It opens Cal.com's consent screen, and your callback trades the code for tokens.

03

List it in the App Store

Cal.com is open source: create your app's listing in packages/app-store with yarn create-app, then open a pull request on calcom/cal.com. The guide walks through it.

Ask only for what your app needs

People see every scope on the consent screen before they allow it, and a token can only reach the endpoints its scopes cover.

01

User

A person's own account: BOOKING_*, EVENT_TYPE_*, SCHEDULE_*, APPS_*, PROFILE_*, WEBHOOK_* and INSIGHTS_READ.

02

Team

The teams they belong to, with the TEAM_* scopes: team scheduling links, bookings, schedules and memberships.

03

Organization

Organization-wide access with the ORG_* scopes. Each one grants the matching TEAM_* scope too.

You need white-label scheduling inside your app?

Use coss.com Scheduling, made by the team of Cal.com. The infrastructure that's powering millions of bookings, under your brand and for your own users.

coss.scheduling.bookings.create()

const result = await coss.scheduling.bookings.create({
  event_type: eventTypeId,
  start: "2026-03-10T14:00:00Z",
  attendee: {
    uid: "customer_77",
    name: "Sam Lee",
    email: "[email protected]",
    time_zone: "America/New_York",
  },
});
if (result.error?.code === "slot_unavailable") {
  // Someone got there first: show the times again.
}

Trial lesson with Ana Reyes

30 minutes, 10 minute buffer

confirmed
Ana Reyes's week: open times, times busy on a connected calendar, and bookings
TimeMon 9Tue 10Wed 11Thu 12Fri 13
09:00busyopenbookedopenopen
10:00openSamopenbusyopen
11:00openopenbusyopenopen
13:00bookedopenopenbookedopen
14:00openbusyopenbookedopen
15:00openbusyopenopenbusy
OpenBusy on calendarBooked
  1. confirmedCalendar invitations to Sam and Ana
  2. scheduling.booking.confirmed

Questions about building on Cal.com

The short ones are here. For anything else, ask below.

Ask a question

Connect your app to Cal.com

Create an OAuth client, add the button, and put your app in front of every Cal.com user.

Create an OAuth clientRead the OAuth docs