Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

Calendly integration

In short

Read event types and booked meetings, and create booking links. Connect it on the Integrations page; your app then calls Calendly through Sapilon without ever holding a Calendly credential.

Lets your app list event types and scheduled meetings with their invitees, and create single-use scheduling links, for the Calendly user whose token you use.

Connecting

On the Integrations page choose Connect on Calendly and fill in:

  • Personal access token — Calendly → Integrations & apps → API and webhooks → Get a token now.

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

What your app can do

Only these requests are available; anything else is refused.

  • GET /users/me
  • GET /event_types
  • GET /scheduled_events
  • GET /scheduled_events/*
  • GET /scheduled_events/*/invitees
  • POST /scheduling_links

How the agent uses it

Use integrations.request('calendly', …); paths are relative to https://api.calendly.com. Calendly identifies things by full URIs: pass the uri from GET /users/me as user.

  • GET /users/me — body.resource.uri is the user URI.
  • GET /event_types — Example: { method: 'GET', path: '/event_types', query: { user: 'https://api.calendly.com/users/ABC' } }.
  • GET /scheduled_events — Example: { method: 'GET', path: '/scheduled_events', query: { user, min_start_time: '2026-10-01T00:00:00Z', status: 'active' } }. GET /scheduled_events/{uuid} — one meeting.
  • GET /scheduled_events/{uuid}/invitees — who booked it.
  • POST /scheduling_links — a single-use booking link. Example: { method: 'POST', path: '/scheduling_links', body: { max_event_count: 1, owner: 'https://api.calendly.com/event_types/XYZ', owner_type: 'EventType' } }.

More from Calendly: https://developer.calendly.com/api-docs

Last updated .

Was this page helpful?