---
title: "AI Voice Agent + Calendly Scheduling API: Book Meetings During the Call"
description: "Calendly's Scheduling API and Cal.com's open-source booking endpoints now let voice agents book meetings end-to-end without iframes. We walk through availability, booking, and webhook reconciliation."
canonical: https://callsphere.ai/blog/vw2g-calendly-cal-com-ai-voice-booking
category: "AI Voice Agents"
tags: ["Calendly", "Cal.com", "Booking", "Voice Agents", "MCP"]
author: "CallSphere Team"
published: 2026-04-01T00:00:00.000Z
updated: 2026-05-07T09:32:11.264Z
---

# AI Voice Agent + Calendly Scheduling API: Book Meetings During the Call

> Calendly's Scheduling API and Cal.com's open-source booking endpoints now let voice agents book meetings end-to-end without iframes. We walk through availability, booking, and webhook reconciliation.

> Calendly shipped its Scheduling API and an MCP server in early 2026. Voice agents can finally book meetings without redirects, iframes, or "I will text you the link." Cal.com offers the same surface as open-source. The friction of "we'll find time later" is gone.

## What the integration unlocks

```mermaid
flowchart LR
  Repo[GitHub repo] --> CI[GitHub Actions]
  CI --> Eval[Agent eval suite · PromptFoo]
  Eval -->|pass| Deploy[Deploy]
  Eval -->|fail| Block[Block PR]
  Deploy --> Prod[Production agent]
  Prod --> Trace[(LangSmith trace)]
  Trace --> Eval
```

CallSphere reference architecture

A discovery call ends. The CallSphere voice agent says "Tuesday 2pm or Thursday 10am with Priya?" The caller picks Thursday. Two seconds later the calendar invite is in their inbox, the Salesforce Opportunity has the meeting attached, the Slack `#new-meetings` channel has been notified, and the rep has a CRM-linked event on their day. Average booking-to-confirmation: 4-6 seconds. No follow-up email. No second touch.

## How the API exposes it

Calendly's surface (paid plans only): `GET /event_types` to list bookable types, `GET /event_type_available_times` for slot lookup with `start_time` and `end_time` filters, and the new **`POST /scheduled_events`** (a.k.a. Create Event Invitee) to actually book. The Calendly MCP server exposes the same as MCP tools `list_event_types`, `get_available_times`, `create_event`. OAuth scope: `default`.

Cal.com's surface: `GET /v2/event-types`, `GET /v2/slots/available`, `POST /v2/bookings`. Self-hosted Cal.com lets you skip the OAuth dance entirely with API keys per organization.

Both support webhooks for `invitee.created`, `invitee.canceled`, `invitee.no_show` so your voice agent learns about reschedules without polling.

## How CallSphere implements it

CallSphere's Healthcare vertical ships 14 tools including `get_available_slots`, `schedule_appointment`, and `reschedule_appointment`. The same primitives front Calendly, Cal.com, Athena, DrChrono, and ServiceTitan dispatch via a thin adapter — voice agents are unaware of which backend powers the schedule. Salon GlamBook integrates booking and payment in one turn. Real Estate OneRoof's Showing Coordinator agent books in-home visits via Cal.com when an agent's MLS calendar is hosted there. Sales product books discovery calls with Calendly directly from the [browser dialer](/demo).

Pricing: $149 / $499 / $1499. [14-day trial](/trial). [22% affiliate](/affiliate).

## Build steps

1. For Calendly: register an OAuth application in Calendly Developer Portal. Implement the Authorization Code + PKCE flow.
2. List the rep's Event Types once at config time and store the URIs.
3. At call time, call `event_type_available_times` with a 7-day window. Cache for 60 seconds; users hate "that slot is gone" mid-conversation.
4. Read 2-3 slot times back to the caller. Confirm one. Call `POST /scheduled_events` with the caller's name, email, phone, and selected `start_time`.
5. Subscribe to the `invitee.created` webhook to confirm; if the booking fails (race), the voice agent re-prompts.
6. Mirror the booking into your CRM as an Event with the Calendly URL attached.
7. For Cal.com: same shape, simpler auth. Recommended for self-hosted multi-tenant CallSphere customers.

## Code snippet

```typescript
// Book a Calendly slot from the voice agent
const booking = await fetch("https://api.calendly.com/scheduled_events", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${calendlyOAuthToken}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    event_type: eventTypeUri,
    start_time: chosenSlot.iso,
    invitee: {
      name: caller.fullName,
      email: caller.email,
      phone_number: caller.e164,
      timezone: caller.timezone,
    },
    location: { kind: "phone_call", location: caller.e164 },
  }),
});
```

## FAQ

**Does the Calendly API require a paid plan?** Yes, Scheduling API is gated to paid Calendly plans. Cal.com is free self-hosted or paid cloud.

**How fresh is the slot data?** Calendly recommends a 60-second TTL on cached availability. CallSphere uses 30s for high-traffic clinics.

**What if the caller's slot collides with a same-second booking?** Calendly returns a 409. The voice agent re-fetches and offers the next two slots in under one second.

**Can we book group events?** Yes — Calendly supports group event types. CallSphere's Healthcare vertical uses them for class-style appointments.

**How do I demo it?** Start a [trial](/trial), connect Calendly or Cal.com in Settings, and run an outbound call to your own phone. See [pricing](/pricing).

## Sources

- [Calendly Schedule Events with AI Agents](https://developer.calendly.com/schedule-events-with-ai-agents)
- [Calendly Create Event Invitee](https://developer.calendly.com/api-docs/p3ghrxrwbl8kqe-create-event-invitee)
- [Calendly Scheduling API Announcement](https://community.calendly.com/api-webhook-help-61/scheduling-api-now-available-4825)
- [Cal.com Developer Docs](https://cal.com/docs/api-reference/v2/introduction)

---

Source: https://callsphere.ai/blog/vw2g-calendly-cal-com-ai-voice-booking
