---
title: Calendly API Integration on Truto
slug: calendly
category: Scheduling
canonical: "https://truto.one/integrations/detail/calendly/"
---

# Calendly API Integration on Truto



**Category:** Scheduling  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Licenses** — Licenses represent concepts like user seats in apps that support them
- **Roles** — The Role object represents a role of a User.
- **Users** — The User object represents a User.

### Unified Calendar API

- **Availability** — Represents the availability of a person in a time period.
- **Event Types** — 
- **Events** — Events are the time-bound tasks that are associated with a calendar.

## MCP-ready AI tools

Truto exposes 59 tools for Calendly that AI agents can call directly.

- **list_all_calendly_organization_memberships** — List Calendly organization memberships, filterable by organization_id, user, email, or role. Returns: uri, role, user, organization, updated_at, created_at. Requires either user or organization_id to filter results.
- **get_single_calendly_organization_membership_by_id** — Get a single Calendly organization membership by id. Returns: uri, role, user, organization, updated_at, created_at. Required: id.
- **delete_a_calendly_organization_membership_by_id** — Remove a user from a Calendly organization by membership id. An organization owner cannot be removed. Returns an empty 204 response on success. Required: id.
- **get_single_calendly_user_by_id** — Get information about a specified Calendly user by id. Returns: uri, name, email, scheduling_url, timezone, avatar_url, created_at, updated_at. Required: id.
- **get_single_calendly_organization_by_id** — Get a single Calendly organization by id. Returns: uri, created_at, updated_at. Required: id.
- **list_all_calendly_organizations** — List Calendly organizations by label. Returns: uri, created_at, updated_at. Required: label.
- **list_all_calendly_activity_log_entries** — List Calendly activity log entries for an organization, filterable by action, actor, namespace, date range, and search term. Returns: occurred_at, uri, namespace, action, actor, fully_qualified_name, details, organization. Required: organization_id. Enterprise subscription required.
- **list_all_calendly_user_busy_times** — List Calendly user busy times (internal and external scheduled events) within a specified date range. Returns: type, start_time, end_time, buffered_start_time, buffered_end_time, event. Required: user, start_time, end_time. Date range cannot exceed 7 days and this endpoint does not support traditional keyset pagination.
- **list_all_calendly_event_types** — List Calendly event types for a specified user or organization. Returns: uri, name, active, booking_method, slug, scheduling_url, duration, duration_options, kind, pooling_type, type, color, created_at, updated_at, internal_note, is_paid, description_plain, description_html, profile, secret, deleted_at, admin_managed, locations, position, custom_questions, locale. Required: organization or user…
- **get_single_calendly_event_type_by_id** — Get a single Calendly event type by id. Returns the full event type object including uri, name, active, scheduling_url, duration, kind, color, profile, locations, custom_questions, created_at, and updated_at. Required: id.
- **create_a_calendly_event_type** — Create a new Calendly event type. Returns the created event type object including uri, name, active, duration, scheduling_url, kind, type, color, booking_method, slug, created_at, updated_at, and configuration details for locations, custom questions, and profile.
- **update_a_calendly_event_type_by_id** — Update a Calendly event type by id. Returns the updated event type including uri, name, active, duration, scheduling_url, color, kind, custom_questions, and locations. Required: id.
- **list_all_calendly_scheduled_events** — List Calendly scheduled events, optionally filtered by organization, user, group, invitee email, status, or start-time range. Returns: uri, name, meeting_notes_plain, meeting_notes_html, status, start_time, end_time, event_type, location, invitees_counter, created_at, updated_at, event_memberships, event_guests, cancellation, calendar_event. Max 100 per page.
- **get_single_calendly_scheduled_event_by_id** — Get a single Calendly scheduled event by id. Returns the full event object including uri, name, status, start_time, end_time, event_type, location, invitees_counter, created_at, updated_at, event_memberships, event_guests, and calendar_event. Required: id.
- **calendly_scheduled_events_cancellation** — Cancel a Calendly scheduled event by uuid, optionally providing a reason. Returns: reason, created_at. Required: uuid.
- **list_all_calendly_event_invitees** — List invitees for a Calendly scheduled event. Returns: uri, email, first_name, last_name, name, status, questions_and_answers, timezone, event, created_at, updated_at, tracking, text_reminder_number, rescheduled, old_invitee, new_invitee, cancel_url, reschedule_url, routing_form_submission, cancellation, payment, no_show, reconfirmation, scheduling_method, invitee_scheduled_by. Required: event_id.
- **list_all_calendly_contacts** — List Calendly contacts with optional filters. Returns: uri, email, company, job_title, city, timezone, created_at, updated_at.
- **get_single_calendly_contact_by_id** — Get a single Calendly contact by id. Returns: uri, email, company, job_title, city, timezone, created_at, updated_at. Required: id.
- **create_a_calendly_contact** — Create a new Calendly Contact. Returns the created contact object including uri, email, company, job_title, city, timezone, created_at, and updated_at. Required: email.
- **update_a_calendly_contact_by_id** — Update an existing Calendly Contact by id. Returns: uri, email, company, job_title, city, timezone, created_at, updated_at. Required: id.
- **delete_a_calendly_contact_by_id** — Delete a Calendly Contact by id. Returns an empty 204 response on success. Required: id.
- **delete_a_calendly_deletion_invitee_by_id** — Submit a request to delete Calendly invitee data for data compliance purposes such as GDPR. The deletion is processed asynchronously. Returns an empty 202 response on success. Required: emails.
- **list_all_calendly_event_type_availability_schedules** — List Calendly event type availability schedules. Returns: event_type, availability_setting, availability_rule. Required: event_type.
- **calendly_event_type_availability_schedules_bulk_update** — Update a Calendly event type availability schedule. Returns: event_type, availability_setting, availability_rule. Required: event_type, availability_rule with timezone. Updating rules overwrites all existing rules for the event type.
- **list_all_calendly_event_type_available_times** — List available time slots for a Calendly event type within a specified date range. Returns: status, invitees_remaining, start_time, scheduling_url. Required: event_type, start_time, end_time.
- **list_all_calendly_event_type_memberships** — List event type hosts for a specific Calendly event type. Returns each membership's uri, event_type, member, created_at, and updated_at. Required: event_type (the event type URI).
- **list_all_calendly_group_relationships** — List group relationships (group memberships) in Calendly, showing which users belong to which groups within an organization. Returns: uri, group, user, organization, created_at, updated_at. Required: organization.
- **list_all_calendly_groups** — List Calendly groups within a specified organization, used for organizing users into teams for scheduling. Returns: uri, organization, created_at, updated_at. Required: organization.
- **get_single_calendly_invitee_no_show_by_id** — Get a Calendly invitee no-show by id. Returns: uri, invitee, created_at. Required: id.
- **create_a_calendly_invitee_no_show** — Mark a Calendly invitee as a no-show. Pass the full invitee URI (not a bare UUID) in the request body as `invitee`. Returns the created no-show object including uri, invitee, and created_at. Required: invitee (full URI).
- **calendly_invitee_no_shows_bulk_delete** — Remove no-show status from a Calendly invitee. Returns an empty 204 response on success. Required: uuid.
- **create_a_calendly_invitee** — Create a Calendly invitee for a scheduled event, booking a meeting on behalf of the invitee via the Scheduling API without redirects or the Calendly-hosted UI. Returns: email, name, questions_and_answers, timezone, created_at, updated_at. Required: event_type, start_time, invitee (with name and email). Requires a paid Calendly plan.
- **list_all_calendly_locations** — List configured meeting locations in Calendly. Returns a collection of location configuration objects including kind, phone_number, additional_info, and location.
- **list_all_calendly_meeting_recaps** — List Calendly meeting recaps with optional filters for event, user, organization, attendee, and meeting start time range. Returns: uri, summary, action_items, discussion, meeting_notes, event, user, organization, start_time, attendees, created_at, updated_at.
- **get_single_calendly_meeting_recap_by_id** — Get a single Calendly meeting recap by id, including highlights (summary, action items, discussion) and meeting metadata. Returns: uri, summary, action_items, discussion, meeting_notes, event, user, organization, start_time, attendees, created_at, updated_at. Required: id.
- **update_a_calendly_meeting_recap_by_id** — Update a Calendly meeting recap's highlights by id — summary, action items, and discussion notes. Returns: uri, summary, action_items, discussion, meeting_notes, event, user, organization, start_time, attendees, created_at, updated_at. Required: id.
- **delete_a_calendly_meeting_recap_by_id** — Delete a Calendly meeting recap by id. Returns an empty 204 response on success. Required: id.
- **calendly_meeting_recaps_get_transcript** — Get the full transcript for a Calendly meeting recap. Returns: uri, recap, created_at. Required: recap_uuid.
- **create_a_calendly_one_off_event_type** — Create a single-use one-off event type in Calendly for a one-time scheduling session. Returns the created event type including its uri, name, scheduling_url, duration, active, kind, type, and locations. Required: name, host, duration, date_setting. One-off event types are not listed on the user's scheduling page.
- **list_all_calendly_organization_invitations** — List organization invitations in Calendly. Returns: uri, email, status, created_at, updated_at. Required: uuid. The status filter accepts pending, accepted, or declined.
- **create_a_calendly_organization_invitation** — Invite a user to a Calendly organization by email address. The invitee receives an email with instructions to accept. Returns: uri, email, status, created_at, updated_at. Required: uuid, email.
- **calendly_organization_invitations_bulk_delete** — Revoke a pending Calendly organization invitation. The invitee will no longer be able to accept the invitation. Returns an empty 204 response on success. Required: org_uuid, invitation_uuid.
- **list_all_calendly_organization_invitations_organizations** — Get detailed information about a specific Calendly organization invitation. Returns: uri, email, status, created_at, updated_at. Required: org_uuid, invitation_uuid.
- **list_all_calendly_outgoing_communications** — List outgoing SMS and email communications in Calendly. Returns outgoing communication records with type-specific fields. No required parameters.
- **list_all_calendly_routing_form_submissions** — List Calendly routing form submissions for a specific routing form, including the answers provided by each submitter. Returns: uri, routing_form, questions_and_answers, tracking, created_at, updated_at. Required: routing_form.
- **get_single_calendly_routing_form_submission_by_id** — Get a single Calendly routing form submission by id. Returns the full submission object including uri, routing_form, questions_and_answers, tracking, created_at, and updated_at. Required: id.
- **list_all_calendly_routing_forms** — List Calendly routing forms for an organization. Routing forms are questionnaires that direct invitees to the appropriate scheduling page based on their responses. Returns: uri, created_at, updated_at, questions, routing_rules. Required: organization.
- **get_single_calendly_routing_form_by_id** — Get a specific Calendly routing form by id. Returns detailed information about the form including its uri, created_at, updated_at, questions, and routing_rules. Required: id.
- **list_all_calendly_scheduled_event_invitees** — Get a specific Calendly event invitee by event and invitee UUID. Returns: uri, email, first_name, last_name, name, status, questions_and_answers, timezone, event, created_at, updated_at, tracking, text_reminder_number, rescheduled, old_invitee, new_invitee, cancel_url, reschedule_url, routing_form_submission, cancellation, payment, no_show, reconfirmation, scheduling_method, invitee_scheduled_by.…
- **create_a_calendly_scheduling_link** — Create a single-use scheduling link for a Calendly event type. Returns: booking_url, owner, owner_type. Required: max_event_count, owner, owner_type.
- **create_a_calendly_share** — Create a shareable scheduling link in Calendly from an existing event type. Returns: booking_url, owner, owner_type. Required: event_type.
- **list_all_calendly_user_availability_schedules** — List Calendly user availability schedules for a specific user. Availability schedules define recurring time windows when a user is available for meetings. Returns: uri, name, user, timezone, rules. Required: user.
- **get_single_calendly_user_availability_schedule_by_id** — Get a single Calendly user availability schedule by its id, including the timezone and rules that define available time windows. Returns: uri, name, user, timezone, rules. Required: id.
- **list_all_calendly_users_me** — Get information about the currently authenticated Calendly user. Returns: uri, name, slug, email, scheduling_url, timezone, time_notation, avatar_url, created_at, updated_at, current_organization, resource_type, locale.
- **list_all_calendly_webhook_subscriptions** — List Calendly webhook subscriptions for a user or organization. Returns: uri, callback_url, created_at, updated_at, retry_started_at, state, events, scope, organization, user, creator, signing_key. Required: organization, scope.
- **create_a_calendly_webhook_subscription** — Create a new Calendly webhook subscription to receive real-time scheduling event notifications. Returns: uri, callback_url, created_at, updated_at, retry_started_at, state, events, scope, organization, user, creator, signing_key. Required: url, events, organization, scope.
- **get_single_calendly_webhook_subscription_by_id** — Get a single Calendly webhook subscription by id. Returns: uri, callback_url, created_at, updated_at, retry_started_at, state, events, scope, organization, user, creator, signing_key. Required: id.
- **delete_a_calendly_webhook_subscription_by_id** — Delete a Calendly webhook subscription by id. Returns an empty 204 response on success. Required: id.
- **calendly_webhook_subscriptions_get_sample_data** — Get sample Calendly webhook payload data for testing a subscription. Returns: event, created_at, created_by, payload. Required: event, organization, scope.

