Cal.com
Let an agent book meetings without access to your whole calendar account. It reads event types, free slots and bookings, books, reschedules, cancels, confirms and declines, and each of those can wait for a person.
- host
- api.cal.com
- connect
- API key, per user
Create booking
calcom-create-booking
Reschedule booking
calcom-reschedule-booking
Cancel booking
calcom-cancel-booking
Confirm booking
calcom-confirm-booking
Reads and writes in Cal.com. Writes are off until you switch them on.
Each one is a named operation from the pack. Reads change nothing.
Writes
Create booking
read backcalcom-create-booking
Book one meeting of an event type for one attendee, at a start time from find-available-slots. Cal.com emails the attendee and the host and adds it to the host's calendar. An event type that needs confirmation creates the booking as pending.
Reschedule booking
read backcalcom-reschedule-booking
Move one accepted or pending booking to a new start time. Cal.com cancels the old booking, creates a new one with a new uid, and emails the attendees. A pending booking stays pending.
Cancel booking
read backcalcom-cancel-booking
Cancel one booking. Cal.com emails the attendees and the host and removes it from the calendar.
Confirm booking
read backcalcom-confirm-booking
Confirm one pending booking of an event type that needs the host's confirmation. Cal.com emails the attendee that it is confirmed.
Decline booking
read backcalcom-decline-booking
Decline one pending booking of an event type that needs the host's confirmation. Cal.com emails the attendee, with the reason when given.
Mark attendee absent
read backcalcom-mark-attendee-absent
Mark one attendee of a past booking as a no-show. This can start the event type's no-show workflows.
Mark host absent
read backcalcom-mark-host-absent
Mark the host of a past booking as a no-show.
Add guest
read backcalcom-add-guest
Add one guest to an existing booking. Cal.com emails the guest an invitation and updates the calendar event.
Reads
Get me
calcom-get-me
Get the Cal.com user the key belongs to: id, username, email, name, time zone and defaultScheduleId. Bookings and event types are read as this user.
List event types
calcom-list-event-types
List event types, the kinds of meeting that can be booked: id, title, slug, length in minutes, locations, booking fields and booking URL. Without a username it lists the key owner's own event types, hidden ones included. With a username it lists that user's public event types. Cal.com returns them all at once, with no page cursor; an account with very many event types can be cut at 64 KB, so then read one with get-event-type.
Get event type
calcom-get-event-type
Get one event type: title, slug, length and the lengths a booker may choose, locations, booking fields (including any required custom fields), confirmation policy, recurrence, seats and booking URL.
Find available slots
calcom-find-available-slots
Find the free times for one event type between two dates, grouped by date, each with a start and an end. Ask for a week or less at a time so the answer stays small. Times come back in time_zone (UTC when left out). Pass booking_uid_to_reschedule when looking for a new time for an existing booking, so its own time counts as free.
List schedules
calcom-list-schedules
List the key owner's availability schedules: id, name, time zone, weekly hours, date overrides and which one is the default.
Get schedule
calcom-get-schedule
Get one availability schedule: name, time zone, weekly hours (days with a start and end time), date overrides and whether it is the default. The default schedule's id is defaultScheduleId from get-me.
List bookings
calcom-list-bookings
List the key owner's bookings, 20 per page: uid, title, status, start and end, event type, location, hosts and attendees. Filter by status (one at a time), attendee email or name, event type, or a time range. Cal.com returns pagination.nextCursor while pagination.hasMore is true; pass it as cursor for the next page.
Get booking
calcom-get-booking
Get one booking by uid: title, description, status (accepted, pending, cancelled, rejected), start, end, duration, event type, location or meeting link, hosts, attendees with their absent flag, guests, cancellation or rescheduling reason, and the uid it was rescheduled from or to. A recurring booking's own uid returns every occurrence as a list.
List booking attendees
calcom-list-booking-attendees
List the attendees of one booking, guests included: id, name, email, time zone, language, phone number and whether they were marked absent.
How do users connect? Each one brings their own Cal.com.
- 1.Call for the userYour server invokes the action for the signed-in user. Without a Cal.com connection, the SDK throws EndUserNotConnectedError with a connect link.
- 2.The user pastes a keyThe link opens a form that shows where in Cal.com's settings to create the key. The link lasts 10 minutes and works once.
- 3.Anlyon checks itThe key is checked with Cal.com before it is kept, and bound to api.cal.com. It is never shown back.
- 4.Your server confirmsYour server confirms the connection for the user who is signed in, and the call goes through.
Guardrails. Suggested limits and approvals, for you to review.
Suggested limits
- 20 bookings created a day
- 20 bookings rescheduled a day
- 20 bookings cancelled a day
- 50 bookings confirmed a day
- 20 bookings declined a day
- 50 attendees marked absent a day
- 20 hosts marked absent a day
- 20 guests added a day
Suggested approvals
- A person approves creating a booking
- A person approves rescheduling a booking
- A person approves cancelling a booking
- A person approves confirming a booking
- A person approves declining a booking
- A person approves marking an attendee absent
- A person approves marking the host absent
- A person approves adding a guest
What the key must allow
- An API key you create
- It acts as the user who made it, with no narrower permissions
Good to know
- An event type with required custom booking fields cannot be booked with this pack.
- Cal.com has no idempotency key for a booking. Anlyon sends it once and never repeats it.
For your own account
- 1.In Cal.com, open Settings, Developer, API keys, and create a key.
- 2.In Anlyon, open Actions, then Integrations, choose Cal.com and paste the key.
- 3.Anlyon checks the key with Cal.com before storing it. It becomes a secret named CALCOM, bound to api.cal.com.
Cal.com in your code. For one of your users, or for your own account.
Act for one of your users from your server, or connect your company's own Cal.com with the CLI.
import { Client, EndUserNotConnectedError } from "@anlyonhq/sdk";const anlyon = new Client({ apiKey: process.env.ANLYON_API_KEY! });try { const { data } = await anlyon .forUser(session.userId) .actions.invoke("calcom-create-booking", { event_type_id: "1234567", start: "2026-11-03T15:00:00Z", attendee_name: "Sam Rivera", attendee_email: "sam@example.com", attendee_time_zone: "America/New_York" }); return { status: "done", grade: data.grade };} catch (error) { if (error instanceof EndUserNotConnectedError) { // The user connects their own Cal.com, then you call again. return { status: "connect_required", url: error.connectUrl }; } throw error;}Other integrations. Under the same limits, approvals and receipts.
Available
Stripe
Payments · API key
Refunds under a money ceiling, and every customer, payment and invoice to read.
Available
GitHub
Code · API key
Issues, pull requests and code, in the repositories you choose.
Available
HubSpot
CRM · Sign in
Contacts, companies and deals: search them and change them.
- Anlyon app
- Available
- Your own app
- Recommended for production
