# 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 `