## How it works

1. **Link your customer's Calendly account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Calendly.** The Proxy API is a 1-to-1 mapping of the Calendly API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Auto-log booked meetings against CRM contacts** — CRM and sales platforms integrate Calendly so that when a prospect books a demo or discovery call, the event details—time, duration, invitee responses—are automatically logged on the contact record without manual data entry.
- **Embed scheduling links inside outreach sequences** — Sales engagement and email sequencing tools fetch a rep's Calendly event types so they can insert the right booking link into automated cadences, and pause the sequence automatically once a meeting is booked.
- **Trigger candidate pipeline updates on interview booking** — Applicant tracking systems use Calendly event data to move candidates through hiring stages—updating status to 'Interview Scheduled' the moment a candidate picks a time slot, keeping the pipeline accurate in real time.
- **Surface scheduling inside customer onboarding checklists** — Client onboarding and customer success platforms pull the assigned manager's Calendly availability and event types directly into the portal, letting new customers book their kickoff call without leaving the product.
- **Map Calendly users to internal tenant accounts** — Multi-tenant SaaS products need to associate each end-user's Calendly identity with the correct internal account for accurate attribution, routing, and access control across their platform.

## What you can build

- **In-app meeting link picker** — Fetch a user's Calendly event types and render them in a dropdown so they can insert the exact booking link—15-min intro, 30-min demo—directly into an email composer or chat message.
- **Real-time event sync to contact timeline** — Listen for new Calendly bookings and cancellations via webhooks and automatically append event details, invitee custom question responses, and meeting links to a contact or candidate's activity timeline.
- **Availability-aware scheduling UI** — Query a user's Calendly availability windows and display open time slots natively inside your product, so invitees never have to leave your app to find a meeting time.
- **Automated sequence pause on booking** — When a Calendly event is created, automatically pause or exit the prospect from an active outreach sequence to prevent awkward follow-up emails after they've already scheduled a call.
- **User-to-account mapping dashboard** — Pull Calendly user profiles—email, scheduling URL, and avatar—via the Unified User Directory API to let admins map each team member's Calendly account to the correct internal seat or workspace.
- **Onboarding intake auto-fill from invitee responses** — Capture custom question answers from Calendly event payloads and pre-populate onboarding forms, CRM fields, or intake documents so customers never have to re-enter information they already provided when booking.

