mcpField
B
build-zoom-rest-api-app

build-zoom-rest-api-app

github.com/anthropics开发33.6k2.1k 次安装1 天前更新
代码仓库

关于 build-zoom-rest-api-app

面向开发者的 Zoom REST API 参考技能,用于构建确定性的服务器端集成。内容涵盖 API 领域、认证、速率限制、示例和故障排查,涉及会议、用户、录制内容及其他 Zoom 资源。

主要功能

  1. 01会议和用户管理指导
  2. 02网络研讨会与录制内容参考
  3. 03OAuth 与权限范围指导
  4. 04速率限制和错误处理
  5. 05Webhook 与 GraphQL 示例
  6. 06广泛覆盖 Zoom API 领域

适用场景

  1. 01构建服务器端 Zoom 集成
  2. 02自动处理会议和用户生命周期任务
  3. 03管理录制内容访问与下载
  4. 04设计事件驱动的 Zoom 工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/anthropics/knowledge-work-plugins --skill build-zoom-rest-api-app

安装后在 Claude Code 中输入/build-zoom-rest-api-app确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

concepts/
api-architecture.md
authentication-flows.md
meeting-urls-and-sdk-joining.md
rate-limiting-strategy.md
examples/
graphql-queries.md
meeting-lifecycle.md
recording-pipeline.md
user-management.md
webhook-server.md
references/
accounts.md
ai-companion.md
ai-services.md
authentication.md
auto-dialer.md
calendar.md
chatbot.md
clips.md
cobrowse-sdk-api.md
commerce.md
contact-center.md
crc.md
environment-variables.md
events.md
graphql.md
healthcare.md
mail.md
marketplace-apps.md
meetings.md
number-management.md
openapi.md

详细介绍

/build-zoom-rest-api-app

用于确定性服务端 Zoom 自动化与资源管理的背景参考。请先使用 plan-zoom-product、plan-zoom-integration 或 debug-zoom,再转到此处查阅端点级别的详细信息。

Zoom REST API

构建 Zoom REST API 服务端集成的专业指南。该 API 提供 600 多个端点,用于以编程方式管理会议、用户、网络研讨会、录制、报告以及 Zoom 平台的所有资源。

官方文档:https://developers.zoom.us/api-hub/ API Hub 参考:https://developers.zoom.us/api-hub/meetings/ OpenAPI 清单:https://developers.zoom.us/api-hub/<domain>/methods/endpoints.json

快速链接

初次使用 Zoom REST API?请按以下路径操作:

  1. API 架构:基础 URL、区域 URL、me 关键字、ID 与 UUID、时间格式
  2. 身份验证流程:OAuth 设置(S2S、User、PKCE、Device Code)
  3. 会议 URL 与 Meeting SDK:请勿将 join_url 与 Meeting SDK 混用
  4. 会议生命周期:创建 → 更新 → 开始 → 结束 → 删除,并结合 Webhook
  5. 速率限制策略:套餐层级、按用户限制、重试模式

参考资料:

  • 会议:会议的增删改查、类型、设置
  • 用户:用户开通与管理
  • 录制:云端录制的访问与下载
  • AI 服务:Scribe 端点清单及当前 AI 服务路径范围
  • GraphQL 查询:替代查询 API(测试版)
  • 集成索引:参见本文件下方的相关章节

references/ 下的大多数领域文件均与官方 API Hub endpoints.json 清单保持一致。请将这些文件视为方法与路径查找的本地权威来源。

遇到问题?

正在构建事件驱动型集成?

快速开始

获取访问令牌(服务器到服务器 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"

响应:

{
  "access_token": "eyJhbGciOiJIUzI1NiJ9...",
  "token_type": "bearer",
  "expires_in": 3600,
  "scope": "meeting:read meeting:write user:read"
}
创建会议
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
    }
  }'

对于 S2S OAuth,请在路径中使用明确的主持人用户 ID 或邮箱,不要使用 me。

使用分页列出用户
curl "https://api.zoom.us/v2/users?page_size=300&status=active" \
  -H "Authorization: Bearer ACCESS_TOKEN"

基础 URL

https://api.zoom.us/v2
区域基础 URL

OAuth 令牌响应中的 api_url 字段表示用户所在的区域。为满足数据驻留合规要求,请使用区域 URL:

区域URL
全球(默认)https://api.zoom.us/v2
澳大利亚https://api-au.zoom.us/v2
加拿大https://api-ca.zoom.us/v2
欧盟https://api-eu.zoom.us/v2
印度https://api-in.zoom.us/v2
沙特阿拉伯https://api-sa.zoom.us/v2
新加坡https://api-sg.zoom.us/v2
英国https://api-uk.zoom.us/v2
美国https://api-us.zoom.us/v2

