mcpField
Z
zoom-rest-api

zoom-rest-api

github.com/zoom開発8642 回インストール1 週間前に更新
リポジトリ

zoom-rest-api について

zoom-rest-api は、Zoom REST API のサーバーサイド連携を構築するためのガイドスキルです。会議やユーザー、録画などを扱い、認証案内、エンドポイント資料、実装例、トラブルシューティングをまとめています。

主な機能

  1. 01OAuth フローの案内
  2. 02会議・ユーザー API の資料
  3. 03録画・レポート API の解説
  4. 04Webhook 連携の実装例
  5. 05レート制限とエラーの調査

活用シーン

  1. 01Zoom 会議のライフサイクル実装
  2. 02API によるユーザー登録
  3. 03Webhook イベントからの録画取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zoom/skills --skill zoom-rest-api

インストール後、Claude Code で/zoom-rest-apiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/marketplace-apps/
contact-center.json
create-meeting-sdk.json
create-s2s-contact-center-api.json
create-s2s-oauth.json
create-s2s-phone-api.json
create-s2s-team-chat-api.json
create-s2s-webhooks.json
create-s2s-websocket.json
create-s2s-zcc-voice-rtms.json
general-admin-api.json
general-admin-websocket.json
general-user-api.json
general-user-meeting-webinar-rtms.json
general-user-webhooks.json
marketplace-app-creation-template-for-meeting-sdk.json
marketplace-app-creation-template-for-s2s-api.json
marketplace-app-creation-template-for-s2s-contact-center-api.json
marketplace-app-creation-template-for-s2s-mcp-admin.json
marketplace-app-creation-template-for-s2s-mcp-contact-center-user-administration.json
marketplace-app-creation-template-for-s2s-phone-api.json
marketplace-app-creation-template-for-s2s-team-chat-api.json
marketplace-app-creation-template-for-s2s-webhooks.json
marketplace-app-creation-template-for-s2s-websocket.json
marketplace-app-creation-template-for-s2s-zcc-voice-rtms.json
marketplace-manifest-fragment-for-connect-external-mcp.json
marketplace-manifest-fragment-for-connect-rest-api.json
marketplace-manifest-fragment-for-custom-action.json
marketplace-manifest-fragment-for-trigger-zcc-voice-bot.json
marketplace-manifest-fragment-for-trigger-zoom-phone.json
marketplace-manifest-template-for-general-admin-api.json

詳細

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、ユーザー、PKCE、デバイスコード)
  3. ミーティング URL と Meeting SDK - join_url と Meeting SDK を混同しないようにします
  4. ミーティングのライフサイクル - Webhook を使った作成 → 更新 → 開始 → 終了 → 削除
  5. レート制限の戦略 - プラン階層、ユーザーごとの制限、再試行パターン

リファレンス:

  • ミーティング - ミーティングの CRUD、種類、設定
  • ユーザー - ユーザーのプロビジョニングと管理
  • レコーディング - クラウドレコーディングへのアクセスとダウンロード
  • AI サービス - Scribe、Summarizer、Translator のエンドポイントインベントリと、現在の AI Services のパス一覧
  • Marketplace アプリ - アプリの作成、マニフェストの検証、ネイティブアプリの種類、レスポンスの注意点
  • Marketplace テンプレート - シナリオマニフェスト、ネイティブ作成リクエスト、マージ専用の機能フラグメント
  • Connect、Actions、Triggers - 外部 REST/MCP コネクターと、マニフェストで管理されるワークフロー機能
  • 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 を使用できます。

主な機能

機能説明
ミーティング管理スケジュールを完全に制御して、ミーティングを作成、読み取り、更新、削除します
ユーザーのプロビジョニングユーザーのライフサイクル(作成、更新、無効化、削除)を自動化します
ウェビナーの運用ウェビナーの CRUD、登録者管理、パネリスト管理を行います
クラウドレコーディングファイル形式で絞り込みながら、レコーディングの一覧表示、ダウンロード、削除を行います
レポートと分析使用状況レポート、参加者データ、日次統計を提供します
チームチャットチャネル管理、メッセージング、チャットボット連携を行います
Zoom Phone通話管理、ボイスメール、通話ルーティングを行います
Zoom Roomsルーム管理、デバイス制御、スケジュール設定を行います
Webhook100 種類以上のイベントタイプに対応したリアルタイムのイベント通知を提供します
WebSocketパブリックエンドポイントなしで、イベントを永続的にストリーミングします
GraphQL(ベータ版)v3/graphql で単一エンドポイントの柔軟なクエリを利用できます
AI Companionミーティングの要約、文字起こし、AI 生成コンテンツを提供します
AI サービスBuild プラットフォームの JWT 認証エンドポイントを介して、Scribe による文字起こし、Summarizer による文字起こしの要約、Translator によるテキスト翻訳を利用できます