## FAQs

### What authentication method does the Calendly integration use?

Calendly supports OAuth 2.0 for user-level authorization. Truto handles the full OAuth flow—token exchange, storage, and refresh—so your team never manages credentials directly.

### Which Truto Unified APIs cover Calendly?

Calendly is mapped to the Unified Calendar API (Availability, Event Types, Events) and the Unified User Directory API (Users, Licenses). These let you read scheduling data and user profiles through a consistent schema across multiple scheduling tools.

### How do I get real-time updates when meetings are booked or canceled?

Calendly supports webhooks for events like invitee.created and invitee.canceled. Subscribing to these through the integration gives you near-instant notifications, which is far more efficient than polling the scheduled events endpoint.

### Can I access custom question responses submitted by invitees?

Yes. When an invitee books a meeting and fills out custom questions (e.g., company size, use case), those responses are included in the event payload. You can use this data to enrich contact profiles or auto-fill forms in your product.

### Does the integration handle Calendly's API rate limits and pagination?

Truto manages rate-limit handling and pagination automatically. Your application makes straightforward requests through the Unified API, and Truto takes care of retries, backoff, and cursor-based pagination behind the scenes.

### What if I need a Calendly capability that isn't covered by the current Unified APIs?

Truto builds additional tools and resource mappings on request. If you need access to specific Calendly endpoints—like single-use scheduling links or Round Robin configuration—reach out and the Truto team can add support.

## Related reading

- [Connect Calendly to Claude: Automate bookings and availability](https://truto.one/blog/connect-calendly-to-claude-automate-bookings-and-availability/) — Learn how to generate a secure, managed MCP server for Calendly using Truto, connect it natively to Claude, and execute complex scheduling workflows autonomously.
- [Connect Calendly to ChatGPT: Manage event types and meeting recaps](https://truto.one/blog/connect-calendly-to-chatgpt-manage-event-types-and-meeting-recaps/) — Learn how to build a secure MCP server to connect Calendly to ChatGPT. Execute AI workflows for meeting recaps, event types, and intelligent availability.
- [Connect Calendly to AI Agents: Sync events and invitee workflows](https://truto.one/blog/connect-calendly-to-ai-agents-sync-events-and-invitee-workflows/) — A technical guide to connecting Calendly to AI agents using Truto's /tools endpoint. Bypass complex API quirks to automate scheduling and invitee workflows.
