anthropics/knowledge-work-plugins56 files

Build Zoom REST API App

Reference skill for Zoom REST API. Use after choosing an API-based workflow when you need endpoint selection, resource-management patterns, OAuth requirements, rate-limit awareness, or API error debugging.

Specification
Skill ID
anthropics/knowledge-work-plugins/build-zoom-rest-api-app
Publisher
anthropics
Repository
knowledge-work-plugins
Installs
0
Files
56
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

anthropics/knowledge-work-plugins/build-zoom-rest-api-appInstalls these files
  • RUNBOOK.md
  • SKILL.md
  • concepts/api-architecture.md
  • concepts/authentication-flows.md
  • concepts/meeting-urls-and-sdk-joining.md
  • concepts/rate-limiting-strategy.md
  • examples/graphql-queries.md
  • examples/meeting-lifecycle.md
  • examples/recording-pipeline.md
  • examples/user-management.md
  • examples/webhook-server.md
  • references/accounts.md
  • references/ai-companion.md
  • references/ai-services.md
  • references/authentication.md
  • references/auto-dialer.md
  • references/calendar.md
  • references/chatbot.md
  • references/clips.md
  • references/cobrowse-sdk-api.md
  • references/commerce.md
  • references/contact-center.md
  • references/crc.md
  • references/environment-variables.md
  • references/events.md
  • references/graphql.md
  • references/healthcare.md
  • references/mail.md
  • references/marketplace-apps.md
  • references/meetings.md
  • references/number-management.md
  • references/openapi.md
  • references/phone.md
  • references/qss.md
  • references/quality-management.md
  • references/rate-limits.md
  • references/recordings.md
  • references/reports.md
  • references/revenue-accelerator.md
  • references/rooms.md
  • references/scheduler.md
  • references/scim2.md
  • references/tasks.md
  • references/team-chat.md
  • references/users.md
  • references/video-management.md
  • references/video-sdk-api.md
  • references/virtual-agent.md
  • references/webinars.md
  • references/whiteboard.md
  • references/workforce-management.md
  • references/zoom-docs.md
  • troubleshooting/common-errors.md
  • troubleshooting/common-issues.md
  • troubleshooting/forum-top-questions.md
  • troubleshooting/token-scope-playbook.md

What this skill tells the agent

/build-zoom-rest-api-app

Background reference for deterministic server-side Zoom automation and resource management. Prefer plan-zoom-product, plan-zoom-integration, or debug-zoom first, then route here for endpoint-level detail.

Zoom REST API

Expert guidance for building server-side integrations with the Zoom REST API. This API provides 600+ endpoints for managing meetings, users, webinars, recordings, reports, and all Zoom platform resources programmatically.

Official Documentation: https://developers.zoom.us/api-hub/ API Hub Reference: https://developers.zoom.us/api-hub/meetings/ OpenAPI Inventories: https://developers.zoom.us/api-hub/<domain>/methods/endpoints.json

Quick Links

New to Zoom REST API? Follow this path:

  1. [API Architecture](concepts/api-architecture.md) - Base URLs, regional URLs, me keyword, ID vs UUID, time formats
  2. [Authentication Flows](concepts/authentication-flows.md) - OAuth setup (S2S, User, PKCE, Device Code)
  3. [Meeting URLs vs Meeting SDK](concepts/meeting-urls-and-sdk-joining.md) - Stop mixing join_url with Meeting SDK
  4. [Meeting Lifecycle](examples/meeting-lifecycle.md) - Create → Update → Start → End → Delete with webhooks
  5. [Rate Limiting Strategy](concepts/rate-limiting-strategy.md) - Plan tiers, per-user limits, retry patterns

Reference:

  • [Meetings](references/meetings.md) - Meeting CRUD, types, settings
  • [Users](references/users.md) - User provisioning and management
  • [Recordings](references/recordings.md) - Cloud recording access and download
  • [AI Services](references/ai-services.md) - Scribe endpoint inventory and current AI Services path surface
  • [GraphQL Queries](examples/graphql-queries.md) - Alternative query API (beta)
  • Integrated Index - see the section below in this file

Most domain files under references/ are aligned to the official API Hub endpoints.json inventories. Treat those files as the local source of truth for method/path discovery.

Having issues?

  • Start with preflight checks → 5-Minute Runbook
  • 401 Unauthorized → Authentication Flows (check token expiry, scopes)
  • 429 Too Many Requests → Rate Limiting Strategy
  • Error codes → Common Errors
  • Pagination confusion → Common Issues
  • Webhooks not arriving → Webhook Server
  • Forum-derived FAQs → Forum Top Questions
  • Token/scope failures → Token + Scope Playbook

Building event-driven integrations?

  • Webhook Server - Express.js server with CRC validation
  • Recording Pipeline - Auto-download via webhook events

