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://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/ui-toolkit.md

Video SDK UI Toolkit

Pre-built, low-code video chat UI powered by Zoom Video SDK.

Overview

The Video SDK UI Toolkit provides ready-to-use video components so you don't have to build the UI from scratch. Available for Web, iOS, and Android.

Platform Availability

PlatformUI ToolkitPackage/Repo
WebYes@zoom/videosdk-zoom-ui-toolkit
iOSYeszoom/videosdk-zoom-ui-toolkit-ios
AndroidYeszoom/videosdk-uitoolkit-android-sample
React NativeNoUse SDK + custom UI
FlutterNoUse SDK + custom UI

Web Installation

npm
npm install @zoom/videosdk-zoom-ui-toolkit --save
import uitoolkit from "@zoom/videosdk-zoom-ui-toolkit";
import "@zoom/videosdk-ui-toolkit/dist/videosdk-zoom-ui-toolkit.css";
CDN
<link rel="stylesheet" href="https://source.zoom.us/uitoolkit/2.3.5/videosdk-zoom-ui-toolkit.css" />
<script src="https://source.zoom.us/uitoolkit/2.3.5/videosdk-zoom-ui-toolkit.min.umd.js"></script>
<script>
  const uitoolkit = window.UIToolkit;
</script>
Angular

Add CSS to angular.json:

"styles": [
  "node_modules/@zoom/videosdk-ui-toolkit/dist/videosdk-zoom-ui-toolkit.css"
]

Quick Start

<div id="sessionContainer"></div>
import uitoolkit from "@zoom/videosdk-zoom-ui-toolkit";
import "@zoom/videosdk-ui-toolkit/dist/videosdk-zoom-ui-toolkit.css";

const config = {
  videoSDKJWT: "your-jwt-token",
  sessionName: "SessionA",
  userName: "UserA",
  sessionPasscode: "abc123",
  featuresOptions: {
    preview: true,
    video: true,
    audio: true,
    share: true,
    chat: true,
    users: true,
    settings: true,
    leave: true,
  },
};

const sessionContainer = document.getElementById("sessionContainer");
uitoolkit.joinSession(sessionContainer, config);

Feature Components

Toggle components on/off via featuresOptions:

ComponentDescriptionPaid Plan?
previewPre-session device selection, virtual backgroundNo
videoVideo layout for sending/receivingNo
audioAudio button and controlsNo
shareScreen sharingNo
chatIn-session chatNo
usersParticipant listNo
settingsDevice config, virtual background, statsNo
viewModeGrid/speaker view optionsNo
leaveLeave/end session buttonNo
inviteInvite via linkNo
themeTheme color selectionNo
feedbackSession feedback formNo
troubleshootZoom Probe SDK troubleshootingNo
subsessionBreakout rooms buttonNo
playbackMedia file playbackNo
recordingCloud recordingYes
phoneJoin by phone audioYes
captionLive translationsYes

React Example

import uitoolkit from "@zoom/videosdk-zoom-ui-toolkit";
import "@zoom/videosdk-ui-toolkit/dist/videosdk-zoom-ui-toolkit.css";
import { useEffect, useRef } from "react";

function VideoSession({ jwt, sessionName, userName }) {
  const containerRef = useRef(null);

  useEffect(() => {
    const config = {
      videoSDKJWT: jwt,
      sessionName,
      userName,
      sessionPasscode: "abc123",
      featuresOptions: {
        video: true,
        audio: true,
        chat: true,
        users: true,
        leave: true,
      },
    };

    if (containerRef.current) {
      uitoolkit.joinSession(containerRef.current, config);
    }

    return () => {
      if (containerRef.current) {
        uitoolkit.closeSession(containerRef.current);
      }
    };
  }, [jwt, sessionName, userName]);

  return <div ref={containerRef} style={{ height: '600px' }} />;
}

Event Listeners

// Session events
uitoolkit.onSessionJoined(() => {
  console.log("Session joined");
});

uitoolkit.onSessionClosed(() => {
  console.log("Session closed");
});

// Unsubscribe
uitoolkit.offSessionJoined(callback);
uitoolkit.offSessionClosed(callback);

Component Visibility Control

// Hide all components
uitoolkit.hideAllComponents();

// Show/hide individual components
uitoolkit.showControlsComponent(container);
uitoolkit.hideControlsComponent(container);

uitoolkit.showChatComponent(container);
uitoolkit.hideChatComponent(container);

uitoolkit.showUsersComponent(container);
uitoolkit.hideUsersComponent(container);

uitoolkit.showSettingsComponent(container);
uitoolkit.hideSettingsComponent(container);

Close Session

uitoolkit.closeSession(sessionContainer);

Live Demo

Sample Repositories

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