前提条件

  • Zoom アカウント(無料プランでは API を利用できますが、レート制限は低くなります)
  • Zoom App Marketplace に登録したアプリ
  • OAuth 認証情報(Server-to-Server OAuth または General App OAuth/クライアント認証情報)
  • 対象エンドポイントに必要なスコープ

まずアプリを作成または検証する必要がありますか? REST 呼び出しを実装する前に、 Marketplace アプリ管理を使用してください。 General App マニフェスト、S2S のロールアウトに関する注意点、アプリ所有の client_credentials スコープ、 イベントサブスクリプションの設定、認証情報レスポンスの形式、および後続アプリの作成をアプリ作成 API で承認するには、 最初のブートストラップアプリを手動で作成する必要があることについて説明しています。 自動化する場合は、機械可読な Marketplace テンプレートインデックス から選択し、既存の General App を変更するときは マニフェスト更新ワークフローに従ってください。

認証についてサポートが必要ですか? OAuth フローの実装全体については、zoom-oauth スキルを参照してください。

重要な注意点とベストプラクティス

⚠️ JWT アプリタイプは非推奨です

JWT アプリタイプは非推奨です。Server-to-Server OAuth に移行してください。これは Video SDK で使用する JWT トークンの署名には影響しません。影響するのは、REST API アクセス用の Marketplace の「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 キーワードのルール
  • General App のユーザーレベルスコープのトークン:現在のユーザーのエンドポイントでは、userId の代わりに me を必ず使用してください(使用しない場合は、無効なトークンエラーになります)
  • Server-to-Server OAuth アプリ:me は使用せず、実際の userId またはメールアドレスを指定してください
  • General App の管理者/アカウントレベルスコープのトークン:エンドポイントと付与されたスコープに応じて、me または許可された userId を使用できます
⚠️ ミーティング ID と UUID — 二重エンコード

/ で始まる 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 ヘッダーを事前に監視してください。

⚠️ ユーザーごとの 1 日あたりの上限

ミーティング/ウェビナーの作成・更新操作は、ユーザーごとに 1 日 100 回までに制限されています(00:00 UTC にリセットされます)。一括操作を行う場合は、異なるホストユーザーに操作を分散してください。

⚠️ ダウンロード URL には認証が必要で、リダイレクトが発生します

レコーディングの download_url 値には、Bearer トークン認証が必要で、リダイレクトが発生する場合があります。必ずリダイレクトに従ってください。

curl -L -H "Authorization: Bearer ACCESS_TOKEN" "https://zoom.us/rec/download/..."
ポーリングではなく Webhook を使用する
// 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 の設定方法: 包括的な Webhook の実装については、zoom-webhooks スキルを参照してください。

ドキュメントライブラリ全体

このスキルには、カテゴリ別に整理された包括的なガイドが含まれています。

コアコンセプト
  • API アーキテクチャ - REST 設計、ベース URL、リージョンルーティング、me キーワード、ID と UUID、時刻形式
  • 認証フロー - すべての OAuth フロー(S2S、ユーザー、PKCE、デバイスコード)
  • レート制限の戦略 - プランごとの制限、再試行パターン、リクエストのキューイング
完全な使用例
トラブルシューティング
  • よくあるエラー - HTTP ステータスコード、Zoom エラーコード、エラーレスポンスの形式
  • よくある問題 - レート制限、トークンの更新、ページネーションの落とし穴、注意点
リファレンス(Zoom API の全ドメインを網羅した 39 ファイル)
コア API
コミュニケーション
インフラストラクチャ
高度な内容
その他の API ドメイン

サンプルリポジトリ

