Zoom Scheduler Bookings
For consultants, clinics and sales teams that share Zoom Scheduler booking pages: find open slots on a schedule, book a client in, send a single-use booking link, and keep the calendar honest by listing upcoming events, cancelling one or marking a no-show.
Connect this API to an AI agent Browse all specs
What you can do with Zoom Scheduler Bookings via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /scheduler/users/{userId} |
getSchedulerUser | Get a user's Scheduler profile, slug and time zone |
| GET | /scheduler/schedules |
listSchedules | List booking pages (schedules) you own or share |
| GET | /scheduler/schedules/{scheduleId} |
getSchedule | Get a booking page's duration, location and booking rules |
| GET | /scheduler/schedules/{scheduleId}/available_times |
listAvailableTimes | List open time slots on a booking page between two dates |
| POST | /scheduler/attendee |
bookSlot | Book an open slot on a booking page for a client |
| POST | /scheduler/schedules/single_use_link |
createSingleUseLink | Create a booking link that can be used only once |
| GET | /scheduler/events |
listEvents | List booked events in a date range, upcoming or past |
| GET | /scheduler/events/{eventId} |
getEvent | Get one booked event with its time, attendees and status |
| PATCH | /scheduler/events/{eventId} |
updateEvent | Cancel an event, mark an attendee as a no-show or add notes |
| GET | /scheduler/events/{eventId}/attendees/{attendeeId} |
getEventAttendee | Get an attendee's details and answers for a booked event |
| GET | /scheduler/availability |
listAvailability | List availability rules (working hours) for a user |
| GET | /scheduler/availability/{availabilityId} |
getAvailability | Get one availability rule and its working hours |
| GET | /scheduler/teams |
listTeams | List the Scheduler teams a user belongs to |
Authentication
zoom_oauth
OAuth 2.0
Scopes: scheduler:read:user scheduler:read:list_schedule scheduler:read:get_schedule scheduler:write:scheduled_event scheduler:write:single_use_link scheduler:read:list_scheduled_events scheduler:read:scheduled_event scheduler:read:scheduled_event_attendee scheduler:update:scheduled_event scheduler:read:list_availability scheduler:read:availability
Zoom OAuth 2.0 (authorization code) for a user-managed Zoom app.
How to get a credential
- Sign in to the Zoom App Marketplace (https://marketplace.zoom.us) and choose Develop > Build App > General App.
- Set it to User-managed, and add the VX Agents OAuth redirect URL shown on the credential form.
- Under Scopes, add the scheduler scopes in the table below.
- Copy the Client ID and Client Secret into a VX Agents OAuth2 credential and sign in with the Zoom user who owns the schedules. The user needs a Zoom Scheduler license.
Permissions used
| Scope | Operations |
|---|---|
scheduler:read:user |
getSchedulerUser |
scheduler:read:list_schedule, scheduler:read:get_schedule |
listSchedules, getSchedule, listAvailableTimes, listTeams |
scheduler:write:scheduled_event |
bookSlot |
scheduler:write:single_use_link |
createSingleUseLink |
scheduler:read:list_scheduled_events, scheduler:read:scheduled_event, scheduler:read:scheduled_event_attendee |
listEvents, getEvent, getEventAttendee |
scheduler:update:scheduled_event |
updateEvent |
scheduler:read:list_availability, scheduler:read:availability |
listAvailability, getAvailability |
Common errors
| Status | Meaning | Fix |
|---|---|---|
| 401 | Token expired or revoked | Reconnect the credential; access tokens last one hour and are refreshed automatically. |
| 403 | Scope missing or no Scheduler license | Add the scope above to the app and reconnect. |
| 404 | Schedule, event or user not found | Use ids from listSchedules / listEvents; the user must own them. |
| 400 | Slot not available or bad time | Pick a slot returned by listAvailableTimes and send ISO 8601 UTC. |
| 429 | Rate limit | Wait and retry. |
Store it as a VX Agents OAuth2 credential.
Usage guide
Setup
- Create a user-managed Zoom General App with the scheduler scopes listed in Authentication, then connect it as a VX Agents OAuth2 credential, signed in as the Zoom user who owns the booking pages. That user needs a Zoom Scheduler license.
- Call
listSchedulesonce and pin theschedule_idof the booking page the agent should use (for example "30 min consultation"). Pin the client-facingtime_zone(IANA, e.g.Europe/London) too.
Book a client
getScheduleto read the page's duration, location and booking rules.listAvailableTimeswithscheduleId,fromandto(ISO 8601 UTC, e.g.2026-10-21T00:00:00Z) andtime_zone. Offer the client a few of the returned slots.- Confirm slot, time zone, name and email with the client, then
bookSlotwithschedule_id,start_date_time(a slot from step 2, UTC),durationin minutes (match the schedule),booker(email,first_name,last_name, optionalphone_numberfor SMS reminders) andtime_zone. - The response is the booked event with its
statusand attendee; read the event back to the client. - If the client should pick a time themselves,
createSingleUseLinkwithschedule_idand send them the returnedscheduling_url(it works once).
Manage booked events
listEventswithfrom/to(andshow_deleted=trueto include cancelled ones) for the day or week; page withnext_page_token.getEventandgetEventAttendeefor details and the booker's answers.- Cancelling notifies the client: confirm first, then
updateEventwith{"status": "cancelled"}. To record a no-show, sendattendeeswith the attendeeemailand"no_show": true.meeting_notes(max 1024 characters) adds notes. updateEventcannot move an event; to reschedule, cancel it and book a new slot after the client agrees.
Good to know
- All times in requests are ISO 8601 / RFC 3339 in UTC;
time_zoneonly changes how times are shown. listAvailability/getAvailabilityshow the host's working-hour rules; use them to explain why a day has no slots.getSchedulerUserreturns the user'sslug,scheduling_urlandtime_zone.- Deleting schedules, events or availability is not part of this spec.
Source: Zoom Scheduler API reference (https://developers.zoom.us/docs/api/scheduler/), checked 2026-10-20.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Zoom Scheduler Bookings” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.