VX Agents

OpenAPI Marketplace · Booking & Scheduling

Zoom Meetings

v1.0.0 · 10 endpoints · 0 connections · shared by vx.ai

Let an agent schedule and manage Zoom meetings: list a user's upcoming meetings, create, reschedule or cancel meetings, manage registrants, and see who attended a past meeting. Based on the Zoom API specification.

Connect this API to an AI agent Browse all specs

What you can do with Zoom Meetings 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.

MethodPathOperationDescription
GET /users/{userId} getUser Get a Zoom user's profile and time zone (use me for the token owner)
GET /users/{userId}/meetings listMeetings List a user's scheduled, live or upcoming meetings
POST /users/{userId}/meetings createMeeting Schedule a new meeting for a user
GET /meetings/{meetingId} getMeeting Get a meeting's details, join link and settings
PATCH /meetings/{meetingId} updateMeeting Reschedule a meeting or change its topic, duration or settings
DELETE /meetings/{meetingId} deleteMeeting Cancel (delete) a scheduled meeting
GET /meetings/{meetingId}/registrants listMeetingRegistrants List people registered for a meeting
POST /meetings/{meetingId}/registrants addMeetingRegistrant Register a person for a meeting (returns their join link)
GET /past_meetings/{meetingUUID} getPastMeeting Get details of a meeting that has ended
GET /past_meetings/{meetingUUID}/participants listPastMeetingParticipants List who attended a past meeting

Authentication

bearerAuth

Bearer token — sent as Authorization: Bearer <token>

Zoom API calls use an OAuth access token sent as Authorization: Bearer <token>.

How to get a credential

  1. Go to https://marketplace.zoom.us, choose Develop > Build App and create a Server-to-Server OAuth app (account admin or a role with that permission is required).
  2. Copy the Account ID, Client ID and Client Secret.
  3. Under Scopes, add the scopes in the table below, then Activate the app.
  4. Get a token: POST https://zoom.us/oauth/token?grant_type=account_credentials&account_id=<Account ID> with HTTP Basic auth Client ID:Client Secret. The access_token is valid for 1 hour; request a new one when it expires.

Permissions used

Scope (classic / granular) Operations
user:read:admin / user:read:user:admin getUser
meeting:read:admin / meeting:read:meeting:admin, meeting:read:list_meetings:admin, meeting:read:list_registrants:admin listMeetings, getMeeting, listMeetingRegistrants
meeting:write:admin / meeting:write:meeting:admin, meeting:update:meeting:admin, meeting:delete:meeting:admin, meeting:write:registrant:admin createMeeting, updateMeeting, deleteMeeting, addMeetingRegistrant
meeting:read:admin / meeting:read:past_meeting:admin, meeting:read:list_past_participants:admin getPastMeeting, listPastMeetingParticipants

Common errors

  • 401 / code 124 Invalid access token: the token expired (1 hour) or was copied wrong; generate a new one.
  • 400 / code 4711 or 4700 Invalid access token, does not contain scopes: add the missing scope to the app and get a new token.
  • 404 / code 1001 User does not exist or 3001 Meeting does not exist: wrong userId (use an email, user id or me) or meeting id.
  • 400 / code 300: invalid field, e.g. a start_time not in yyyy-MM-ddTHH:mm:ss format.
  • 429: rate limit (meeting create/update is limited per user per day); slow down.

Store the access token as a VX Agents credential (bearer token) and attach it to the agent; never paste it into chat.

Usage guide

Setup

  • Connect a Zoom Server-to-Server OAuth access token (see the authentication section). It expires after 1 hour, so refresh the credential when calls return code 124.
  • Preset userId: me for the token owner, or the email of the host whose calendar the agent manages (Server-to-Server tokens can act for any user in the account).
  • Call getUser once to learn the host's timezone, and use it for all times you show the user.

Schedule a meeting

  1. listMeetings with type=upcoming to check the host's existing meetings and avoid clashes (set page_size, follow next_page_token).
  2. Confirm topic, date, time, duration and time zone with the user.
  3. createMeeting with topic, type: 2 (scheduled), start_time (2026-10-20T15:00:00), timezone (Asia/Ho_Chi_Minh), duration in minutes, optional agenda and settings (waiting_room, join_before_host, auto_recording, approval_type: 0 for automatic registration).
  4. Share the join_url from the response. Never share start_url (it logs in as the host).

Change or cancel

  • getMeeting to read the current details; updateMeeting with only the fields that change (returns 204 with no body).
  • deleteMeeting cancels the meeting for everyone; set cancel_meeting_reminder=true to email registrants. Ask the user first.
  • Recurring meetings: pass occurrence_id to change or cancel a single occurrence.

Registrants and attendance

  • addMeetingRegistrant (email, first_name, last_name) returns that person's own join_url; registration must be enabled on the meeting (settings.approval_type 0 or 1).
  • listMeetingRegistrants with status=pending|approved|denied.
  • After the meeting ends: getPastMeeting and listPastMeetingParticipants with the meeting uuid. If the UUID starts with / or contains //, URL-encode it twice.

Good to know

  • Meeting ids are numbers (e.g. 85746065432); past-meeting endpoints take the UUID (e.g. aDYlohsHRtCd4ii1uC2+hA==).
  • start_time without Z is read in timezone; with Z it is UTC.
  • Creating, rescheduling or cancelling meetings notifies attendees: confirm with the user before calling.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “Zoom Meetings” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs