Build Zoom Video SDK App
OpenAIOfficialCreated by ZoomDistributed by OpenAI
- Skill
- Tool integration
- Software development
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured workflow for developers building custom video applications. It emphasizes the distinction between the Video SDK and the Meeting SDK, focusing on app-owned user experiences, server-side authentication via JWTs, and the session lifecycle. It covers platform selection, secure token generation, and implementation steps for media and session management.
What it does
- Guides developers through the Video SDK integration lifecycle.
- Provides patterns for secure server-side JWT signature generation.
- Defines the session creation process based on topic strings.
- Outlines the role-based access control for hosts and participants.
- Offers troubleshooting steps for common SDK integration issues.
- Supports multiple platforms including web, mobile, and desktop.
When to use it
- When building a custom video experience with a unique UI.
- When you need full control over the session lifecycle and media.
- When implementing video features that do not require standard Zoom meeting controls.
- When setting up server-side authentication for video sessions.
Advantages
- Enables fully branded, custom-built video interfaces.
- Decouples session management from standard Zoom meeting workflows.
- Ensures security by mandating server-side token generation.
- Provides a clear path for scaling from basic connectivity to advanced media features.
Usage examples
- “How do I authenticate a user for a Video SDK session?”
- The agent explains the JWT structure, provides a Node.js example for generating a signature server-side, and emphasizes keeping the SDK Secret secure.
- “What is the difference between a host and a participant in the Video SDK?”
- The agent clarifies that roles are defined by the role_type claim in the JWT, with role 1 acting as host/co-host and role 0 as a participant.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/openai/build-zoom-video-sdk-app/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip build-zoom-video-sdk-app.zip -d .agents/skills
Documentation by Zoom
Build Zoom Video SDK App
Use this skill when the user needs a custom video session rather than a real Zoom meeting. If the user needs meeting numbers, waiting rooms, hosts, or normal Zoom meeting controls, route to Meeting SDK.
Workflow
Confirm product fit: Video SDK is for custom sessions with app-owned UX and lifecycle.
Choose the target platform: web, Android, iOS, macOS, Windows, Linux, Flutter, React Native, Unity, or UI Toolkit.
Validate auth: generate Video SDK session tokens server-side and keep SDK credentials out of client code.
Implement join, media permissions, audio/video publish-subscribe, screen share, chat, and leave before advanced media features.
Add custom layouts, raw media, recording, live transcription, or storage integrations only after the session lifecycle is stable.
Debug by isolating token generation, SDK version, browser isolation, platform permissions, media device behavior, and entitlement limits.
References
Full preserved guide: references/full-guide.md
Web: web/SKILL.md
Android: android/SKILL.md
iOS: ios/SKILL.md
Windows: windows/SKILL.md
Linux: linux/SKILL.md
UI Toolkit: ../ui-toolkit/SKILL.md
Session lifecycle: references/session-lifecycle.md
Files
- ATTRIBUTION.mdAdded by AutoGineer880 B
- LICENSELicence file added by AutoGineer1.1 KiB
- RUNBOOK.md2.4 KiB
- SKILL.md1.5 KiB
- agents/openai.yaml142 B
- references/authorization.md3.9 KiB
- references/environment-variables.md1.3 KiB
- references/forum-top-questions.md1.9 KiB
- references/full-guide.md13.2 KiB
- references/licensing-and-entitlements.md759 B
- references/session-lifecycle.md958 B
- references/token-contract-test-spec.md1.6 KiB
- references/triage-intake.md1.2 KiB
- references/troubleshooting.md1.8 KiB
- references/ui-toolkit.md5.6 KiB
references/authorization.md
Video SDK - Authorization
Generate JWT signatures for Video SDK authentication.
Overview
Video SDK uses JWT (JSON Web Token) signatures to authenticate users joining video sessions. Signatures must be generated server-side to protect your SDK Secret.
Important: Unlike Zoom Meetings, Video SDK sessions are NOT pre-created. The tpc (topic) in your JWT can be any string you choose - the session is created when the first participant joins with that topic.
Prerequisites
Video SDK Key and Secret from Marketplace (sign-in required)
Server-side code to generate signatures
JWT Structure
| Claim | Description |
|---|---|
app_key | Your SDK Key |
tpc | Topic (session name) - any string you choose |
role_type | 0 = participant, 1 = host |
user_identity | (Optional) Unique user identifier |
iat | Issued at timestamp |
exp | Expiration timestamp |
Note on tpc (Topic):
Can be any string (e.g.,
"room-123","consultation-abc","game-lobby-5")All users joining with the same
tpcvalue join the same sessionSession is created automatically when first user joins
No API call needed to create the session beforehand
Host and Co-Host via roleType
In Video SDK, host/co-host status is determined entirely by role_type in the JWT — not by runtime API calls.
| role_type | First to Join | Subsequent Joiners |
|---|---|---|
| 1 | Host | Co-host |
| 0 | Participant | Participant |
Only host or co-host can call
client.leave(true)to end session for allA participant calling
leave(true)only leaves themselvesNo need for
makeHost()ormakeManager()API calls — use JWT roleType instead
Session Creation Pattern (Bot as Host)
For scenarios where you need a bot to create and manage the session:
Bot joins with
role_type: 1→ becomes host (creates session)User A joins with
role_type: 1→ becomes co-hostBot leaves → User A remains as co-host, can end session
User B joins with
role_type: 0→ participant
This pattern avoids race conditions from runtime host assignment.
// JWT generation examples
generateJWT(key, secret, sessionName, 1, 'SessionBot'); // Bot: host
generateJWT(key, secret, sessionName, 1, 'Advisor'); // Advisor: co-host
generateJWT(key, secret, sessionName, 0, 'Customer'); // Customer: participantSignature Generation Best Practices
Short-Lived Tokens (Recommended)
For security, generate tokens with short expiry:
const iat = Math.floor(Date.now() / 1000) - 7200; // 2 hours in the past
const exp = Math.floor(Date.now() / 1000) + 10; // 10 seconds from now
const payload = {
app_key: SDK_KEY,
tpc: topic,
role_type: role,
user_identity: userIdentity,
iat: iat,
exp: exp
};Why this works:
expis only 10 seconds after generation (short-lived for security)iatis set 2 hours in the past to satisfy Zoom's requirement thatexp - iat >= 2 hoursToken is generated just before joining, so 10 second window is sufficient
Server-Side Example (Node.js)
const jwt = require('jsonwebtoken');
function generateSignature(sdkKey, sdkSecret, topic, role, userIdentity) {
const iat = Math.floor(Date.now() / 1000) - 7200; // 2 hours ago
const exp = Math.floor(Date.now() / 1000) + 10; // 10 seconds from now
const payload = {
app_key: sdkKey,
tpc: topic,
role_type: role,
user_identity: userIdentity || '',
iat: iat,
exp: exp
};
return jwt.sign(payload, sdkSecret, { algorithm: 'HS256' });
}Security Guidelines
| Do | Don't |
|---|---|
| Generate signatures server-side | Expose SDK Secret in client code |
| Use short expiry times | Use long-lived tokens |
| Validate user before generating | Generate for unauthenticated users |
Resources
Requirements and compatibility
Written for: OpenAI Codex
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Zoom
- Publisher
- OpenAI (Official)
- Distributed by
- OpenAI
- Source
- openai/plugins · plugins/zoom/skills/video-sdk · commit d420d13
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from plugins/zoom/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Zoom or OpenAI.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download build-zoom-video-sdk-app.zip