Scheduling
Calendly
API integration
Ship Scheduling features without building the integration. Full Calendly API access via Proxy, normalized data through Unified APIs, and 50+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Calendly
Common scenarios for SaaS companies building Calendly integrations for their customers.
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
Ship these features with Truto + Calendly
Concrete product features your team can ship faster by leveraging Truto’s Calendly integration instead of building from scratch.
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.
SuperAI
Calendly AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
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.
Why Truto
Why use Truto’s MCP server for Calendly
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Calendly
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified User Directory API
How It Works
From zero to integrated
Go live with Calendly in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Calendly account
Use Truto’s frontend SDK to connect your customer’s Calendly account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Calendly
Truto’s Proxy API is a 1-to-1 mapping of the Calendly API. You call us, we call Calendly, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Calendly’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Calendly on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
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.
From the Blog
Calendly integration guides
Deep dives, architecture guides, and practical tutorials for building Calendly integrations.
Calendly
Get Calendly integrated into your app
Our team understands what it takes to make a Calendly integration successful. A short, crisp 30 minute call with folks who understand the problem.