# zoom-video-sdk > Zoom Video SDK for building custom video experiences (not Zoom meetings) on the web. Use when you want full control over the video UI and experience. - Author: Tan Chun Siong - Repository: tanchunsiong/agent-skills - Version: 20260206220912 - Stars: 1 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/tanchunsiong/agent-skills - Web: https://mule.run/skillshub/@@tanchunsiong/agent-skills~zoom-video-sdk:20260206220912 --- --- name: zoom-video-sdk description: | Zoom Video SDK for building custom video experiences (not Zoom meetings) on the web. Use when you want full control over the video UI and experience. --- # Zoom Video SDK (Web) Build custom video experiences powered by Zoom's infrastructure. ## Meeting SDK vs Video SDK | Feature | Meeting SDK | Video SDK | |---------|-------------|-----------| | UI | Default Zoom UI or Custom UI | **Fully custom UI** (you build it) | | Experience | Zoom meetings | Video sessions | | Branding | Limited customization | **Full branding control** | | Features | Full Zoom features | Core video features | ## UI Options (Web) Video SDK gives you **full control over the UI**: | Option | Description | |--------|-------------| | **UI Toolkit** | Pre-built React components (low-code) | | **Custom UI** | Build your own UI using the SDK APIs | ## Prerequisites - Zoom Video SDK credentials from Marketplace - SDK Key and Secret - Web development environment > **Need help with OAuth or signatures?** See the **[zoom-oauth](/zoom-oauth/SKILL.md)** skill for authentication flows. ## Quick Start (Web) ### NPM Usage (Bundler like Vite/Webpack) ```javascript import ZoomVideo from '@zoom/videosdk'; const client = ZoomVideo.createClient(); await client.init('en-US', 'Global', { patchJsMedia: true }); await client.join(topic, signature, userName, password); // IMPORTANT: getMediaStream() ONLY works AFTER join() const stream = client.getMediaStream(); await stream.startVideo(); await stream.startAudio(); ``` ### CDN Usage (No Bundler) > **WARNING: Ad blockers block `source.zoom.us`**. Self-host the SDK to avoid issues. ```bash # Download SDK locally curl "https://source.zoom.us/videosdk/zoom-video-1.12.0.min.js" -o js/zoom-video-sdk.min.js ``` ```html ``` ```javascript // CDN exports as WebVideoSDK, NOT ZoomVideo // Must use .default property const ZoomVideo = WebVideoSDK.default; const client = ZoomVideo.createClient(); await client.init('en-US', 'Global', { patchJsMedia: true }); await client.join(topic, signature, userName, password); // IMPORTANT: getMediaStream() ONLY works AFTER join() const stream = client.getMediaStream(); await stream.startVideo(); await stream.startAudio(); ``` ### ES Module with CDN (Race Condition Fix) When using `