/build-zoom-rest-api-app
Référence de contexte pour l'automatisation serveur déterministe Zoom et la gestion des ressources. Préférez plan-zoom-product, plan-zoom-integration, ou debug-zoom d'abord, puis routez ici pour les détails au niveau des endpoints.
Zoom REST API
Conseils d'experts pour construire des intégrations côté serveur avec l'API REST Zoom. Cette API fournit 600+ endpoints pour gérer les réunions, les utilisateurs, les webinaires, les enregistrements, les rapports et toutes les ressources de la plateforme Zoom par programmation.
Documentation officielle : https://developers.zoom.us/api-hub/
Référence API Hub : https://developers.zoom.us/api-hub/meetings/
Inventaires OpenAPI : https://developers.zoom.us/api-hub/<domain>/methods/endpoints.json
Liens rapides
Nouveau sur l'API REST Zoom ? Suivez ce chemin :
- Architecture API - URLs de base, URLs régionales, mot-clé
me, ID vs UUID, formats de temps - Flux d'authentification - Configuration OAuth (S2S, User, PKCE, Device Code)
- URLs de réunion vs Meeting SDK - Arrêtez de mélanger
join_urlavec Meeting SDK - Cycle de vie de la réunion - Create → Update → Start → End → Delete avec webhooks
- Stratégie de limitation de débit - Niveaux de plan, limites par utilisateur, modèles de retry
Référence :
- Réunions - CRUD réunions, types, paramètres
- Utilisateurs - Provisionnement et gestion des utilisateurs
- Enregistrements - Accès aux enregistrements cloud et téléchargement
- Services IA - Inventaire des endpoints Scribe et surface actuelle des services IA
- Requêtes GraphQL - API de requête alternative (bêta)
- Index intégré - voir la section ci-dessous dans ce fichier
La plupart des fichiers de domaine sous references/ sont alignés avec les inventaires endpoints.json du hub API officiel. Traitez ces fichiers comme la source de vérité locale pour la découverte des méthodes/chemins.
Vous rencontrez des problèmes ?
- Commencez par les vérifications préalables → Runbook 5 minutes
- 401 Unauthorized → Flux d'authentification (vérifiez l'expiration du token, les scopes)
- 429 Too Many Requests → Stratégie de limitation de débit
- Codes d'erreur → Erreurs courantes
- Confusion de pagination → Problèmes courants
- Webhooks non reçus → Serveur Webhook
- FAQs dérivées du forum → Questions principales du forum
- Défaillances token/scope → Playbook Token + Scope
Vous construisez des intégrations basées sur les événements ?
- Serveur Webhook - Serveur Express.js avec validation CRC
- Pipeline d'enregistrement - Téléchargement automatique via événements webhook
Démarrage rapide
Obtenir un jeton d'accès (OAuth Server-to-Server)
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"
Réponse :
{
"access_token": "eyJhbGciOiJIUzI1NiJ9...",
"token_type": "bearer",
"expires_in": 3600,
"scope": "meeting:read meeting:write user:read"
}
Créer une réunion
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
}
}'
Pour OAuth S2S, utilisez un ID utilisateur hôte explicite ou un email dans le chemin. N'utilisez pas me.
Lister les utilisateurs avec pagination
curl "https://api.zoom.us/v2/users?page_size=300&status=active" \
-H "Authorization: Bearer ACCESS_TOKEN"
URL de base
https://api.zoom.us/v2
URLs de base régionales
Le champ api_url dans les réponses de token OAuth indique la région de l'utilisateur. Utilisez les URLs régionales pour la conformité à la résidence des données :
| Région | URL |
|---|---|
| Global (défaut) | https://api.zoom.us/v2 |
| Australie | https://api-au.zoom.us/v2 |
| Canada | https://api-ca.zoom.us/v2 |
| Union européenne | https://api-eu.zoom.us/v2 |
| Inde | https://api-in.zoom.us/v2 |
| Arabie saoudite | https://api-sa.zoom.us/v2 |
| Singapour | https://api-sg.zoom.us/v2 |
| Royaume-Uni | https://api-uk.zoom.us/v2 |
| États-Unis | https://api-us.zoom.us/v2 |
Note : Vous pouvez toujours utiliser l'URL globale https://api.zoom.us indépendamment de la valeur api_url.
Fonctionnalités clés
| Fonctionnalité | Description |
|---|---|
| Gestion des réunions | Créer, lire, mettre à jour, supprimer des réunions avec contrôle d'ordonnancement complet |
| Provisionnement utilisateur | Cycle de vie automatisé des utilisateurs (créer, mettre à jour, désactiver, supprimer) |
| Opérations webinaire | CRUD webinaire, gestion des inscrits, contrôle des panélistes |
| Enregistrements cloud | Lister, télécharger, supprimer des enregistrements avec filtrage par type de fichier |
| Rapports et analyses | Rapports d'utilisation, données des participants, statistiques quotidiennes |
| Team Chat | Gestion des canaux, messagerie, intégration de chatbot |
| Zoom Phone | Gestion des appels, messagerie vocale, routage des appels |
| Zoom Rooms | Gestion des salles, contrôle des appareils, ordonnancement |
| Webhooks | Notifications d'événements en temps réel pour 100+ types d'événements |
| WebSockets | Streaming d'événements persistant sans endpoints publics |
GraphQL (Bêta) - Requêtes flexibles à endpoint unique à v3/graphql |
|
| AI Companion | Résumés de réunion, transcriptions, contenu généré par l'IA |
| Services IA / Scribe | Transcription de fichiers et d'archives via endpoints authentifiés JWT de plateforme Build |
Prérequis
- Compte Zoom (le niveau gratuit a accès aux APIs avec des limites de débit plus basses)
- Application enregistrée sur Zoom App Marketplace
- Identifiants OAuth (OAuth Server-to-Server ou OAuth User)
- Scopes appropriés pour les endpoints cibles
Besoin d'aide avec l'authentification ? Voir le skill zoom-oauth pour l'implémentation complète du flux OAuth.
Pièges critiques et bonnes pratiques
⚠️ Le type d'application JWT est déprécié
Le type d'application JWT est déprécié. Migrez vers OAuth Server-to-Server. Cela N'affecte PAS les signatures de token JWT utilisées dans Video SDK — uniquement le type d'application "JWT" de la Marketplace pour l'accès à l'API REST.
// ANCIEN (type d'application JWT - DÉPRÉCIÉ)
const token = jwt.sign({ iss: apiKey, exp: expiry }, apiSecret);
// NOUVEAU (OAuth Server-to-Server)
const token = await getServerToServerToken(accountId, clientId, clientSecret);
⚠️ Les règles du mot-clé me
- Applications OAuth au niveau utilisateur : DOIVENT utiliser
meà la place deuserId(sinon : erreur de token invalide) - Applications OAuth Server-to-Server : NE DOIVENT PAS utiliser
me— fournissez leuserIdou l'email réel - Applications OAuth au niveau compte : Peuvent utiliser soit
mesoituserId
⚠️ ID de réunion vs UUID — Double encodage
Les UUIDs qui commencent par / ou contiennent // doivent être double URL-encodés :
// UUID: /abc==
// Encodage simple : %2Fabc%3D%3D
// Double encodage : %252Fabc%253D%253D ← UTILISEZ CECI
const uuid = '/abc==';
const encoded = encodeURIComponent(encodeURIComponent(uuid));
const url = `https://api.zoom.us/v2/meetings/${encoded}`;
⚠️ Formats de temps
yyyy-MM-ddTHH:mm:ssZ— heure UTC (notez le suffixeZ)yyyy-MM-ddTHH:mm:ss— heure locale (pas deZ, utilise le champtimezone)- Certaines APIs de rapport n'acceptent que UTC. Vérifiez la référence API pour chaque endpoint.
⚠️ Les limites de débit sont par compte, pas par application
Toutes les applications sur le même compte Zoom partagent les limites de débit. Une application lourde peut impacter les autres. Surveillez proactivement les en-têtes X-RateLimit-Remaining.
⚠️ Limites quotidiennes par utilisateur
Les opérations de création/mise à jour de réunion/webinaire sont limitées à 100 par jour par utilisateur (réinitialisation à 00:00 UTC). Distribuez les opérations sur différents utilisateurs hôtes lors des opérations en masse.
⚠️ Les URLs de téléchargement nécessitent une authentification et suivent les redirections
Les valeurs download_url des enregistrements nécessitent une authentification par token Bearer et peuvent rediriger. Suivez toujours les redirections :
curl -L -H "Authorization: Bearer ACCESS_TOKEN" "https://zoom.us/rec/download/..."
Utilisez les webhooks au lieu du polling
// À NE PAS FAIRE : Polling toutes les minutes (gaspille le quota API)
setInterval(() => getMeetings(), 60000);
// À FAIRE : Recevez les événements webhook en temps réel
app.post('/webhook', (req, res) => {
if (req.body.event === 'meeting.started') {
handleMeetingStarted(req.body.payload);
}
res.status(200).send();
});
Détails de configuration webhook : Voir le skill zoom-webhooks pour l'implémentation complète des webhooks.
Bibliothèque de documentation complète
Ce skill inclut des guides complets organisés par catégorie :
Concepts fondamentaux
- Architecture API - Design REST, URLs de base, routage régional, mot-clé
me, ID vs UUID, formats de temps - Flux d'authentification - Tous les flux OAuth (S2S, User, PKCE, Device Code)
- Stratégie de limitation de débit - Limites par plan, modèles de retry, mise en file d'attente des requêtes
Exemples complets
- Cycle de vie de la réunion - Flux complet Create → Update → Start → End → Delete avec événements webhook
- Gestion des utilisateurs - CRUD utilisateurs, pagination, opérations en masse
- Pipeline d'enregistrement - Téléchargement d'enregistrements via webhooks + API
- Serveur Webhook - Serveur Express.js avec validation CRC et vérification de signature
- Requêtes GraphQL - Requêtes GraphQL, mutations, pagination par curseur
Dépannage
- Erreurs courantes - Codes d'état HTTP, codes d'erreur Zoom, formats de réponse d'erreur
- Problèmes courants - Limites de débit, refresh de token, pièges de pagination, gotchas
Références (39 fichiers couvrant tous les domaines API Zoom)
APIs principales
- references/meetings.md - CRUD réunions, types, paramètres
- references/users.md - Provisionnement d'utilisateurs, types, scopes
- references/webinars.md - Gestion webinaire, inscrits
- references/recordings.md - Accès aux enregistrements cloud
- references/reports.md - Rapports d'utilisation, analyses
- references/accounts.md - Gestion de compte
Communication
- references/team-chat.md - Messagerie Team Chat
- references/chatbot.md - Chatbots interactifs
- references/phone.md - Zoom Phone
- references/mail.md - Zoom Mail
- references/calendar.md - Zoom Calendar
Infrastructure
- references/rooms.md - Zoom Rooms
- references/scim2.md - APIs de provisionnement SCIM 2.0
- references/rate-limits.md - Détails des limites de débit
- references/qss.md - Quality of Service Subscription
Avancé
- references/graphql.md - API GraphQL (bêta)
- references/ai-companion.md - Fonctionnalités IA
- references/authentication.md - Référence d'authentification
- references/openapi.md - Spécifications OpenAPI, Postman, génération de code
Domaines API supplémentaires
- references/events.md - APIs d'événements et plateforme d'événements
- references/scheduler.md - APIs Zoom Scheduler
- references/tasks.md - APIs Tasks
- references/whiteboard.md - APIs Whiteboard
- references/video-management.md - APIs de gestion vidéo
- references/video-sdk-api.md - APIs REST Video SDK
- references/marketplace-apps.md - Gestion des applications Marketplace
- references/commerce.md - APIs Commerce et facturation
- references/contact-center.md - APIs Contact Center
- references/quality-management.md - APIs de gestion de qualité
- references/workforce-management.md - APIs de gestion de la main-d'œuvre
- references/healthcare.md - APIs Healthcare
- references/auto-dialer.md - APIs Auto dialer
- references/number-management.md - APIs de gestion des numéros
- references/revenue-accelerator.md - APIs Revenue Accelerator
- references/virtual-agent.md - APIs Virtual Agent
- references/cobrowse-sdk-api.md - APIs Cobrowse SDK
- references/crc.md - APIs Cloud Room Connector
- references/clips.md - APIs Clips
- references/zoom-docs.md - Docs Zoom et références source
Exemples de dépôts
Officiels (par Zoom)
| Type | Repository |
|---|---|
| Exemple OAuth | oauth-sample-app |
| Starter S2S OAuth | server-to-server-oauth-starter-api |
| OAuth utilisateur | user-level-oauth-starter |
| Token S2S | server-to-server-oauth-token |
| Librairie Rivet | rivet-javascript |
| Exemple WebSocket | websocket-js-sample |
| Exemple Webhook | webhook-sample-node.js |
| S2S Python | server-to-server-python-sample |
Ressources
- Référence API : https://developers.zoom.us/api-hub/
- Terrain de jeu GraphQL : https://nws.zoom.us/graphql/playground
- Collection Postman : https://marketplace.zoom.us/docs/api-reference/postman
- Forum développeurs : https://devforum.zoom.us/
- Changelog : https://developers.zoom.us/changelog/
- Statut : https://status.zoom.us/
Besoin d'aide ? Commencez par la section Index intégré ci-dessous pour une navigation complète.
Index intégré
Cette section a été migrée de SKILL.md.
Chemin de démarrage rapide
Si vous êtes nouveau sur l'API REST Zoom, suivez cet ordre :
-
Exécutez d'abord les vérifications préalables → RUNBOOK.md
-
Comprenez la conception de l'API → concepts/api-architecture.md
- URLs de base, endpoints régionaux, règles du mot-clé
me - ID de réunion vs UUID, double-encodage, formats de temps
- URLs de base, endpoints régionaux, règles du mot-clé
-
Configurez l'authentification → concepts/authentication-flows.md
- OAuth Server-to-Server (automatisation backend)
- OAuth User avec PKCE (applications orientées utilisateur)
- Référence croisée : zoom-oauth
-
Créez votre première réunion → examples/meeting-lifecycle.md
- CRUD complet avec exemples curl et Node.js
- Intégration d'événements webhook
-
Gérez les limites de débit → concepts/rate-limiting-strategy.md
- Limites basées sur le plan, modèles de retry, mise en file d'attente des requêtes
-
Configurez les webhooks → examples/webhook-server.md
- Validation CRC, vérification de signature, gestion d'événements
-
Dépannez les problèmes → troubleshooting/common-issues.md
- Refresh de token, pièges de pagination, gotchas courants
Structure de la documentation
rest-api/
├── SKILL.md # Aperçu du skill principal + démarrage rapide
├── SKILL.md # Ce fichier - guide de navigation
│
├── concepts/ # Concepts architecturaux fondamentaux
│ ├── api-architecture.md # Design REST, URLs, IDs, formats de temps
│ ├── authentication-flows.md # Flux OAuth (S2S, User, PKCE, Device)
│ └── rate-limiting-strategy.md # Limites par plan, retry, mise en file
│
├── examples/ # Code complet fonctionnel
│ ├── meeting-lifecycle.md # Create→Update→Start→End→Delete
│ ├── user-management.md # CRUD utilisateurs, pagination, ops en masse
│ ├── recording-pipeline.md # Téléchargement d'enregistrements via webhooks
│ ├── webhook-server.md # Express.js CRC + vérification de signature
│ └── graphql-queries.md # Requêtes GraphQL, mutations, pagination
│
├── troubleshooting/ # Résolution de problèmes
│ ├── common-errors.md # Codes HTTP, table des codes d'erreur Zoom
│ └── common-issues.md # Limites de débit, tokens, pièges de pagination
│
└── references/ # 39 fichiers de référence spécifiques au domaine
├── authentication.md # Référence des méthodes d'authentification
├── meetings.md # Endpoints de réunions
├── users.md # Endpoints de gestion d'utilisateurs
├── webinars.md # Endpoints webinaire
├── recordings.md # Endpoints d'enregistrement cloud
├── reports.md # Rapports et analyses
├── accounts.md # Gestion de compte
├── rate-limits.md # Détails des limites de débit
├── graphql.md # API GraphQL (bêta)
├── zoom-team-chat.md # Messagerie Team Chat
├── chatbot.md # Intégration de chatbot
├── phone.md # Zoom Phone
├── rooms.md # Zoom Rooms
├── calendar.md # Zoom Calendar
├── mail.md # Zoom Mail
├── ai-companion.md # Fonctionnalités IA
├── openapi.md # Spécifications OpenAPI
├── 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 # Gestion des applications
├── zoom-video-sdk-api.md # REST Video SDK
└── ... (39 fichiers au total)
Par cas d'usage
Je veux créer et gérer des réunions
- Architecture API - URL de base, formats de temps
- Cycle de vie de la réunion - CRUD complet + événements webhook
- Référence des réunions - Tous les endpoints, types, paramètres
Je veux gérer les utilisateurs par programmation
- Gestion des utilisateurs - CRUD, pagination, ops en masse
- Référence des utilisateurs - Endpoints, types d'utilisateurs, scopes
Je veux télécharger les enregistrements automatiquement
- Pipeline d'enregistrement - Téléchargements déclenchés par webhook
- Référence des enregistrements - Types de fichiers, authentification de téléchargement
Je veux recevoir des événements en temps réel
- Serveur Webhook - Validation CRC, vérification de signature
- Référence croisée : zoom-webhooks pour la documentation complète des webhooks
- Référence croisée : zoom-websockets pour les événements WebSocket
Je veux utiliser GraphQL à la place de REST
- Requêtes GraphQL - Requêtes, mutations, pagination
- Référence GraphQL - Entités disponibles, scopes, limites de débit
Je veux configurer l'authentification
- Flux d'authentification - Toutes les méthodes OAuth
- Référence croisée : zoom-oauth pour l'implémentation OAuth complète
Je suis en train de heurter les limites de débit
- Stratégie de limitation de débit - Limites par plan, stratégies
- Référence des limites de débit - Tableaux détaillés
- Problèmes courants - Solutions pratiques
J'obtiens des erreurs
- Erreurs courantes - Tables de codes d'erreur
- Problèmes courants - Flux de diagnostic
Je veux construire des webinaires
- Référence des webinaires - Endpoints, types, inscrits
- Cycle de vie de la réunion - Des modèles similaires s'appliquent
Je veux intégrer Zoom Phone
- Référence Phone - Endpoints API Phone
- Stratégie de limitation de débit - Limites de débit séparées pour Phone
Documents les plus critiques
1. Architecture API (FONDATION)
Connaissances essentielles avant d'effectuer tout appel API :
- URLs de base et endpoints régionaux
- Règles du mot-clé
me(différentes par type d'application !) - Double-encodage ID de réunion vs UUID
- Formats de temps ISO 8601 (UTC vs local)
- Authentification des URLs de téléchargement
2. Stratégie de limitation de débit (PROBLÈME DE PRODUCTION LE PLUS COURANT)
concepts/rate-limiting-strategy.md
Les limites de débit sont par compte, partagées entre toutes les applications :
- Gratuit : 4/sec Light, 2/sec Medium, 1/sec Heavy
- Pro : 30/sec Light, 20/sec Medium, 10/sec Heavy
- Business+ : 80/sec Light, 60/sec Medium, 40/sec Heavy
- Par utilisateur : 100 créations/mises à jour de réunions par jour
3. Cycle de vie de la réunion (TÂCHE LA PLUS COURANTE)
CRUD complet avec intégration webhook — le modèle que la plupart des développeurs ont besoin en premier.
Apprentissages clés
Découvertes critiques :
-
Le type d'application JWT est déprécié — utilisez OAuth Server-to-Server
- Le type d'application JWT sur la Marketplace est déprécié, PAS les signatures de token JWT
- Voir : Flux d'authentification
-
Le mot-clé
mese comporte différemment selon le type d'application- OAuth User : DOIT utiliser
me - OAuth S2S : NE DOIT PAS utiliser
me - Voir : Architecture API
- OAuth User : DOIT utiliser
-
La limitation de débit est nuancée (ne supposez pas une règle globale unique)
- Les limites peuvent varier selon l'endpoint et être appliquées au niveau du compte/application/utilisateur
- Traitez les quotas comme potentiellement partagés sur votre compte et implémentez un backoff
- Surveillez les en-têtes de réponse des limites de débit (par exemple
X-RateLimit-Remaining) - Voir : Stratégie de limitation de débit
-
100 créations de réunions par utilisateur par jour
- Ceci est une limite stricte par utilisateur, non liée aux limites de débit
- Distribuez entre les utilisateurs hôtes pour les opérations en masse
- Voir : Stratégie de limitation de débit
-
Le double-encodage UUID est requis pour certains UUIDs
- Les UUIDs commençant par
/ou contenant//doivent être double-encodés - Voir : Architecture API
- Les UUIDs commençant par
-
Pagination : utilisez
next_page_token, paspage_numberpage_numberest un héritage et est progressivement suppriménext_page_tokenest l'approche recommandée- Voir : Problèmes courants
-
GraphQL est à
/v3/graphql, pas/v2/- Endpoint unique, pagination basée sur curseur
- Les limites de débit s'appliquent par champ (chaque champ = un équivalent REST)
- Voir : Requêtes GraphQL
Référence rapide
"401 Unauthorized"
→ Flux d'authentification - Token expiré ou mauvais scopes
"429 Too Many Requests"
→ Stratégie de limitation de débit - Vérifiez les en-têtes pour le temps de réinitialisation
"Invalid token" lors de l'utilisation de userId
→ Architecture API - Les applications OAuth User doivent utiliser me
"Comment paginer les résultats ?"
→ Problèmes courants - Utilisez next_page_token
"Webhooks non reçus"
→ Serveur Webhook - Validation CRC requise
"Téléchargement d'enregistrement échoue"
→ Pipeline d'enregistrement - Authentification Bearer + suivez les redirections
"Comment créer une réunion ?"
→ Cycle de vie de la réunion - Exemples complets fonctionnels
Skills connexes
| Skill | Utiliser quand |
|---|---|
| zoom-oauth | Implémentation des flux OAuth, gestion des tokens |
| zoom-webhooks | Implémentation approfondie des webhooks, catalogue d'événements |
| zoom-websockets | Streaming d'événements WebSocket |
| zoom-general | Modèles multi-produits, repos communautaires |
Basé sur l'API REST Zoom v2 (actuelle) et GraphQL v3 (bêta)
Variables d'environnement
- Voir references/environment-variables.md pour les clés
.envstandardisées et où trouver chaque valeur.