注意: 无论 api_url 的值是什么,您始终可以使用全球 URL https://api.zoom.us。

主要功能

功能描述
会议管理创建、读取、更新、删除会议,完整控制日程安排
用户配置自动化用户生命周期管理(创建、更新、停用、删除)
网络研讨会操作网络研讨会的增删改查、注册人管理、小组成员控制
云端录制列出、下载、删除录制文件,支持按文件类型筛选
报告与分析使用情况报告、参会者数据、每日统计
团队聊天频道管理、消息收发、聊天机器人集成
Zoom Phone通话管理、语音信箱、呼叫路由
Zoom Rooms会议室管理、设备控制、日程安排
Webhooks针对 100 多种事件类型的实时事件通知
WebSockets无需公共端点的持久化事件流
GraphQL(测试版)通过 v3/graphql 单一端点进行灵活查询
AI Companion会议摘要、逐字稿、AI 生成内容
AI 服务 / Scribe通过 Build 平台 JWT 认证端点进行文件和压缩包转写

前提条件

  • Zoom 账户(免费版可使用 API,但速率限制较低)
  • 已在 Zoom App Marketplace 注册应用
  • OAuth 凭据(Server-to-Server OAuth 或 User OAuth)
  • 目标端点所需的相应权限范围(scopes)

需要认证方面的帮助? 请参阅 zoom-oauth 技能,了解完整的 OAuth 流程实现。

关键注意事项与最佳实践

⚠️ JWT 应用类型已弃用

JWT 应用类型已弃用,请迁移至 Server-to-Server OAuth。这不会影响 Video SDK 中使用的 JWT 令牌签名,仅影响 Marketplace 中用于 REST API 访问的"JWT"应用类型。

// 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);
⚠️ me 关键字使用规则
  • 用户级 OAuth 应用:必须使用 me 代替 userId(否则会返回无效令牌错误)
  • Server-to-Server OAuth 应用:不得使用 me,需提供实际的 userId 或邮箱
  • 账户级 OAuth 应用:可以使用 me 或 userId
⚠️ 会议 ID 与 UUID:双重编码

以 / 开头或包含 // 的 UUID 必须进行双重 URL 编码:

// 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}`;
⚠️ 时间格式
  • yyyy-MM-ddTHH:mm:ssZ:UTC 时间(注意结尾的 Z)
  • yyyy-MM-ddTHH:mm:ss:本地时间(无 Z,使用 timezone 字段)
  • 部分报告 API 仅接受 UTC 时间,请查阅各端点的 API 参考文档。
⚠️ 速率限制基于账户,而非应用

同一 Zoom 账户下的所有应用共享速率限制,一个高负载应用可能影响其他应用。请主动监控 X-RateLimit-Remaining 响应头。

⚠️ 每用户每日限制

会议/网络研讨会的创建和更新操作,每个用户每天最多 100 次(于 UTC 时间 00:00 重置)。进行批量操作时,请将操作分散到不同的主持人用户上。

⚠️ 下载链接需要认证且会重定向

录制文件的 download_url 需要 Bearer 令牌认证,并且可能发生重定向。请务必跟随重定向:

curl -L -H "Authorization: Bearer ACCESS_TOKEN" "https://zoom.us/rec/download/..."
使用 Webhooks 代替轮询
// DON'T: Poll every minute (wastes API quota)
setInterval(() => getMeetings(), 60000);

// DO: Receive webhook events in real-time
app.post('/webhook', (req, res) => {
  if (req.body.event === 'meeting.started') {
    handleMeetingStarted(req.body.payload);
  }
  res.status(200).send();
});

Webhook 设置详情: 请参阅 zoom-webhooks 技能,了解完整的 Webhook 实现方法。

完整文档库

本技能包含按类别组织的完整指南:

核心概念
  • API 架构 - REST 设计、基础 URL、区域路由、me 关键字、ID 与 UUID、时间格式
  • 认证流程 - 所有 OAuth 流程(S2S、User、PKCE、Device Code)
  • 速率限制策略 - 按套餐划分的限制、重试模式、请求排队
完整示例
故障排查
  • 常见错误 - HTTP 状态码、Zoom 错误码和错误响应格式
  • 常见问题 - 速率限制、令牌刷新、分页陷阱和注意事项
参考文档(共 39 个文件,覆盖所有 Zoom API 领域)
核心 API
通信
基础设施
高级
其他 API 领域

示例仓库

