Generated banner for Build Zoom Video SDK App
Generated logo for Build Zoom Video SDK App

Build Zoom Video SDK App

OpenAIOfficialCreated by ZoomDistributed by OpenAI

  • Skill
  • Tool integration
  • Software development
  • MIT
  • No issues found

From the author

Use when using Video SDK.
— the description by Zoom

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

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/openai/build-zoom-video-sdk-app/download
  2. Unzip 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

  1. Confirm product fit: Video SDK is for custom sessions with app-owned UX and lifecycle.

  2. Choose the target platform: web, Android, iOS, macOS, Windows, Linux, Flutter, React Native, Unity, or UI Toolkit.

  3. Validate auth: generate Video SDK session tokens server-side and keep SDK credentials out of client code.

  4. Implement join, media permissions, audio/video publish-subscribe, screen share, chat, and leave before advanced media features.

  5. Add custom layouts, raw media, recording, live transcription, or storage integrations only after the session lifecycle is stable.

  6. Debug by isolating token generation, SDK version, browser isolation, platform permissions, media device behavior, and entitlement limits.

References

Files

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

ClaimDescription
app_keyYour SDK Key
tpcTopic (session name) - any string you choose
role_type0 = participant, 1 = host
user_identity(Optional) Unique user identifier
iatIssued at timestamp
expExpiration timestamp

Note on tpc (Topic):

  • Can be any string (e.g., "room-123", "consultation-abc", "game-lobby-5")

  • All users joining with the same tpc value join the same session

  • Session 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_typeFirst to JoinSubsequent Joiners
1HostCo-host
0ParticipantParticipant
  • Only host or co-host can call client.leave(true) to end session for all

  • A participant calling leave(true) only leaves themselves

  • No need for makeHost() or makeManager() 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:

  1. Bot joins with role_type: 1 → becomes host (creates session)

  2. User A joins with role_type: 1 → becomes co-host

  3. Bot leaves → User A remains as co-host, can end session

  4. 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: participant

Signature Generation Best Practices

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:

  • exp is only 10 seconds after generation (short-lived for security)

  • iat is set 2 hours in the past to satisfy Zoom's requirement that exp - iat >= 2 hours

  • Token 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

DoDon't
Generate signatures server-sideExpose SDK Secret in client code
Use short expiry timesUse long-lived tokens
Validate user before generatingGenerate 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