Build Zoom Meeting 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 integrating the Zoom Meeting SDK into their applications. It covers the lifecycle of a meeting integration, from initial product validation and platform selection to implementation and debugging. It emphasizes the distinction between the Meeting SDK, which is designed for human-led meetings, and other Zoom SDKs, while providing guidance on handling signatures, user identity, and meeting controls.
What it does
- Guides developers through the integration of the Zoom Meeting SDK for web, mobile, and desktop platforms.
- Provides a systematic workflow for joining and starting meetings.
- Offers troubleshooting strategies for common issues like signature generation and permission errors.
- Includes references for platform-specific implementations and AI Companion feature management.
- Helps validate meeting parameters such as meeting numbers, passwords, and ZAK tokens.
When to use it
- When you need to embed real Zoom meetings into your application.
- When you are setting up a new Zoom Meeting SDK project for web, Android, iOS, or desktop.
- When you encounter errors during the meeting join flow or signature validation.
- When you need to manage AI Companion features within an embedded meeting context.
Advantages
- Provides a clear, step-by-step path for successful SDK integration.
- Centralizes access to platform-specific documentation and troubleshooting resources.
- Helps distinguish between different Zoom SDK capabilities to ensure the right tool is used.
- Includes a dedicated signature playbook to resolve common authentication failures.
Usage examples
- “How do I start integrating the Zoom Meeting SDK for an Android app?”
- The agent will guide you through verifying your environment, choosing the default UI for initial testing, and using the Android-specific reference pointers to resolve dependencies.
- “I am getting an invalid signature error when trying to join a meeting.”
- The agent will direct you to the signature playbook to verify your SDK signature generation logic and parameter matching.
- “Can I use the Meeting SDK to build an automated AI notetaker bot?”
- The agent will clarify that the Meeting SDK is for human use cases only and recommend using rtms for automated AI processing.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/openai/build-zoom-meeting-sdk-app/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip build-zoom-meeting-sdk-app.zip -d .agents/skills
Documentation by Zoom
Build Zoom Meeting SDK App
Use this skill when the user needs to join, start, or embed real Zoom meetings. If the user wants a fully custom non-meeting video experience, route to build-zoom-video-sdk-app.
Workflow
Confirm product fit: Meeting SDK joins real Zoom meetings; Video SDK creates custom sessions; Zoom Apps SDK runs inside the Zoom client.
Choose the target platform: web, Android, iOS, macOS, Windows, Electron, React Native, Unreal, or Linux bot.
Validate the join or start path: meeting number, password, SDK signature, role, ZAK when hosting, waiting room behavior, and user identity.
Implement the smallest join flow first, then add meeting controls, custom UI, raw data, recording, or bot behavior.
Debug by isolating signature generation, SDK version, platform permissions, meeting settings, waiting room, raw data entitlement, and network constraints.
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 bots: linux/SKILL.md
Signature playbook: references/signature-playbook.md
Troubleshooting: references/troubleshooting.md
Files
- ATTRIBUTION.mdAdded by AutoGineer884 B
- LICENSELicence file added by AutoGineer1.1 KiB
- RUNBOOK.md2.6 KiB
- SKILL.md1.4 KiB
- agents/openai.yaml146 B
- references/ai-companion.md6.4 KiB
- references/android.md754 B
- references/authorization.md2.3 KiB
- references/bot-authentication.md10.5 KiB
- references/breakout-rooms.md11.8 KiB
- references/environment-variables.md1.4 KiB
- references/forum-top-questions.md3.9 KiB
- references/full-guide.md10.4 KiB
- references/ios.md919 B
- references/macos.md599 B
- references/multiple-meetings.md964 B
- references/signature-playbook.md1.4 KiB
- references/triage-intake.md1.9 KiB
- references/troubleshooting.md4.1 KiB
- references/unreal.md732 B
- references/webinars.md7.9 KiB
references/full-guide.md
/build-zoom-meeting-sdk-app
Background reference for embedded Zoom meetings across web, mobile, desktop, and Linux bot environments. Prefer build-zoom-meeting-app or build-zoom-bot first, then route here for platform detail.
Zoom Meeting SDK
Embed the full Zoom meeting experience into web, mobile, desktop, and headless integrations.
Hard Routing Guardrail (Read First)
If the user asks to embed/join meetings inside their app UI, route to Meeting SDK implementation.
Do not switch to REST-only meeting link flow unless the user explicitly asks for meeting resource management or browser
join_urllinks.Meeting SDK join path requires SDK signature + SDK join call; REST
join_urlis not a Meeting SDK join payload.
Prerequisites
Zoom app with Meeting SDK credentials
SDK Key and Secret from Marketplace
Platform-specific development environment (Web, Android, iOS, macOS, Unreal, Electron, Linux, or Windows)
Need help with OAuth or signatures? See the zoom-oauth skill for authentication flows.
Need pre-join diagnostics on web? Use probe-sdk before Meeting SDK init/join to gate low-readiness devices/networks.
Start troubleshooting fast: Use the 5-Minute Runbook before deep debugging.
Quick Start (Web - Client View via CDN)
<script src="https://source.zoom.us/3.1.6/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/3.1.6/zoom-meeting-3.1.6.min.js"></script>
<script>
// CDN provides ZoomMtg (Client View - full page)
// For ZoomMtgEmbedded (Component View), use npm instead
ZoomMtg.preLoadWasm();
ZoomMtg.prepareWebSDK();
ZoomMtg.init({
leaveUrl: window.location.href,
patchJsMedia: true,
disableCORP: !window.crossOriginIsolated,
success: function() {
ZoomMtg.join({
sdkKey: 'YOUR_SDK_KEY',
signature: 'YOUR_SIGNATURE', // Generate server-side!
meetingNumber: 'MEETING_NUMBER',
userName: 'User Name',
passWord: '', // Note: camelCase with capital W
success: function(res) { console.log('Joined'); },
error: function(err) { console.error(err); }
});
},
error: function(err) { console.error(err); }
});
</script>Critical Notes (Web)
1. CDN vs npm - Different APIs!
| Distribution | Global Object | View Type | API Style |
|---|---|---|---|
CDN (zoom-meeting-{ver}.min.js) | ZoomMtg | Client View (full-page) | Callbacks |
npm (@zoom/meetingsdk) | ZoomMtgEmbedded | Component View (embeddable) | Promises |
2. Backend Required for Production
Never expose SDK Secret in client code. Generate signatures server-side:
// server.js (Node.js example)
const KJUR = require('jsrsasign');
app.post('/api/signature', (req, res) => {
const { meetingNumber, role } = req.body;
const iat = Math.floor(Date.now() / 1000) - 30;
const exp = iat + 60 * 60 * 2;
const header = { alg: 'HS256', typ: 'JWT' };
const payload = {
sdkKey: process.env.ZOOM_SDK_KEY,
mn: String(meetingNumber).replace(/\D/g, ''),
role: parseInt(role, 10),
iat, exp, tokenExp: exp
};
const signature = KJUR.jws.JWS.sign('HS256',
JSON.stringify(header),
JSON.stringify(payload),
process.env.ZOOM_SDK_SECRET
);
res.json({ signature, sdkKey: process.env.ZOOM_SDK_KEY });
});3. CSS Conflicts - Avoid Global Resets
Global * { margin: 0; } breaks Zoom's UI. Scope your styles:
/* BAD */
* { margin: 0; padding: 0; }
/* GOOD */
.your-app, .your-app * { box-sizing: border-box; }4. Client View Toolbar Cropping Fix
If toolbar falls off screen, scale down the Zoom UI:
#zmmtg-root {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
/* Critical for SPAs (React/Next/etc): ensure Zoom UI isn't behind your app shell/overlays. */
z-index: 9999 !important;
transform: scale(0.95) !important;
transform-origin: top center !important;
}5. Hide Your App When Meeting Starts
Client View takes over full page. Hide your UI:
// In ZoomMtg.init success callback:
document.documentElement.classList.add('meeting-active');
document.body.classList.add('meeting-active');body.meeting-active .your-app { display: none !important; }
body.meeting-active { background: #000 !important; }UI Options (Web)
Meeting SDK provides Zoom's UI with customization options:
| View | Description |
|---|---|
| Component View | Extractable, customizable UI - embed meeting in a div |
| Client View | Full-page Zoom UI experience |
Note: Unlike Video SDK where you build the UI from scratch, Meeting SDK uses Zoom's UI as the base with customization on top.
Key Concepts
| Concept | Description |
|---|---|
| SDK Key/Secret | Credentials from Marketplace |
| Signature | JWT signed with SDK Secret |
| Component View | Extractable, customizable UI (Web) |
| Client View | Full-page Zoom UI (Web) |
Detailed References
Platform Guides
android/SKILL.md - Android SDK (default/custom UI, join/start/auth lifecycle, mobile integration)
android/references/android-reference-map.md - Android API surface map and drift watchpoints
ios/SKILL.md - iOS SDK (default/custom UI, join/start/auth lifecycle, mobile integration)
ios/references/ios-reference-map.md - iOS API surface map and drift watchpoints
macos/SKILL.md - macOS SDK (desktop default/custom UI, service controllers, host flows)
macos/references/macos-reference-map.md - macOS API surface map and drift watchpoints
unreal/SKILL.md - Unreal Engine wrapper (C++/Blueprint wrapper behavior and SDK mapping)
unreal/references/unreal-reference-map.md - Unreal wrapper reference map and version-lag notes
references/android.md - Android pointer doc for fast routing from broad Meeting SDK queries
references/ios.md - iOS pointer doc for fast routing from broad Meeting SDK queries
references/macos.md - macOS pointer doc for fast routing from broad Meeting SDK queries
references/unreal.md - Unreal pointer doc for fast routing from broad Meeting SDK queries
linux/SKILL.md - Linux SDK headless bot skill entrypoint
linux/linux.md - Linux SDK (C++ headless bots, raw media access)
linux/references/linux-reference.md - Linux dependencies, Docker, troubleshooting
react-native/SKILL.md - React Native SDK (iOS/Android wrapper, join/start flows, bridge setup)
react-native/SKILL.md - React Native complete navigation
electron/SKILL.md - Electron SDK (desktop wrapper, auth/join flows, module controllers, raw data)
electron/SKILL.md - Electron complete navigation
windows/SKILL.md - Windows SDK (C++ desktop applications, raw media access)
windows/references/windows-reference.md - Windows dependencies, Visual Studio setup, troubleshooting
web/references/web.md - Web SDK (Component + Client View)
web/references/web-tracking-id.md - Tracking ID configuration
Features
references/authorization.md - SDK JWT generation
references/bot-authentication.md - ZAK vs OBF vs JWT tokens for bots
references/breakout-rooms.md - Programmatic breakout room management
references/ai-companion.md - AI Companion controls in meetings
references/webinars.md - Webinar SDK features
references/forum-top-questions.md - Common forum question patterns (what to cover)
references/triage-intake.md - What to ask first (turn vague reports into answers)
references/signature-playbook.md - Signature/root-cause playbook
references/multiple-meetings.md - Joining multiple meetings / multiple instances
references/troubleshooting.md - Common issues and solutions
Sample Repositories
Official (by Zoom)
| Type | Repository | Stars |
|---|---|---|
| Linux Headless | meetingsdk-headless-linux-sample | 4 |
| Linux Raw Data | meetingsdk-linux-raw-recording-sample | 0 |
| Web | meetingsdk-web-sample | 643 |
| Web NPM | meetingsdk-web | 324 |
| React | meetingsdk-react-sample | 177 |
| Auth | meetingsdk-auth-endpoint-sample | 124 |
| Angular | meetingsdk-angular-sample | 60 |
| Vue.js | meetingsdk-vuejs-sample | 42 |
Full list: See general/references/community-repos.md
Resources
Official docs: https://developers.zoom.us/docs/meeting-sdk/
Developer forum: https://devforum.zoom.us/
Environment Variables
See references/environment-variables.md for standardized
.envkeys and where to find each value.
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/meeting-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-meeting-sdk-app.zip