公式(Zoom 提供)
種類リポジトリ
OAuth サンプルoauth-sample-app
S2S OAuth スターターserver-to-server-oauth-starter-api
General App ユーザー OAuthuser-level-oauth-starter
S2S トークンserver-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

    • Server-to-Server OAuth(バックエンドの自動化)
    • 必要に応じた PKCE を使った General App 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. 関連項目:包括的な Webhook ドキュメントについては zoom-webhooks
  3. 関連項目:WebSocket イベントについては zoom-websockets
REST ではなく GraphQL を使いたい
  1. GraphQL クエリ - クエリ、ミューテーション、ページネーション
  2. GraphQL リファレンス - 利用可能なエンティティ、スコープ、レート制限
認証を設定したい
  1. 認証フロー - すべての OAuth 方式
  2. 関連項目:OAuth の実装全般については zoom-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

レート制限はアカウント単位で、すべてのアプリで共有されます。

  • Free:Light は 4 回/秒、Medium は 2 回/秒、Heavy は 1 回/秒
  • Pro:Light は 30 回/秒、Medium は 20 回/秒、Heavy は 10 回/秒
  • Business+:Light は 80 回/秒、Medium は 60 回/秒、Heavy は 40 回/秒
  • ユーザーごと:ミーティングの作成/更新は 1 日あたり 100 回
3. ミーティングのライフサイクル(最もよくあるタスク)

examples/meeting-lifecycle.md

Webhook を統合した CRUD の完全な例です。ほとんどの開発者が最初に必要とするパターンです。


主な学び

重要な発見:
  1. JWT アプリタイプは非推奨です — Server-to-Server OAuth を使用してください

    • Marketplace の JWT アプリタイプ が非推奨であり、JWT トークンの署名は非推奨ではありません
    • 参照:認証フロー
  2. me キーワードの動作はアプリタイプによって異なります

    • General App のユーザーレベルトークン:me を必ず使用します
    • S2S OAuth:me を使用してはいけません
    • 参照:API アーキテクチャ
  3. レート制限には細かな違いがあります(単一のグローバルルールがあると思い込まないでください)

    • 制限はエンドポイントによって異なる場合があり、アカウント/アプリ/ユーザーレベルで適用されることがあります
    • クォータがアカウント全体で共有される可能性を考慮し、バックオフを実装してください
    • レート制限のレスポンスヘッダー(例:X-RateLimit-Remaining)を監視してください
    • 参照:レート制限の戦略
  4. ユーザーごとにミーティングを作成できるのは 1 日 100 回です

    • これはユーザーごとの固定上限であり、レート制限とは関係ありません
    • 一括操作では、複数のホストユーザーに分散してください
    • 参照:レート制限の戦略
  5. 一部の UUID では二重エンコードが必要です

    • / で始まる UUID、または // を含む UUID は二重エンコードする必要があります
    • 参照:API アーキテクチャ
  6. ページネーションには page_number ではなく next_page_token を使用してください

    • page_number はレガシーであり、段階的に廃止されています
    • next_page_token の使用が推奨されます
    • 参照:よくある問題
  7. GraphQL のエンドポイントは /v2/ ではなく /v3/graphql です

    • 単一のエンドポイントで、カーソルベースのページネーションを使用します
    • レート制限はフィールド単位で適用されます(各フィールドは REST の同等の操作 1 回に相当)
    • 参照:GraphQL クエリ

クイックリファレンス

「401 Unauthorized」

→ 認証フロー - トークンの期限切れ、またはスコープの誤り

「429 Too Many Requests」

→ レート制限の戦略 - ヘッダーでリセット時刻を確認

userId の使用時に「Invalid token」

→ API アーキテクチャ - General App のユーザーレベルトークンでは me を使用する必要があります

「結果をページネーションするには?」

→ よくある問題 - next_page_token を使用

「Webhook が届かない」

→ Webhook サーバー - CRC 検証が必要です

「録画をダウンロードできない」

→ 録画パイプライン - Bearer 認証とリダイレクトの追跡

「ミーティングを作成するには?」

→ ミーティングのライフサイクル - 実際に動作する完全な例


関連スキル

スキル使用する場面
zoom-oauthOAuth フローの実装、トークン管理
zoom-webhooksWebhook の詳細な実装、イベントカタログ
zoom-websocketsWebSocket イベントストリーミング
zoom-general複数製品にまたがるパターン、コミュニティリポジトリ

Zoom REST API v2(現行)および GraphQL v3(ベータ版)に基づく

環境変数

コメント