Quick Start

Get an Access Token (Server-to-Server OAuth)

curl -X POST "https://zoom.us/oauth/token" \
  -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=account_credentials&account_id=ACCOUNT_ID"

Response:

{
  "access_token": "eyJhbGciOiJIUzI1NiJ9...",
  "token_type": "bearer",
  "expires_in": 3600,
  "scope": "meeting:read meeting:write user:read"
}

Create a Meeting

curl -X POST "https://api.zoom.us/v2/users/HOST_USER_ID/meetings" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "topic": "Team Standup",
    "type": 2,
    "start_time": "2025-03-15T10:00:00Z",
    "duration": 30,
    "settings": {
      "join_before_host": false,
      "waiting_room": true
    }
  }'

For S2S OAuth, use an explicit host user ID or email in the path. Do not use me.

List Users with Pagination

curl "https://api.zoom.us/v2/users?page_size=300&status=active" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Base URL

https://api.zoom.us/v2

Regional Base URLs

The api_url field in OAuth token responses indicates the user's region. Use regional URLs for data residency compliance:

RegionURL
Global (default)https://api.zoom.us/v2
Australiahttps://api-au.zoom.us/v2
Canadahttps://api-ca.zoom.us/v2
European Unionhttps://api-eu.zoom.us/v2
Indiahttps://api-in.zoom.us/v2
Saudi Arabiahttps://api-sa.zoom.us/v2
Singaporehttps://api-sg.zoom.us/v2
United Kingdomhttps://api-uk.zoom.us/v2
United Stateshttps://api-us.zoom.us/v2

Note: You can always use the global URL https://api.zoom.us regardless of the api_url value.

Key Features

FeatureDescription
Meeting ManagementCreate, read, update, delete meetings with full scheduling control
User ProvisioningAutomated user lifecycle (create, update, deactivate, delete)
Webinar OperationsWebinar CRUD, registrant management, panelist control
Cloud RecordingsList, download, delete recordings with file-type filtering
Reports & AnalyticsUsage reports, participant data, daily statistics
Team ChatChannel management, messaging, chatbot integration
Zoom PhoneCall management, voicemail, call routing
Zoom RoomsRoom management, device control, scheduling
WebhooksReal-time event notifications for 100+ event types
WebSocketsPersistent event streaming without public endpoints
GraphQL (Beta)Single-endpoint flexible queries at v3/graphql
AI CompanionMeeting summaries, transcripts, AI-generated content
AI Services / ScribeFile and archive transcription via Build-platform JWT-authenticated endpoints

Prerequisites

  • Zoom account (Free tier has API access with lower rate limits)
  • App registered on Zoom App Marketplace
  • OAuth credentials (Server-to-Server OAuth or User OAuth)
  • Appropriate scopes for target endpoints
Need help with authentication? See the [zoom-oauth](../oauth/SKILL.md) skill for complete OAuth flow implementation.

Critical Gotchas and Best Practices

⚠️ JWT App Type is Deprecated

The JWT app type is deprecated. Migrate to Server-to-Server OAuth. This does NOT affect JWT token signatures used in Video SDK — only the Marketplace "JWT" app type for REST API access.

// OLD (JWT app type - DEPRECATED)
const token = jwt.sign({ iss: apiKey, exp: expiry }, apiSecret);

// NEW (Server-to-Server OAuth)
const token = await getServerToServerToken(accountId, clientId, clientSecret);

⚠️ The me Keyword Rules

  • User-level OAuth apps: MUST use me instead of userId (otherwise: invalid token error)
  • Server-to-Server OAuth apps: MUST NOT use me — provide the actual userId or email
  • Account-level OAuth apps: Can use either me or userId

⚠️ Meeting ID vs UUID — Double Encoding

UUIDs that begin with / or contain // must be double URL-encoded:

// UUID: /abc==
// Single encode: %2Fabc%3D%3D
// Double encode: %252Fabc%253D%253D  ← USE THIS

const uuid = '/abc==';
const encoded = encodeURIComponent(encodeURIComponent(uuid));
const url = `https://api.zoom.us/v2/meetings/${encoded}`;

⚠️ Time Formats

  • yyyy-MM-ddTHH:mm:ssZ — UTC time (note the Z suffix)
  • yyyy-MM-ddTHH:mm:ss — Local time (no Z, uses timezone field)
  • Some report APIs only accept UTC. Check the API reference for each endpoint.

⚠️ Rate Limits Are Per-Account, Not Per-App

All apps on the same Zoom account share rate limits. One heavy app can impact others. Monitor X-RateLimit-Remaining headers proactively.

⚠️ Per-User Daily Limits

Use this skill in a project

Open any RiverX project, search the Skills panel for anthropics/knowledge-work-plugins/build-zoom-rest-api-app, and install it in one click.

Use this skill