官方(由 Zoom 提供)
类型仓库
OAuth 示例oauth-sample-app
S2S OAuth 入门server-to-server-oauth-starter-api
用户 OAuthuser-level-oauth-starter
S2S Tokenserver-to-server-oauth-token
Rivet 库rivet-javascript
WebSocket 示例websocket-js-sample
Webhook 示例webhook-sample-node.js
Python S2Sserver-to-server-python-sample

资源


需要帮助? 请从下方的综合索引部分开始浏览完整导航。


综合索引

本节内容迁移自 SKILL.md。

快速入门路径

如果你是 Zoom REST API 的新手,请按以下顺序操作:

  1. 先运行预检 → RUNBOOK.md

  2. 了解 API 设计 → concepts/api-architecture.md

    • 基础 URL、区域端点、me 关键字规则
    • 会议 ID 与 UUID、双重编码、时间格式
  3. 设置身份验证 → concepts/authentication-flows.md

    • 服务端到服务端 OAuth(后端自动化)
    • 使用 PKCE 的用户 OAuth(面向用户的应用)
    • 交叉参考:zoom-oauth
  4. 创建你的第一个会议 → examples/meeting-lifecycle.md

    • 包含 curl 和 Node.js 示例的完整 CRUD
    • Webhook 事件集成
  5. 处理速率限制 → concepts/rate-limiting-strategy.md

    • 基于套餐的限制、重试模式、请求排队
  6. 设置 Webhook → examples/webhook-server.md

    • CRC 验证、签名验证、事件处理
  7. 排查问题 → troubleshooting/common-issues.md

    • 令牌刷新、分页陷阱、常见易错点

文档结构

rest-api/
├── SKILL.md                              # Main skill overview + quick start
├── SKILL.md                              # This file - navigation guide
│
├── concepts/                             # Core architectural concepts
│   ├── api-architecture.md              # REST design, URLs, IDs, time formats
│   ├── authentication-flows.md          # OAuth flows (S2S, User, PKCE, Device)
│   └── rate-limiting-strategy.md        # Limits by plan, retry, queuing
│
├── examples/                             # Complete working code
│   ├── meeting-lifecycle.md             # Create→Update→Start→End→Delete
│   ├── user-management.md              # CRUD users, pagination, bulk ops
│   ├── recording-pipeline.md           # Download recordings via webhooks
│   ├── webhook-server.md               # Express.js CRC + signature verification
│   └── graphql-queries.md              # GraphQL queries, mutations, pagination
│
├── troubleshooting/                      # Problem solving
│   ├── common-errors.md                # HTTP codes, Zoom error codes table
│   └── common-issues.md               # Rate limits, tokens, pagination pitfalls
│
└── references/                           # 39 domain-specific reference files
    ├── authentication.md                # Auth methods reference
    ├── meetings.md                      # Meeting endpoints
    ├── users.md                         # User management endpoints
    ├── webinars.md                      # Webinar endpoints
    ├── recordings.md                    # Cloud recording endpoints
    ├── reports.md                       # Reports & analytics
    ├── accounts.md                      # Account management
    ├── rate-limits.md                   # Rate limit details
    ├── graphql.md                       # GraphQL API (beta)
    ├── zoom-team-chat.md                     # Team Chat messaging
    ├── chatbot.md                       # Chatbot integration
    ├── phone.md                         # Zoom Phone
    ├── rooms.md                         # Zoom Rooms
    ├── calendar.md                      # Zoom Calendar
    ├── mail.md                          # Zoom Mail
    ├── ai-companion.md                  # AI features
    ├── openapi.md                       # OpenAPI specs
    ├── qss.md                           # Quality of Service
    ├── contact-center.md                # Contact Center
    ├── events.md                        # Zoom Events
    ├── whiteboard.md                    # Whiteboard
    ├── clips.md                         # Zoom Clips
    ├── scheduler.md                     # Scheduler
    ├── scim2.md                         # SCIM 2.0
    ├── marketplace-apps.md              # App management
    ├── zoom-video-sdk-api.md                 # Video SDK REST
    └── ... (39 total files)

按使用场景查找

我想创建和管理会议
  1. API 架构 - 基础 URL、时间格式
  2. 会议生命周期 - 完整 CRUD + Webhook 事件
  3. 会议参考 - 所有端点、类型、设置
我想以编程方式管理用户
  1. 用户管理 - CRUD、分页、批量操作
  2. 用户参考 - 端点、用户类型、权限范围
我想自动下载录制文件
  1. 录制流水线 - 由 Webhook 触发的下载
  2. 录制参考 - 文件类型、下载身份验证
