> ## Documentation Index
> Fetch the complete documentation index at: https://docs.retellai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Calendly

> Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.

Connect Calendly with a personal access token that has the [required scopes](#required-token-scopes). One connection gives you [agent functions](/integrations/calendly-functions): your agents check real availability, book appointments, and look up or cancel scheduled events.

## When to use it

Connect Calendly when your scheduling already runs on it and you want callers booked without a human in the loop. It's the right choice when you want to:

* **Read live openings to the caller.** The agent checks the event type's availability and offers actual slots.
* **Book while the caller is on the line.** After the caller confirms a time and gives their name and email, the agent books it; the invitee gets Calendly's usual confirmation.
* **Handle cancellations on the same call.** The agent finds the caller's upcoming events by email and cancels the one they name.

For example, a solar installer's inbound agent qualifies the caller, checks the sales team's consultation event type for this week, books Thursday 2pm with the caller's email, and the rep's calendar fills itself.

## Prerequisites

* A Calendly account that owns the event types you want to book. The token identifies one Calendly user, and Retell books and reads **that user's** event types and scheduled events.
* A **paid Calendly subscription** for booking. Availability checks, lookups, and cancellations work on any plan, but creating bookings uses Calendly's Scheduling API, which Calendly restricts to paid subscriptions (as of August 2026).

## Step 1: Create a personal access token

In Calendly, go to **Integrations & apps** and open the **API & webhooks** tile. On **Your personal access tokens**, click **Create a token** and name it something descriptive, for example `Retell AI`.

<Frame caption="Calendly's personal access tokens page, with the Create a token button highlighted.">
  <div style={{ aspectRatio: '16 / 9', width: '100%', background: 'rgba(128,128,128,0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: '8px', overflow: 'hidden' }}>
    <img src="https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?fit=max&auto=format&n=eQ17pyeTZnmNJIsQ&q=85&s=a57ae0555ac5715c228b6199d670dbbf" alt="Calendly's Your personal access tokens page, with Integrations & apps highlighted in the left sidebar and the Create a token button highlighted. A banner warns that tokens created by an admin grant access to Calendly data for everyone in the organization, and a token list shows one redacted entry, out of a 10-token limit." style={{ maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' }} width="1792" height="814" data-path="images/integration/calendly-create-token.png" />
  </div>
</Frame>

### Required token scopes

Before creating the token, select the scopes for your tools (as of September 2026):

| Scope                    | Used for                                                                           |
| ------------------------ | ---------------------------------------------------------------------------------- |
| `users:read`             | Validate every connection by fetching the token's Calendly user.                   |
| `event_types:read`       | Resolve the scheduling link for **Check Availability** and **Book Appointment**.   |
| `availability:read`      | Read available times for **Check Availability**.                                   |
| `scheduled_events:read`  | Read scheduled events and invitees for **List Bookings** and **Get Booking**.      |
| `scheduled_events:write` | Create bookings with **Book Appointment** and cancel them with **Cancel Booking**. |

To use all five tools, grant all the permissions above. Calendly's [`:write` scopes include the matching `:read` permission](https://developer.calendly.com/docs/authentication/scopes), so `scheduled_events:read` doesn't need to be selected separately if you grant `scheduled_events:write`. For read-only tools, omit `scheduled_events:write`.

Create the token and copy it right away; Calendly shows it only once. For the scopes needed by each tool, see [Calendly agent function permissions](/integrations/calendly-functions#permissions).

<Note>
  The token's access also depends on the Calendly user's role. An **admin** token can access data across the organization within its granted scopes. To limit the data it can reach, create it from a dedicated non-admin account.
</Note>

## Step 2: Connect Calendly in Retell

<Steps>
  <Step title="Add the connection">
    In the Retell Dashboard, open **Integrations**, select the **Available** tab, find **Calendly**, and click **Connect** (**Add Account** if a connection already exists).
  </Step>

  <Step title="Enter the token">
    Fill in the fields:

    | Field               | Value                                                           |
    | ------------------- | --------------------------------------------------------------- |
    | **Connection name** | Alias for this connection; prefilled with `Calendly - API key`. |
    | **API Key**         | The personal access token from Step 1.                          |

    <Frame caption="The Calendly connection dialog: paste the personal access token as the API key.">
      <div style={{ aspectRatio: '16 / 9', width: '100%', background: 'rgba(128,128,128,0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: '8px', overflow: 'hidden' }}>
        <img src="https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?fit=max&auto=format&n=eQ17pyeTZnmNJIsQ&q=85&s=9161a9133d2f33aca69c7fc899e7ec38" alt="Retell's Calendly connection dialog on its Connect tab, with a Functions tab beside it. It has a Connection name field prefilled with Calendly - API key and an API Key field with the placeholder Enter your API key, above a Need help finding your credentials link and Cancel and Add Account buttons." style={{ maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' }} width="1202" height="1004" data-path="images/integration/calendly-connect-dialog.png" />
      </div>
    </Frame>

    Click **Connect** (**Add Account** if a connection already exists). Retell tests the token by [fetching the Calendly user it belongs to](https://developer.calendly.com/api-docs/calendly-api/users/get-current-user), which requires `users:read`. This check doesn't validate the other tool scopes.
  </Step>

  <Step title="Verify it worked">
    On success the connection appears on the **Connected** tab. From here, add tools to an agent: see [Calendly agent functions](/integrations/calendly-functions) for what each tool does and how it's configured.
  </Step>
</Steps>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Connecting fails with an authorization error">
    Confirm you pasted a **personal access token**, not an OAuth client secret or a webhook signing key, and that it hasn't been revoked in Calendly.

    A valid token can still fail with **Could not connect. Check your credentials and try again.** if it lacks `users:read`. Create a new token with `users:read` and the [scopes for your tools](#required-token-scopes), paste it into **API Key**, and try connecting again. For an existing connection, replace the token in its settings and click **Reconnect**.
  </Accordion>

  <Accordion title="The connection errored after working for a while">
    Retell flags a connection as errored when Calendly rejects the token, usually because it was revoked, or because Calendly invalidates tokens when the account's password or email changes. If you replaced the token, check that the new one has the [required scopes](#required-token-scopes). Open the connection's settings, paste a current token, and click **Reconnect**.
  </Accordion>
</AccordionGroup>

## FAQ

<AccordionGroup>
  <Accordion title="Which event types can the agent book?">
    Event types owned by the Calendly user whose token you connected. To book for several team members, connect a token per user (multiple connections are fine) or use a shared account that owns the event types.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Calendly agent functions" icon="wrench" href="/integrations/calendly-functions">
    Check availability, book appointments, and look up or cancel events mid-conversation.
  </Card>

  <Card title="Integrations overview" icon="plug" href="/integrations/overview">
    See every provider Retell connects to and how integration tools work.
  </Card>

  <Card title="Connect Cal.com" icon="calendar" href="/integrations/cal-com">
    The other calendar option, with rescheduling support.
  </Card>
</CardGroup>
