Scheduling & Booking

Cal, worked by an AI employee

Not another app for your team to learn, and not a set of rules for you to build. You hire an AI employee, you give it access to your Cal account, and you ask it for things in Slack or Teams the way you would ask anyone else on the team. There is nothing to map and nothing to maintain.

  • Scheduling & Booking
  • Signs in to your account
  • 100 ready-made tools
  • Asked in Slack or Teams
At work

An illustration of how the conversation reads, not a transcript from a client account.

What Cal is

Cal simplifies meeting coordination by providing shareable booking pages, calendar syncing, and availability management to streamline the scheduling process

You sign in with your own Cal account, the same way you already do. We never see or hold your password.

How a run works

One message in, the work done in Cal.

  1. 01

    You ask

    You message your AI employee in the chat your team already has open, in one sentence, in your own words.

  2. 02

    It works out the step

    It decides what the job needs in Cal. You do not pick anything from a menu or wire anything together.

  3. 03

    It does the work

    Signed in to your own Cal account, inside the access you granted it, doing the thing you asked for.

  4. 04

    It reports back

    It tells you what it did, in the same thread. If it could not do something, it says so rather than guessing.

100 tools it already has

What it can do in Cal

These are the ready-made tools your AI employee already has in Cal. It is not limited to them, but it never has to be taught these.

  • Add member to teamAdds a new member to a specified team within an organization by creating a team membership.
  • Add organization attribute optionAdds a new option to an organization's attribute, requiring a display value and a slug unique for that attribute.
  • Add selected calendarLinks a new external calendar or updates an existing link to one, enabling synchronization with the cal application by specifying the integration provider, the calendar's externali
  • Assign or create attribute option for userAssigns an existing attribute option (using attributeoptionid) or creates a new one (using value) for a user, linking it to a specified attributeid which must already exist within
  • Cancel booking via uidCancels an existing and active cal.com booking using its unique identifier (uid).
  • Check calendar availabilityRetrieves free/busy availability for a specified calendar to aid scheduling without revealing event details; requires an existing, accessible calendar, noting that data granularity
  • Check gcal synchronization statusCall this read-only action to verify the connection and synchronization status of a user's google calendar integration with cal.
  • Check ics feed calendar endpointChecks an ics feed url (expected as a query parameter) to verify its validity, accessibility, and icalendar data integrity.
  • Check Stripe statusVerifies if stripe is correctly connected to the cal scheduling system and functional for processing payments, reporting only on the integration's status.
  • Check team stripe integration statusRetrieves the stripe integration status and related information for a team, primarily to verify account connection, subscription details, or payment setup; this is a read-only oper
  • Confirm booking by uidConfirms an existing booking by bookinguid if the booking exists and is in a state allowing confirmation (e.g., not already cancelled or confirmed); this finalizes the booking, doe
  • Connect conferencing appConnects or reconnects cal.com with a specified conferencing application to enable future virtual meeting scheduling, but does not itself create or schedule meetings.
  • Connect to calendarInitiates or checks the external connection status for a specified calendar, possibly returning a redirect url for user authorization to complete integration, without altering cale
  • Create membership for organizationCreates a new membership or updates an existing one for a user within an organization; the user specified by userid must already exist in the system.
  • Create oauth client userCreates a new managed user for an oauth client, setting profile and scheduling preferences; if timezone is not provided, a default schedule (mon-fri, 9am-5pm) is not created, requi
  • Create OAuth client webhook configurationCreates a webhook for an existing oauth client to send real-time cal.com event notifications (e.g., booking created, meeting ended) to the subscriberurl, enabling integration with
  • Create or update team profileCreates a new team profile, or updates one if a 'slug' matches, customizing branding, scheduling, privacy, and operational details.
  • Create organization attributesCreates a new custom attribute for an existing organization, used to enhance data collection for event bookings or user profiles.
  • Create organization webhook by org IDCreates a webhook for a specified, existing organization, sending notifications for selected trigger events to a designated, publicly accessible subscriber url that accepts post re
  • Create phone call eventSchedules a phone call event in cal.com using existing eventtype, organization, and team ids; this action only registers the event details and does not initiate the actual phone ca
  • Create phone call for event typeCreates a phone call template associated with an existing event type and team, for defining reusable call configurations like numbers and scripts; note this does not initiate an ac
  • Create team event typeCreates a new event type for a specified team in cal.com; ensure teamid, any provided scheduleid, hosts.userid, and destinationcalendar details are valid and accessible.
  • Create team event types with custom optionsCreates a highly customizable cal.com team event type with extensive scheduling, booking, and host assignment options; lengthinminutes (as string) must be included in lengthinminut
  • Create team in organizationCreates a new team with customizable attributes within an existing and accessible cal.com organization specified by orgid.
  • Create team membership with roleAdds a user to a team with a specified role, acceptance status, and impersonation settings; ensure teamid and userid refer to existing, valid entities.
  • Create user availability scheduleCreates a cal.com user availability schedule, defining its name, timezone, weekly recurring availability, and specific date overrides; if isdefault is true, this schedule replaces
  • Create user schedule in organizationCreates a new schedule defining a user's availability with weekly slots and date-specific overrides in an organization; setting 'isdefault' to true may replace an existing default
  • Create webhook for event typeCreates a webhook for an existing eventtypeid in cal.com, sending notifications for specified triggers to a subscriberurl that handles post requests.
  • Decline booking with reasonDeclines a pending booking using its bookinguid, optionally with a reason; this action is irreversible and applies only to bookings awaiting confirmation.
  • Delete conference app connectionDisconnects the specified conferencing application (e.g., 'zoom', 'google meet') for the cal.com account, immediately terminating any ongoing call or meeting; use with caution.
  • Delete event type by idPermanently deletes an existing event type by its id, which invalidates its scheduling links; the operation is irreversible, and while existing bookings are unaffected, no new book
  • Delete event type in teamPermanently removes an event type's configuration from a team's scheduling options (e.g., for cleanup); this action is irreversible and requires the event type to be associated wit
  • Delete membership in teamUse to permanently remove a user's membership from a specific team within an organization, which revokes their team-associated access but does not remove them from the organization
  • Delete oauth client userIrreversibly revokes a specific user's association with a given oauth client, without deleting the user's cal account.
  • Delete oauth client webhookPermanently deletes a specific webhook subscription of an oauth client in the cal application, stopping its notifications.
  • Delete org webhookPermanently deletes an organization's webhook, which stops all its notifications; this action is irreversible and the webhook cannot be recovered.
  • Delete organization attributePermanently deletes an existing attribute (specified by attributeid) from an existing organization (specified by orgid); this action is irreversible and may affect features depende
  • Delete organization attribute optionPermanently deletes a specified option from an organization's attribute, typically to remove an unnecessary configuration choice.
  • Delete organization membershipIrreversibly deletes a user's membership from an organization, removing all associated access and permissions; the response confirms deletion without returning details of the delet
  • Delete schedule by idPermanently deletes a specific schedule using its unique identifier, which must correspond to an existing schedule.
  • Delete selected calendarsRemoves a specified, currently selected calendar from the user's active list within the application, without deleting it from the external provider.
  • Delete selected slotDeletes a previously selected time slot from the cal schedule using its uid; the slot must exist and this action is irreversible.
  • Delete team by idPermanently and irreversibly deletes an existing team and all its associated data from the cal system, using the team's unique teamid.
  • Delete team from organizationPermanently and irreversibly deletes a specific team (and all its associated data, members, and linked projects/events) from an organization, when the team is no longer needed or d
  • Delete team memberships by idIrreversibly removes a user's team membership in the cal application, revoking access to that specific team; the user's overall cal account remains active.
  • Delete user attribute optionRemoves a custom attribute option (e.g., skill, role) currently assigned to a user within an organization; this operation is irreversible.
  • Delete user from organizationPermanently removes a user from a specific organization (user's system-wide account is unaffected), revoking their access rights therein; this action is irreversible via api and ex
  • Delete user schedulePermanently deletes a specific user's schedule, provided the organization, user, and schedule (identified by orgid, userid, and scheduleid) exist.
  • Delete webhook by idPermanently deletes an existing webhook by its webhookid, stopping future notifications; this action is irreversible.
  • Delete webhook for event typePermanently deletes a specific webhook for an event type, halting its real-time notifications; this operation is irreversible and leaves the event type and other webhooks untouched
  • Delete webhooks for event typeCall this to irreversibly delete all webhooks for a specific eventtypeid if the event type exists; details of deleted webhooks are not returned.
  • Disconnect calendar using credential idDisconnects a calendar integration by its provider name and credential id, irreversibly revoking cal's access; external calendar data remains unaffected.
  • Fetch all bookingsFetches a list of bookings, optionally filtered by status, attendee, date range, or by event/team ids (which must belong to/include the authenticated user respectively), with suppo
  • Fetch event type detailsFetches all configuration settings and characteristics for a single event type (identified by orgid, teamid, and eventtypeid), which must exist and be accessible; this read-only ac
  • Fetch organization attribute by idRetrieves a specific attribute of an organization, useful for fetching a single data point instead of the entire organization record.
  • Fetch provider access tokenFetches an oauth access token for the specified clientid to authenticate api calls; this action only retrieves the token, not managing scheduling or calendar events.
  • Fetch schedule by idFetches comprehensive details for a specific, existing schedule using its scheduleid.
  • Fetch user schedule by org idFetches a specific user's schedule, potentially including events and availability, using orgid, userid, and scheduleid.
  • Fetch webhook by event type idRetrieves details for a single, specific webhook using its webhookid and associated eventtypeid.
  • Force refresh user oauth clientForces an immediate refresh of oauth tokens for a specified user and client, bypassing the normal expiration cycle, typically when existing tokens are suspected to be invalid or fr
  • Get all timezonesRetrieves all supported time zone identifiers (e.g., 'america/new york', 'europe/london') and their associated metadata, excluding specific dst changes or precise utc offset detail
  • Get available slots infoRetrieves available time slots for scheduling by considering existing bookings and availability, based on criteria like a specified time range and event type.
  • Get conference OAuth authorization urlGenerates an oauth 2.0 authorization url for a supported conferencing app to initiate or refresh its integration with cal.com.
  • Get default schedule detailsRetrieves the cal system's global default schedule configuration, not custom or user-specific ones.
  • Get event type by team idRetrieves a specific event type by its id, requiring that the event type is associated with the given team id.
  • Get google calendar oauth authentication urlGenerates the initial google calendar oauth 2.0 authorization url for user redirection to begin the authentication and authorization process.
  • Get oauth clients userRetrieves users associated with a specific oauth client (identified by a valid clientid) for auditing access or managing permissions.
  • Get organization IDRetrieves all organization ids associated with the currently authenticated user.
  • Get organization schedulesRetrieves a list of schedules (e.g., events, appointments) for an organization, providing basic schedule information, not detailed individual event data.
  • Get organization teams event typesRetrieves event types, including names, durations, and custom settings for team scheduling, for all teams within an existing organization specified by orgid.
  • Get organization user schedulesFetches all schedule information for a specific user within an organization; handle potential pagination for extensive schedules.
  • Get schedule for user in teamFetches all scheduled events or appointments for a specified user within their team and organization.
  • Get stripe connect infoRetrieves stripe connect account details (id, charges/payouts status, verification, settings) for the user's linked cal.com account; response may be empty or indicate no integratio
  • Get team details by organization ID and team IDRetrieves comprehensive details (e.g., members, roles, metadata) for a specific team using its teamid within an organization specified by orgid.
  • Get team information by team IDFetches comprehensive details for an existing team using its unique id; returned fields may vary by team configuration and user permissions.
  • Get teams listRetrieves all teams the user belongs to, including their names and members.
  • Get webhook by idRetrieves details for an existing and accessible webhook by its id; this is a read-only operation.
  • Handle conferencing oauth callback for appProcesses an oauth 2.0 callback for a conferencing app, exchanging the code and state for access credentials; ensure an oauth flow was previously initiated.
  • List event typesRetrieves cal event types, filterable by username (required if eventslug is provided), multiple usernames, or organization details (orgslug or orgid).
  • List organization membershipsRetrieves all memberships for a given organization, including user details, roles, status, and membership dates.
  • List team event types by org and team idRetrieves all event types for a specific team within an organization, optionally filtering by a specific event slug.
  • Mark booking absent for UIDMarks the host and/or specified attendees as absent for an existing booking, typically used after a scheduled event to record no-shows.
  • Modify org attribute by idPartially updates an organization attribute using orgid and attributeid, allowing modification of its name, slug, type, or enabled status; changing the 'type' may affect existing d
  • Modify organization membership by idUpdates an organization membership's status (accepted), role, or impersonation settings, identified by orgid and membershipid in the path; requires at least one of these fields in
  • Patch organization attribute optionPartially updates a specific option for an organization's attribute, modifying its 'value' and/or 'slug'; at least one of 'value' or 'slug' must be provided.
  • Patch organization user detailsPartially updates details for a user that exists within the specified organization.
  • Patch team details by IDUpdates specified details for an existing team identified by teamid; unspecified fields remain unchanged.
  • Patch webhook event typeUpdates configuration (e.g., payload template, active status, url, triggers, secret) for an existing webhook tied to a specific event type.
  • Post a new booking requestCreates a new booking for an active event type, scheduling it for a specified start time (preferably in the future) with primary attendee details and optional customizations.
  • Post calendar credentialsUse to submit/update authentication credentials (passed in the request body) for an existing calendar, enabling cal to connect with external calendar services for synchronization.
  • Post user to organizationAdds a new user to an existing organization (identified by orgid in path), requiring user's email and allowing extensive optional profile customization.
  • Post webhook eventCreates a new cal.com webhook subscription to send real-time notifications for specified calendar events to a publicly accessible subscriber url.
  • Reassign booking to another userReassigns an existing, active booking to a specified, authorized user; does not notify participants of this change.
  • Reassign booking with uidReassigns the specified booking to a new team member, who is determined by the system rather than being specified in the request.
  • Refresh oauth token for client idRefreshes an oauth access token for a specified clientid and managed user using their refreshtoken, enabling continued api access when the current token is near or past expiry.
  • Reschedule booking by uidReschedules an existing booking (identified by bookinguid) to a new time, provided the new slot's availability is confirmed beforehand; all other rescheduling parameters (e.g., new
  • Reserve slot for eventTemporarily reserves an available time slot for an existing and bookable event type, useful for high-demand slots to prevent double-bookings while the user completes the booking.
  • Retrieve attribute options for orgRetrieves all available options for a specific attribute within a designated organization, requiring valid and associated orgid and attributeid.
  • Retrieve booking details by uidFetches comprehensive details for an existing booking, identified by its bookinguid.
  • Retrieve calendar busy timesTo find busy calendar slots for scheduling/conflict detection, call this with a valid credentialid, an externalid accessible by it, and a recognized iana loggedinuserstz; returns o
Access, and who is in charge of it

You stay the boss of your Cal account.

Nothing connects until you approve it. You grant access one app at a time, you can take it back the same way, and everything your AI employee does in there is written down where you can see it.

How we handle your data
  • It signs in to your own Cal account. You are not moving anything into ours.
  • You grant access one app at a time, and you can take it back the same way.
  • Everything it does in Cal is written down, with what it did and when.
  • Anything you tell it to check with you first, it checks with you first.
Other apps in the same corner of the business

It works in Cal and the rest of your software in the same job

A real job rarely stays in one place. Reading a message in one app, checking a record in another and writing the result in a third is one request to your AI employee, not three.

Questions people ask about Cal

Can an AI employee really work inside Cal?
Yes. It signs in to your own Cal account and works in it the way a new hire would, from the chat your team already has open. Nobody installs anything, and nobody learns a new screen.
Do I have to move anything out of Cal?
No. Nothing moves and nothing is replaced. Your records stay in Cal, your team carries on in the same screens they used yesterday, and your AI employee works alongside them in there.
How does it get into my Cal account?
You sign in with your own Cal account, the same way you already do. We never see or hold your password. You approve it before anything connects, and you can take the access back the same way you gave it.
What can it actually do in Cal?
It has 100 ready-made tools in Cal today, among them Add member to team, Add organization attribute option and Add selected calendar. The full list is on this page. It is not limited to those, but it never has to be taught them.
Can it use Cal and the rest of my software in the same job?
Yes, and that is usually the point. Reading a message in one app, checking a record in Cal and writing the result somewhere else is one request to your AI employee, not three separate ones you stitch together.
Who decides what it is allowed to do in Cal?
You do. You grant access one app at a time and can withdraw it at any time, anything you ask it to check with you first it checks with you first, and everything it does in Cal is written down with what it did and when.