我想接收实时事件
  1. Webhook 服务 - CRC 验证、签名检查
  2. 交叉参考:zoom-webhooks,查看完整的 Webhook 文档
  3. 交叉参考:zoom-websockets,查看 WebSocket 事件
我想使用 GraphQL 替代 REST
  1. GraphQL 查询 - 查询、变更、分页
  2. GraphQL 参考 - 可用实体、权限范围、速率限制
我想设置身份验证
  1. 身份验证流程 - 所有 OAuth 方法
  2. 交叉参考:zoom-oauth,查看完整的 OAuth 实现
我遇到了速率限制
  1. 速率限制策略 - 按套餐划分的限制、应对策略
  2. 速率限制参考 - 详细表格
  3. 常见问题 - 实用解决方案
我遇到了错误
  1. 常见错误 - 错误码表
  2. 常见问题 - 诊断流程
我想开发网络研讨会
  1. 网络研讨会参考 - 端点、类型、注册者
  2. 会议生命周期 - 类似的模式同样适用
我想集成 Zoom Phone
  1. Phone 参考 - Phone API 端点
  2. 速率限制策略 - Phone 的独立速率限制

最重要的文档

1. API 架构(基础)

concepts/api-architecture.md

在进行任何 API 调用之前必须掌握的知识:

  • 基础 URL 与区域端点
  • me 关键字规则(因应用类型而异!)
  • 会议 ID 与 UUID 的双重编码
  • ISO 8601 时间格式(UTC 与本地时间)
  • 下载 URL 的身份验证
2. 限流策略(生产环境最常见的问题)

concepts/rate-limiting-strategy.md

限流按账户计算,并在所有应用之间共享:

  • 免费版:轻量级 4/秒,中等 2/秒,重量级 1/秒
  • Pro 版:轻量级 30/秒,中等 20/秒,重量级 10/秒
  • Business+ 版:轻量级 80/秒,中等 60/秒,重量级 40/秒
  • 单用户:每天 100 次会议创建/更新
3. 会议生命周期(最常见的任务)

examples/meeting-lifecycle.md

包含 Webhook 集成的完整 CRUD,是大多数开发者首先需要的模式。


关键经验

重要发现:
  1. JWT 应用类型已弃用,请改用 Server-to-Server OAuth

    • 被弃用的是 Marketplace 上的 JWT 应用类型,而不是 JWT 令牌签名
    • 参见:身份验证流程
  2. me 关键字的行为因应用类型而异

    • User OAuth:必须使用 me
    • S2S OAuth:禁止使用 me
    • 参见:API 架构
  3. 限流规则较为复杂(不要假设只有一条全局规则)

    • 限制可能因端点而异,并可能在账户、应用或用户层面执行
    • 应将配额视为可能在整个账户内共享,并实现退避机制
    • 监控限流响应头(例如 X-RateLimit-Remaining)
    • 参见:限流策略
  4. 每个用户每天最多创建 100 次会议

    • 这是硬性的单用户限制,与速率限制无关
    • 批量操作时,应将请求分散到多个主持人用户上
    • 参见:限流策略
  5. 某些 UUID 需要进行双重编码

    • 以 / 开头或包含 // 的 UUID 必须进行双重编码
    • 参见:API 架构
  6. 分页使用 next_page_token,而不是 page_number

    • page_number 是旧版参数,正在逐步淘汰
    • 推荐使用 next_page_token
    • 参见:常见问题
  7. GraphQL 位于 /v3/graphql,而不是 /v2/

    • 单一端点,基于游标的分页
    • 限流按字段计算(每个字段相当于一个 REST 端点)
    • 参见:GraphQL 查询

快速参考

"401 Unauthorized"

→ 身份验证流程:令牌已过期或权限范围不正确

"429 Too Many Requests"

→ 限流策略:查看响应头中的重置时间

使用 userId 时出现 "Invalid token"

→ API 架构:User OAuth 应用必须使用 me

"如何对结果进行分页?"

→ 常见问题:使用 next_page_token

"Webhook 没有收到推送"

→ Webhook 服务:需要完成 CRC 验证

"录制文件下载失败"

→ 录制处理流程:使用 Bearer 认证并跟随重定向

"如何创建会议?"

→ 会议生命周期:完整的可运行示例


相关 Skills

Skill使用场景
zoom-oauth实现 OAuth 流程、令牌管理
zoom-webhooks深入的 Webhook 实现、事件目录
zoom-websocketsWebSocket 事件流
zoom-general跨产品模式、社区仓库

基于 Zoom REST API v2(当前版本)和 GraphQL v3(测试版)

环境变量

评论

支持 Markdown