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. One connection gives you agent functions: your agents check real availability, book appointments, and look up or cancel scheduled events.
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.
A Calendly account that hosts the event types you want to book: its own event types, or team round-robin event types it’s a host on. 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).
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.
Calendly's personal access tokens page, with the Create a token button highlighted.
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, 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.
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.
In the Retell Dashboard, open Integrations, select the Available tab, find Calendly, and click Connect (Add Account if a connection already exists).
2
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.
The Calendly connection dialog: paste the personal access token as the API key.
Click Connect (Add Account if a connection already exists). Retell tests the token by fetching the Calendly user it belongs to, which requires users:read. This check doesn’t validate the other tool scopes.
3
Verify it worked
On success the connection appears on the Connected tab. From here, add tools to an agent: see Calendly agent functions for what each tool does and how it’s configured.
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, paste it into API Key, and try connecting again. For an existing connection, replace the token in its settings and click Reconnect.
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. Open the connection’s settings, paste a current token, and click Reconnect.
Event types the connected Calendly user hosts: their own, plus team round-robin event types they’re a host on. To book for several team members, use a round-robin event type the connected user is a host on, connect a token per user (multiple connections are fine), or use a shared account that owns the event types.
Check availability, book appointments, and look up or cancel events mid-conversation.
Integrations overview
See every provider Retell connects to and how integration tools work.
Connect Cal.com
The other calendar option, with rescheduling support.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Retell AI","description":"Explore Retell AI docs to learn how to build, test, deploy, and optimize AI voice agents with APIs, integrations, conversation flows, and production-ready tools.","colors":{"primary":"#606A78","light":"#F5F5FA","dark":"#172131"},"logo":{"light":"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-light.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=64eb26a2d3cc9a67ee3ea0bfe086dd14","dark":"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-dark.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=08472a0c78599498b85d23348d7826f6"},"favicon":"https://mintcdn.com/retellai/TsBk7Stx4694-7p1/logo/favicon-light.ico?fit=max\u0026auto=format\u0026n=TsBk7Stx4694-7p1\u0026q=85\u0026s=4e90f4db5e89b5ec7fe249a4844c2d97","api":{"openapi":["openapi-final.yaml"],"playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.retellai.com"}},"navbar":{"links":[{"icon":"message-circle-question-mark","href":"https://docs.retellai.com/general/support","label":"Support"},{"icon":"chart-line","href":"https://status.retellai.com/","label":"Status"},{"icon":"book","href":"https://www.retellai.com/changelog","label":"Changelog"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.retellai.com"}},"footer":{"socials":{"x":"https://x.com/retellai","linkedin":"https://www.linkedin.com/company/98828489","github":"https://github.com/RetellAI","instagram":"https://www.instagram.com/retell_ai","youtube":"https://www.youtube.com/@retellai"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"styling":{"codeblocks":"dark","latex":true},"integrations":{"mixpanel":{"projectToken":"c8676d3561adb5eefc366aa2a66725bc"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"retellai","hasAudioNarration":false,"actualSubdomain":"retellai","customDomains":["docs.retellai.com"],"gitSource":{"type":"github","owner":"retellai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af3ac8e548744ed7113f1cc","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Guides","count":214},{"language":"default","tag":"API Reference","count":107},{"language":"default","tag":"Build","count":68},{"language":"default","tag":"Deploy","count":35},{"language":"default","tag":"Integrations","count":30},{"language":"default","tag":"Conversation flow agents","count":24},{"language":"default","tag":"Deprecations","count":24},{"language":"default","tag":"Detailed Deprecation Guide","count":23},{"language":"default","tag":"CRM","count":21},{"language":"default","tag":"Monitor","count":17}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instinct-self-updating-docs","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@media (min-width: 1024px){#navbar .flex-1:has(>[data-slot=\"context-menu-trigger\"]),#navbar .flex-1:has(>a>.nav-logo){flex:none!important;width:15rem}#navbar .ustify-end:has(.nav-tabs),#navbar .justify-end:has(.nav-tabs){justify-content:space-between!important;margin-left:0!important}#navbar .flex:has(>.ustify-end),#navbar .flex:has(>.justify-end){flex:1!important}#navbar .nav-tabs{white-space:nowrap}}article{max-width:48rem!important}.max-w-prose{max-width:48rem!important}.max-w-xl{max-width:48rem!important}video.scroll-play{cursor:zoom-in}.video-zoom-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:4vmin;background:rgba(0, 0, 0, 0.8);backdrop-filter:blur(2px);cursor:zoom-out}.video-zoom-media{max-width:92vw;max-height:92vh;width:auto;height:auto;border-radius:12px;box-shadow:0 10px 40px rgba(0, 0, 0, 0.5);cursor:default}.video-zoom-close{position:fixed;top:16px;right:20px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:999px;background:rgba(255, 255, 255, 0.15);color:#fff;font-size:24px;line-height:1;cursor:pointer}.video-zoom-close:hover{background:rgba(255, 255, 255, 0.3)}.ui-btn{background-color:#f4f5f7!important;color:#1f2328!important;border:1px solid #d0d5dd!important;border-bottom-width:2px!important;border-radius:6px!important;padding:0.1em 0.42em!important}html.dark .ui-btn,[data-theme=\"dark\"] .ui-btn{background-color:#21252d!important;color:#e6e8eb!important;border-color:#3a4048!important}img[src$=\"/images/icons/wss-badge.svg\"]{width:auto!important;height:15px!important}a[aria-current=\"page\"] img[src$=\"/images/icons/wss-badge.svg\"]{content:url(\"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2227%22 height=%2215%22 viewBox=%220 0 27 15%22 role=%22img%22 aria-label=%22WSS%22%3E %3Crect width=%2227%22 height=%2215%22 rx=%224%22 fill=%22%23F54A00%22/%3E %3Ctext x=%2213.5%22 y=%2210.7%22 text-anchor=%22middle%22 font-family=%22ui-sans-serif, system-ui, -apple-system, Segoe UI, Inter, Helvetica, Arial, sans-serif%22 font-size=%228.8%22 font-weight=%22700%22 fill=%22%23FFFFFF%22%3EWSS%3C/text%3E %3C/svg%3E\")}"}],"page":{"pagePath":"integrations/calendly","slug":"/integrations/calendly","pageMetadata":{"title":"Connect Calendly","sidebarTitle":"Connect","description":"Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.","keywords":["Calendly integration","personal access token","Calendly token scopes","voice AI scheduling","AI phone agent Calendly","AI assistant scheduling"],"og:title":"Connect Calendly to Retell — AI phone agents that book appointments","og:description":"Create a Calendly personal access token, connect it in the Retell AI dashboard, and verify it so your agents can read and book real openings.","href":"/integrations/calendly"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Frame,Heading,Note,OptimizedImage,Step,Steps,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Connect Calendly with a personal access token that has the `,_jsx(_components.a,{href:`#required-token-scopes`,children:`required scopes`}),`. One connection gives you `,_jsx(_components.a,{href:`/integrations/calendly-functions`,children:`agent functions`}),`: your agents check real availability, book appointments, and look up or cancel scheduled events.`]}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use-it`,children:`When to use it`}),`\n`,_jsx(_components.p,{children:`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:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Read live openings to the caller.`}),` The agent checks the event type’s availability and offers actual slots.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Handle cancellations on the same call.`}),` The agent finds the caller’s upcoming events by email and cancels the one they name.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A Calendly account that hosts the event types you want to book: its own event types, or team round-robin event types it’s a host on. The token identifies one Calendly user, and Retell books and reads `,_jsx(_components.strong,{children:`that user’s`}),` event types and scheduled events.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`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).`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-create-a-personal-access-token`,children:`Step 1: Create a personal access token`}),`\n`,_jsxs(_components.p,{children:[`In Calendly, go to `,_jsx(_components.strong,{children:`Integrations \u0026 apps`}),` and open the `,_jsx(_components.strong,{children:`API \u0026 webhooks`}),` tile. On `,_jsx(_components.strong,{children:`Your personal access tokens`}),`, click `,_jsx(_components.strong,{children:`Create a token`}),` and name it something descriptive, for example `,_jsx(_components.code,{children:`Retell AI`}),`.`]}),`\n`,_jsx(Frame,{caption:`Calendly's personal access tokens page, with the Create a token button highlighted.`,children:_jsx(`div`,{style:{aspectRatio:`16 / 9`,width:`100%`,background:`rgba(128,128,128,0.15)`,display:`flex`,alignItems:`center`,justifyContent:`center`,borderRadius:`8px`,overflow:`hidden`},children:_jsx(OptimizedImage,{src:`https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=a57ae0555ac5715c228b6199d670dbbf`,alt:`Calendly's Your personal access tokens page, with Integrations \u0026 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`},\"data-og-width\":`1792`,width:`1792`,\"data-og-height\":`814`,height:`814`,\"data-path\":`images/integration/calendly-create-token.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?w=280\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=57b49176c12bdbb13c993bb184a1364c 280w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?w=560\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=ce2d578b33cfcb1739324a882a4b8253 560w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?w=840\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=1d4fdeda83fb2c08181b653617173fd7 840w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?w=1100\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=671bafdee49391ecdf4ad0b47c1914aa 1100w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?w=1650\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=f97e6981570addf21f78e96a2d95492f 1650w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-create-token.png?w=2500\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=47607da5eaabed5a7f92ede3b92d4502 2500w`})})}),`\n`,_jsx(Heading,{level:`3`,id:`required-token-scopes`,children:`Required token scopes`}),`\n`,_jsx(_components.p,{children:`Before creating the token, select the scopes for your tools (as of September 2026):`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`Used for`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`users:read`})}),_jsx(_components.td,{children:`Validate every connection by fetching the token’s Calendly user.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`event_types:read`})}),_jsxs(_components.td,{children:[`Resolve the scheduling link for `,_jsx(_components.strong,{children:`Check Availability`}),` and `,_jsx(_components.strong,{children:`Book Appointment`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`availability:read`})}),_jsxs(_components.td,{children:[`Read available times for `,_jsx(_components.strong,{children:`Check Availability`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`scheduled_events:read`})}),_jsxs(_components.td,{children:[`Read scheduled events and invitees for `,_jsx(_components.strong,{children:`List Bookings`}),` and `,_jsx(_components.strong,{children:`Get Booking`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`scheduled_events:write`})}),_jsxs(_components.td,{children:[`Create bookings with `,_jsx(_components.strong,{children:`Book Appointment`}),` and cancel them with `,_jsx(_components.strong,{children:`Cancel Booking`}),`.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`To use all five tools, grant all the permissions above. Calendly’s `,_jsxs(_components.a,{href:`https://developer.calendly.com/docs/authentication/scopes`,children:[_jsx(_components.code,{children:`:write`}),` scopes include the matching `,_jsx(_components.code,{children:`:read`}),` permission`]}),`, so `,_jsx(_components.code,{children:`scheduled_events:read`}),` doesn’t need to be selected separately if you grant `,_jsx(_components.code,{children:`scheduled_events:write`}),`. For read-only tools, omit `,_jsx(_components.code,{children:`scheduled_events:write`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Create the token and copy it right away; Calendly shows it only once. For the scopes needed by each tool, see `,_jsx(_components.a,{href:`/integrations/calendly-functions#permissions`,children:`Calendly agent function permissions`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The token’s access also depends on the Calendly user’s role. An `,_jsx(_components.strong,{children:`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.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-connect-calendly-in-retell`,children:`Step 2: Connect Calendly in Retell`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add the connection`,children:_jsxs(_components.p,{children:[`In the Retell Dashboard, open `,_jsx(_components.strong,{children:`Integrations`}),`, select the `,_jsx(_components.strong,{children:`Available`}),` tab, find `,_jsx(_components.strong,{children:`Calendly`}),`, and click `,_jsx(_components.strong,{children:`Connect`}),` (`,_jsx(_components.strong,{children:`Add Account`}),` if a connection already exists).`]})}),_jsxs(Step,{title:`Enter the token`,children:[_jsx(_components.p,{children:`Fill in the fields:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connection name`})}),_jsxs(_components.td,{children:[`Alias for this connection; prefilled with `,_jsx(_components.code,{children:`Calendly - API key`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`API Key`})}),_jsx(_components.td,{children:`The personal access token from Step 1.`})]})]})]}),_jsx(Frame,{caption:`The Calendly connection dialog: paste the personal access token as the API key.`,children:_jsx(`div`,{style:{aspectRatio:`16 / 9`,width:`100%`,background:`rgba(128,128,128,0.15)`,display:`flex`,alignItems:`center`,justifyContent:`center`,borderRadius:`8px`,overflow:`hidden`},children:_jsx(OptimizedImage,{src:`https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=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`},\"data-og-width\":`1202`,width:`1202`,\"data-og-height\":`1004`,height:`1004`,\"data-path\":`images/integration/calendly-connect-dialog.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?w=280\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=51898164f6b93d0db7b9ea9a0c9a861a 280w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?w=560\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=dd73d844727dd1ad64816d6d6781c2ac 560w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?w=840\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=f999d520a7ff17b18248c4871848cd0d 840w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?w=1100\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=193584e080c9d1c6f6db097e1e5d1dc8 1100w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?w=1650\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=52efab4657b6ea6f9a37941a1a450497 1650w, https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/calendly-connect-dialog.png?w=2500\u0026fit=max\u0026auto=format\u0026n=eQ17pyeTZnmNJIsQ\u0026q=85\u0026s=ee7b96111d23d40d39073c3897150aea 2500w`})})}),_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect`}),` (`,_jsx(_components.strong,{children:`Add Account`}),` if a connection already exists). Retell tests the token by `,_jsx(_components.a,{href:`https://developer.calendly.com/api-docs/calendly-api/users/get-current-user`,children:`fetching the Calendly user it belongs to`}),`, which requires `,_jsx(_components.code,{children:`users:read`}),`. This check doesn’t validate the other tool scopes.`]})]}),_jsx(Step,{title:`Verify it worked`,children:_jsxs(_components.p,{children:[`On success the connection appears on the `,_jsx(_components.strong,{children:`Connected`}),` tab. From here, add tools to an agent: see `,_jsx(_components.a,{href:`/integrations/calendly-functions`,children:`Calendly agent functions`}),` for what each tool does and how it’s configured.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Connecting fails with an authorization error`,id:`connecting-fails-with-an-authorization-error`,children:[_jsxs(_components.p,{children:[`Confirm you pasted a `,_jsx(_components.strong,{children:`personal access token`}),`, not an OAuth client secret or a webhook signing key, and that it hasn’t been revoked in Calendly.`]}),_jsxs(_components.p,{children:[`A valid token can still fail with `,_jsx(_components.strong,{children:`Could not connect. Check your credentials and try again.`}),` if it lacks `,_jsx(_components.code,{children:`users:read`}),`. Create a new token with `,_jsx(_components.code,{children:`users:read`}),` and the `,_jsx(_components.a,{href:`#required-token-scopes`,children:`scopes for your tools`}),`, paste it into `,_jsx(_components.strong,{children:`API Key`}),`, and try connecting again. For an existing connection, replace the token in its settings and click `,_jsx(_components.strong,{children:`Reconnect`}),`.`]})]}),_jsx(Accordion,{title:`The connection errored after working for a while`,id:`the-connection-errored-after-working-for-a-while`,children:_jsxs(_components.p,{children:[`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 `,_jsx(_components.a,{href:`#required-token-scopes`,children:`required scopes`}),`. Open the connection’s settings, paste a current token, and click `,_jsx(_components.strong,{children:`Reconnect`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(AccordionGroup,{children:_jsx(Accordion,{title:`Which event types can the agent book?`,id:`which-event-types-can-the-agent-book`,children:_jsx(_components.p,{children:`Event types the connected Calendly user hosts: their own, plus team round-robin event types they’re a host on. To book for several team members, use a round-robin event type the connected user is a host on, connect a token per user (multiple connections are fine), or use a shared account that owns the event types.`})})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Calendly agent functions`,icon:`wrench`,href:`/integrations/calendly-functions`,children:_jsx(_components.p,{children:`Check availability, book appointments, and look up or cancel events mid-conversation.`})}),_jsx(Card,{title:`Integrations overview`,icon:`plug`,href:`/integrations/overview`,children:_jsx(_components.p,{children:`See every provider Retell connects to and how integration tools work.`})}),_jsx(Card,{title:`Connect Cal.com`,icon:`calendar`,href:`/integrations/cal-com`,children:_jsx(_components.p,{children:`The other calendar option, with rescheduling support.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Connect Calendly","sidebarTitle":"Connect","description":"Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.","keywords":["Calendly integration","personal access token","Calendly token scopes","voice AI scheduling","AI phone agent Calendly","AI assistant scheduling"],"og:title":"Connect Calendly to Retell — AI phone agents that book appointments","og:description":"Create a Calendly personal access token, connect it in the Retell AI dashboard, and verify it so your agents can read and book real openings.","href":"/integrations/calendly"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"When to use it","slug":"when-to-use-it","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Step 1: Create a personal access token","slug":"step-1-create-a-personal-access-token","depth":2,"children":[{"title":"Required token scopes","slug":"required-token-scopes","depth":3,"children":[]}]},{"title":"Step 2: Connect Calendly in Retell","slug":"step-2-connect-calendly-in-retell","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/retellai/e3fe5c9b64f9e274/scroll-play-videos.js"],"subdomain":"retellai","siteName":"Retell AI","title":"Connect Calendly to Retell — AI phone agents that book appointments","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T19:00:21.550Z","originalFileLocation":"integrations/calendly.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Retell AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connect Calendly to Retell — AI phone agents that book appointments\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a Calendly personal access token, connect it in the Retell AI dashboard, and verify it so your agents can read and book real openings.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Retell AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.retellai.com/integrations/calendly\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://retellai.mintlify.site/_mintlify/api/og/v2?division=Calendly\u0026amp;title=Connect+Calendly\u0026amp;description=Connect+Calendly+to+Retell+AI+with+a+personal+access+token+so+agents+can+check+availability%2C+book+appointments%2C+and+cancel+scheduled+events.\u0026amp;theme=2259d4172d4ae0cc61d9b63d\u0026amp;signature=0841e3ba5beb50f7095161af40c3b03c0a2a94b671f70ad8644009a47ec828c0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Connect Calendly to Retell — AI phone agents that book appointments\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a Calendly personal access token, connect it in the Retell AI dashboard, and verify it so your agents can read and book real openings.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://retellai.mintlify.site/_mintlify/api/og/v2?division=Calendly\u0026amp;title=Connect+Calendly\u0026amp;description=Connect+Calendly+to+Retell+AI+with+a+personal+access+token+so+agents+can+check+availability%2C+book+appointments%2C+and+cancel+scheduled+events.\u0026amp;theme=2259d4172d4ae0cc61d9b63d\u0026amp;signature=0841e3ba5beb50f7095161af40c3b03c0a2a94b671f70ad8644009a47ec828c0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Retell AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#606A78\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.retellai.com/integrations/calendly\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/calendly.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.retellai.com/#organization\",\"name\":\"Retell AI\",\"url\":\"https://docs.retellai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-light.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=64eb26a2d3cc9a67ee3ea0bfe086dd14\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.retellai.com#website\",\"name\":\"Retell AI\",\"url\":\"https://docs.retellai.com\",\"publisher\":{\"@id\":\"https://docs.retellai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.retellai.com/integrations/calendly#webpage\",\"url\":\"https://docs.retellai.com/integrations/calendly\",\"name\":\"Connect Calendly\",\"description\":\"Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.\",\"dateModified\":\"2026-10-22T19:00:21.550Z\",\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.retellai.com/integrations/calendly#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.retellai.com/integrations/calendly#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://docs.retellai.com/integrations/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calendar\",\"item\":\"https://docs.retellai.com/integrations/gohighlevel-functions\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Connect Calendly\",\"item\":\"https://docs.retellai.com/integrations/calendly\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.retellai.com/integrations/calendly#article\",\"headline\":\"Connect Calendly\",\"name\":\"Connect Calendly\",\"description\":\"Connect Calendly to Retell AI with a personal access token so agents can check availability, book appointments, and cancel scheduled events.\",\"url\":\"https://docs.retellai.com/integrations/calendly\",\"mainEntityOfPage\":{\"@id\":\"https://docs.retellai.com/integrations/calendly#webpage\"},\"dateModified\":\"2026-10-22T19:00:21.550Z\",\"keywords\":\"Calendly integration, personal access token, Calendly token scopes, voice AI scheduling, AI phone agent Calendly, AI assistant scheduling\",\"publisher\":{\"@id\":\"https://docs.retellai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Retell AI\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Retell AI\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/integrations/calendly.md","siteName":"Retell AI","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book","groups":[{"group":" ","pages":[{"title":"Introduction to Retell","href":"/general/introduction"},{"title":"Build your first phone agent in 15 minutes","href":"/get-started/quick-start"}]},{"group":"Conductor (AI Assistant)","icon":"https://mintlify.s3.us-west-1.amazonaws.com/retellai/images/conductor/conductor-icon.svg","pages":[{"title":"Retell AI Conductor overview","sidebarTitle":"Overview","href":"/conductor/overview"},{"group":"Functionality","pages":[{"title":"Build and refine agents","href":"/conductor/build-and-refine"},{"title":"Test and improve agents","href":"/conductor/test-and-improve"},{"title":"Inspect knowledge bases","href":"/conductor/knowledge-base"},{"title":"Review calls and chats","href":"/conductor/call-and-chat-history"},{"title":"Build analytics dashboards","href":"/conductor/analytics-dashboards"},{"title":"Review QA results","href":"/conductor/ai-qa"},{"title":"Review contacts","href":"/conductor/contacts"}]},{"title":"Pricing","href":"/conductor/usage-and-billing"}]},{"group":"Build","icon":"bot","pages":[{"title":"Build a Retell agent: configuration overview","href":"/build/overview"},{"title":"Single prompt vs. conversation flow","href":"/build/choose-agent-type"},{"title":"General prompting principles","href":"/build/prompt-engineering-guide"},{"group":"Single prompt agents","pages":[{"title":"Single prompt best practices","href":"/build/single-multi-prompt/write-single-prompt"},{"title":"Configure basic settings","href":"/build/single-multi-prompt/configure-basic-settings"},{"group":"Functions","pages":[{"title":"Function calling for single and multi-prompt agents","href":"/build/single-multi-prompt/function-calling"},{"title":"End call","href":"/build/single-multi-prompt/end-call"},{"title":"Transfer call tool (single \u0026 multi-prompt agents)","href":"/build/single-multi-prompt/transfer-call"},{"title":"Send SMS","href":"/build/single-multi-prompt/send-sms"},{"title":"Press digit (IVR navigation)","href":"/build/single-multi-prompt/press-digit"},{"title":"Integrate any system with custom function","href":"/build/single-multi-prompt/custom-function"},{"title":"Integration tools","href":"/build/single-multi-prompt/integration-tools"},{"title":"Code tool: run JavaScript in a Retell agent","href":"/build/single-multi-prompt/code-tool"},{"title":"Extract Dynamic Variables","href":"/build/single-multi-prompt/extract-dv"},{"title":"Agent Transfer tool: hand a call to another AI agent","href":"/build/single-multi-prompt/transfer-agent"},{"title":"MCP tools for single and multi-prompt agents","href":"/build/single-multi-prompt/mcp"}]}]},{"group":"Conversation flow agents","pages":[{"title":"Conversation flow agents: structured voice AI call control","href":"/build/conversation-flow/overview"},{"title":"Conversation flow best practices","href":"/build/conversation-flow/best-practices"},{"title":"Configure global settings","href":"/build/conversation-flow/global-setting"},{"group":"Nodes","pages":[{"title":"Nodes and edges","href":"/build/conversation-flow/node"},{"title":"Subagent node","href":"/build/conversation-flow/subagent-node"},{"title":"Conversation node","href":"/build/conversation-flow/conversation-node"},{"group":"Function Node","pages":[{"title":"Call a function from a conversation flow node","href":"/build/conversation-flow/function-node"},{"title":"Custom function in conversation flow","href":"/build/conversation-flow/custom-function"},{"title":"Integration tools in conversation flow","href":"/build/conversation-flow/integration-tools"}]},{"title":"Code node: run JavaScript in a conversation flow","href":"/build/conversation-flow/code-node"},{"title":"Call transfer node in conversation flow","href":"/build/conversation-flow/call-transfer-node"},{"title":"Press Digit Node","href":"/build/conversation-flow/press-digit-node"},{"title":"End node","href":"/build/conversation-flow/end-node"},{"title":"Logic Split Node","href":"/build/conversation-flow/logic-split-node"},{"title":"SMS Node","href":"/build/conversation-flow/sms-node"},{"title":"Extract Dynamic Variable Node","href":"/build/conversation-flow/extract-dv-node"},{"title":"Agent Transfer Node","href":"/build/conversation-flow/transfer-agent-node"},{"title":"MCP node in conversation flow","href":"/build/conversation-flow/mcp-node"}]},{"title":"Transition conditions","href":"/build/conversation-flow/transition-condition"},{"title":"Reusable subflows for conversation flow agents","href":"/build/conversation-flow/components"},{"title":"Flex Mode: dynamic conversation flow execution","href":"/build/conversation-flow/flex-mode"},{"group":"Advanced features","pages":[{"title":"Global Node","href":"/build/conversation-flow/global-node"},{"title":"Finetune Examples","href":"/build/conversation-flow/finetune-examples"}]},{"title":"Debug guide","href":"/build/conversation-flow/debug-guide"}]},{"group":"Multi-prompt agents (legacy)","pages":[{"title":"Multi-prompt agents","href":"/build/single-multi-prompt/write-multi-prompt"}]},{"title":"Create chat agent","href":"/build/create-chat-agent"},{"title":"Agent workflow","href":"/agent/agent-workflow"},{"title":"Set language for your agent","href":"/agent/language"},{"title":"Configure a multilingual agent","href":"/agent/multilingual"},{"title":"Supported languages by provider","href":"/build/language-support"},{"group":"Understand user speech better","pages":[{"title":"Speech recognition providers","href":"/build/asr-providers"},{"title":"Transcription modes","href":"/build/transcription-mode"},{"title":"Handle background speech \u0026 noise","href":"/build/handle-background-noise"}]},{"group":"Generate better responses from LLM","pages":[{"title":"Agent Handbook","href":"/build/agent-handbook"},{"title":"Conversational Mode","href":"/build/conversational-mode"},{"title":"Pronunciation examples","href":"/build/prompt-situation-guide"},{"title":"LLM settings","href":"/build/llm-options"},{"title":"GPT Live voice model","href":"/build/gpt-live"}]},{"group":"Customize the synthesized speech","pages":[{"title":"Platform voices","href":"/build/platform-voices"},{"title":"Choose a custom provider","href":"/build/voice"},{"title":"Expressive Mode: add emotion and emphasis to agent speech","href":"/build/expressive-mode"},{"title":"Add custom pronunciation","href":"/build/add-pronunciation"},{"title":"Make the agent stay silent","href":"/build/no-response"},{"title":"Speech controls","href":"/build/speech-controls"},{"title":"Set up TTS fallback","href":"/build/tts-fallback"}]},{"group":"Integrate telephony features","pages":[{"title":"Handle voicemail and IVR","href":"/build/handle-voicemail"},{"title":"Capture DTMF input from user","href":"/build/user-dtmf"},{"title":"Set \u0026 parse custom SIP headers","href":"/build/telephony/sip-headers"}]},{"group":"Provide context to the agent","pages":[{"title":"Knowledge base setup and retrieval tuning","href":"/build/knowledge-base"},{"title":"Dynamic variables","href":"/build/dynamic-variables"}]},{"title":"Guardrails","href":"/build/guardrails"},{"title":"Do-not-call requests","href":"/build/do-not-call"}]},{"group":"Test","icon":"flask-conical","pages":[{"title":"Testing overview","href":"/test/test-overview"},{"group":"LLM Playground","pages":[{"title":"Manually test your agent","href":"/test/llm-playground"},{"title":"Debug your agent response","href":"/test/llm-playground-debug"}]},{"group":"LLM Simulation Testing","pages":[{"title":"Automatically test your agent","href":"/test/llm-simulation-testing"},{"title":"Batch test your agent","href":"/test/batch-test-simulation"}]},{"group":"Audio Testing","pages":[{"title":"Web call testing","href":"/test/test-web"},{"title":"Phone call testing","href":"/test/test-phone"}]},{"title":"Testing with Conductor","icon":"https://mintlify.s3.us-west-1.amazonaws.com/retellai/images/conductor/conductor-icon.svg","href":"/test/testing-with-conductor"},{"title":"Testing pricing","href":"/test/testing-pricing"}]},{"group":"Deploy","icon":"phone","pages":[{"title":"Purchase phone number","href":"/deploy/purchase-number"},{"title":"A/B Testing","href":"/deploy/ab-testing"},{"group":"Connect to custom telephony providers via SIP","pages":[{"title":"Connect Retell voice agents to custom telephony","href":"/deploy/custom-telephony"},{"group":"Connect via SIP trunking","pages":[{"title":"Connect a Twilio number to Retell with elastic SIP trunking","sidebarTitle":"Twilio","href":"/deploy/twilio"},{"title":"Telnyx","href":"/deploy/telnyx"},{"title":"Vonage","href":"/deploy/vonage"}]},{"group":"Connect to CCaaS","pages":[{"title":"Avaya","href":"/deploy/avaya"},{"title":"Connect Genesys Cloud to Retell","href":"/deploy/genesys"},{"title":"Connect Five9 to Retell","href":"/deploy/five9"},{"title":"Amazon Connect","href":"/deploy/amazon-connect"}]}]},{"group":"Make \u0026 receive phone calls","pages":[{"title":"Make outbound calls","href":"/deploy/outbound-call"},{"group":"Inbound calls","pages":[{"title":"Receive calls","href":"/deploy/inbound-call"},{"title":"Inbound call \u0026 SMS webhook","href":"/features/inbound-call-webhook"}]},{"title":"International calling","href":"/deploy/international-call"}]},{"title":"Implement chat with create chat completion","href":"/deploy/create-chat-completion"},{"title":"Website widget","href":"/deploy/chat-widget"},{"group":"Send \u0026 receive SMS","pages":[{"title":"Enable SMS","href":"/deploy/enable-sms"},{"title":"SMS campaign application (A2P 10DLC)","href":"/deploy/sms-campaign-application"}]},{"title":"Agent versions and tags","href":"/agent/version"},{"title":"Compare agent versions","href":"/agent/version-comparison"},{"title":"Create and schedule batch calls","href":"/deploy/make-batch-call"},{"group":"Dialer","pages":[{"title":"Outbound call campaigns","sidebarTitle":"Overview","href":"/dialer/overview"},{"title":"Choose contacts","href":"/dialer/contacts"},{"title":"Compliance checks","href":"/dialer/compliance-checks"},{"title":"Build a sequence","href":"/dialer/sequences"},{"title":"Caller ID and pacing","href":"/dialer/phone-numbers"}]},{"group":"Increase call pickup rate","pages":[{"title":"Spam likely overview","href":"/build/telephony/call_efficiency_overview"},{"title":"Add a business profile","href":"/build/telephony/business-profile"},{"title":"Apply for verified phone number","href":"/build/telephony/verified-phone"},{"title":"Apply for branded call","href":"/build/telephony/branded-call"},{"title":"Handle application rejection","href":"/build/telephony/branded-call-rejection"},{"title":"Stop caller ID service","href":"/build/telephony/delete-service"}]},{"title":"Make a web call","href":"/deploy/web-call"},{"title":"Web calls in native apps","href":"/deploy/native-web-call"},{"title":"Understand concurrency \u0026 limits","href":"/deploy/concurrency"}]},{"group":"Data","icon":"database","pages":[{"title":"Call \u0026 chat history","href":"/features/session-history"},{"title":"Contacts","href":"/features/contacts"},{"title":"Contact memory","href":"/features/contact-memory"}]},{"group":"Monitor","icon":"square-activity","pages":[{"title":"Monitor live calls","href":"/features/live-monitoring"},{"title":"Analytics dashboard","href":"/features/analytics-dashboard"},{"title":"Alert rules for call and chat metrics","href":"/features/alerting-overview"},{"group":"Register \u0026 handle webhooks","pages":[{"group":"Call Event Webhook","pages":[{"title":"Retell webhooks overview","href":"/features/webhook-overview"},{"title":"Register and set up a Retell webhook","href":"/features/register-webhook"}]},{"title":"Secure the webhook","href":"/features/secure-webhook"}]},{"group":"Post Call Extraction","pages":[{"title":"Post Call Extraction overview and categories","href":"/features/post-call-analysis-overview"},{"title":"Define the information you want to extract","href":"/features/post-call-analysis-create"},{"title":"Consume the analysis data","href":"/features/post-call-analysis-consumption"},{"title":"Rerun Post Call/Chat Extraction","href":"/features/rerun-call-analysis"}]},{"group":"AI Quality Assurance","pages":[{"title":"Automatically evaluate call quality with AI QA","sidebarTitle":"AI Quality Assurance","href":"/ai-qa/overview"},{"group":"Create QA","pages":[{"title":"Access AI QA","href":"/ai-qa/get-started"},{"title":"Define a QA cohort","href":"/ai-qa/create-cohort"},{"title":"Define resolution criteria","href":"/ai-qa/define-resolution-criteria"}]},{"title":"View QA results","href":"/ai-qa/view-qa-results"},{"title":"AI QA metrics","href":"/ai-qa/terminologies"},{"title":"Address metric issues","href":"/ai-qa/address-metric-issues"}]}]},{"group":"Reliability \u0026 Debugging","icon":"bug","pages":[{"title":"Reliability Overview","href":"/reliability/reliability-overview"},{"group":"Latency","pages":[{"title":"Check estimated latency","href":"/reliability/check-estimated-latency"},{"title":"Check actual latency","href":"/reliability/check-actual-latency"},{"title":"Troubleshoot high latency","href":"/reliability/troubleshoot-latency"}]},{"group":"Fix agent behaviors","pages":[{"title":"Transcription accuracy","href":"/reliability/wrong-transcript"},{"title":"Debug wrong response","href":"/reliability/wrong-response"}]},{"group":"Debug phone call issues","pages":[{"title":"Debug call transfer failure","href":"/reliability/call-performance"},{"title":"Debug call disconnection","href":"/reliability/debug-call-disconnect"},{"title":"Debug outbound connection issues","href":"/reliability/debug-outbound-call"},{"title":"Debug SIP calls using PCAP file","href":"/reliability/debug-calls-pcap"}]},{"title":"Agent paused or banned","href":"/reliability/agent-paused"},{"title":"Prevent abuse","href":"/reliability/prevent-abuse"},{"title":"Fraud Protection","href":"/reliability/fraud-protection"}]},{"group":"Accounts and Workspace","icon":"circle-user-round","pages":[{"title":"Create and manage Retell workspaces","href":"/accounts/workspace"},{"title":"Manage your Retell AI account","href":"/accounts/account"},{"title":"Use your business email","href":"/accounts/business-email"},{"title":"Access Control","href":"/accounts/access-control"},{"title":"KYC Verification","href":"/accounts/kyc"},{"group":"Billing","pages":[{"title":"Retell AI billing: credits, auto recharge, and invoices","href":"/accounts/billing"},{"title":"Exceptions to Our Per-Minute Pricing","href":"/accounts/billing-exceptions"},{"title":"Add payment methods","href":"/accounts/add-payment"},{"title":"Handle failed payments","href":"/accounts/fail-payment"}]},{"group":"Keys","pages":[{"title":"API Key Overview","href":"/accounts/api-keys-overview"},{"title":"Manage API keys and permission scopes","href":"/accounts/manage-api-keys"},{"title":"Public keys","href":"/accounts/public-keys"}]},{"group":"Privacy and Compliance","pages":[{"title":"Data Storage Settings","href":"/accounts/privacy-disable"},{"title":"Data Retention Policy","href":"/accounts/data-retention"},{"title":"Opt in to secure URL","href":"/accounts/signed-secure-url"},{"title":"Security and compliance","href":"/general/compliance"}]}]},{"group":"Integrations","icon":"unplug","pages":[{"title":"Connect CRMs, calendars, and knowledge sources to Retell","sidebarTitle":"Integrations overview","href":"/integrations/overview"},{"group":"CRM","pages":[{"title":"CRM integrations","href":"/integrations/crm-overview"},{"title":"CRM data mappings","href":"/integrations/crm-mappings"},{"group":"HubSpot","pages":[{"title":"Connect HubSpot","sidebarTitle":"Connect","href":"/integrations/hubspot"},{"title":"HubSpot contact sync","sidebarTitle":"Contact sync","href":"/integrations/hubspot-contact-sync"},{"title":"HubSpot agent functions","sidebarTitle":"Agent functions","href":"/integrations/hubspot-functions"}]},{"group":"Salesforce","pages":[{"title":"Connect Salesforce","sidebarTitle":"Connect","href":"/integrations/salesforce"},{"title":"Salesforce contact sync","sidebarTitle":"Contact sync","href":"/integrations/salesforce-contact-sync"},{"title":"Salesforce agent functions","sidebarTitle":"Agent functions","href":"/integrations/salesforce-functions"}]},{"group":"Microsoft Dynamics 365","pages":[{"title":"Connect Dynamics 365","sidebarTitle":"Connect","href":"/integrations/microsoft-dynamics"},{"title":"Dynamics 365 contact sync","sidebarTitle":"Contact sync","href":"/integrations/microsoft-dynamics-contact-sync"},{"title":"Dynamics 365 agent functions","sidebarTitle":"Agent functions","href":"/integrations/microsoft-dynamics-functions"}]},{"group":"GoHighLevel","pages":[{"title":"Connect GoHighLevel","sidebarTitle":"Connect","href":"/integrations/gohighlevel"},{"title":"GoHighLevel contact sync","sidebarTitle":"Contact sync","href":"/integrations/gohighlevel-contact-sync"},{"title":"GoHighLevel agent functions","sidebarTitle":"Agent functions","href":"/integrations/gohighlevel-functions"}]},{"group":"Zoho CRM","pages":[{"title":"Connect Zoho CRM","sidebarTitle":"Connect","href":"/integrations/zoho"},{"title":"Zoho contact sync","sidebarTitle":"Contact sync","href":"/integrations/zoho-contact-sync"},{"title":"Zoho agent functions","sidebarTitle":"Agent functions","href":"/integrations/zoho-functions"}]}]},{"group":"Helpdesk","pages":[{"group":"Zendesk","pages":[{"title":"Connect Zendesk","sidebarTitle":"Connect","href":"/integrations/zendesk"},{"title":"Zendesk agent functions","sidebarTitle":"Agent functions","href":"/integrations/zendesk-functions"}]}]},{"group":"Knowledge Base","pages":[{"group":"Google Drive","pages":[{"title":"Connect Google Drive","sidebarTitle":"Connect","href":"/integrations/google-drive"},{"title":"Google Drive knowledge base sync","sidebarTitle":"Knowledge base sync","href":"/integrations/google-drive-knowledge-base"}]},{"group":"Microsoft OneDrive","pages":[{"title":"Connect OneDrive","sidebarTitle":"Connect","href":"/integrations/microsoft-onedrive"},{"title":"OneDrive knowledge base sync","sidebarTitle":"Knowledge base sync","href":"/integrations/microsoft-onedrive-knowledge-base"}]},{"group":"Notion","pages":[{"title":"Connect Notion","sidebarTitle":"Connect","href":"/integrations/notion"},{"title":"Notion knowledge base sync","sidebarTitle":"Knowledge base sync","href":"/integrations/notion-knowledge-base"}]}]},{"group":"Calendar","pages":[{"group":"GoHighLevel","pages":[{"title":"GoHighLevel agent functions","sidebarTitle":"Agent functions","description":"GoHighLevel tools for Retell AI agents: look up and update contacts, add tags, work opportunities and tasks, and book the sub-account's calendars.","href":"/integrations/gohighlevel-functions"}]},{"group":"Calendly","pages":[{"title":"Connect Calendly","sidebarTitle":"Connect","href":"/integrations/calendly"},{"title":"Calendly agent functions","sidebarTitle":"Agent functions","description":"Calendly tools for Retell AI agents: check real availability, book appointments, and look up or cancel scheduled events live during the call.","href":"/integrations/calendly-functions"}]},{"group":"Cal.com","pages":[{"title":"Connect Cal.com","sidebarTitle":"Connect","href":"/integrations/cal-com"},{"title":"Cal.com agent functions","sidebarTitle":"Agent functions","href":"/integrations/cal-com-functions"}]}]}]},{"group":"Marketplace","icon":"store","pages":[{"title":"Trigger Retell calls from HubSpot workflows","href":"/integrations/hubspot-marketplace"},{"title":"Trigger Retell calls from Zoho CRM workflows","href":"/integrations/zoho-marketplace"},{"title":"Trigger Retell calls from Slack","href":"/integrations/slack-marketplace"},{"title":"Trigger Retell calls from Notion","href":"/integrations/notion-marketplace"},{"title":"Trigger Retell calls from Google Sheets","href":"/integrations/google-sheets-marketplace"}]},{"group":"Other Topics","pages":[{"group":"Custom LLM","pages":[{"title":"Custom LLM overview","href":"/integrate-llm/overview"},{"title":"Set up a custom LLM WebSocket server for your Retell agent","href":"/integrate-llm/setup-websocket-server"},{"title":"Connect your LLM","href":"/integrate-llm/integrate-llm"},{"title":"Add function calling","href":"/integrate-llm/integrate-function-calling"},{"title":"Troubleshooting","href":"/integrate-llm/troubleshooting"},{"title":"Best practices","href":"/integrate-llm/llm-best-practice"}]},{"title":"Audio Basics","href":"/knowledge/audio-basics"}]}]},{"tab":"API Reference","icon":"code-xml","pages":[{"title":"API Reference","href":"/api-references/overview"}]},{"tab":"SDK","icon":"package","pages":[{"title":"SDK","href":"/get-started/sdk"}]},{"tab":"MCP","icon":"plug-zap","pages":[{"title":"MCP","href":"/get-started/mcp-server"}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/get-started/cli"}]},{"tab":"Deprecations","icon":"book-alert","pages":[{"title":"Deprecations","href":"/deprecation-notice/overview"}]}]},"basePath":"","title":"Connect Calendly to Retell — AI phone agents that book appointments","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BXrZabKK.js","DynamicMarkdown-CtasenyM.js","zoom-image-lightbox-C5F0mVLH.js","lightbox-handle-r17bVUz3.js"]}