| name | zoom-meeting-sdk |
| description | Zoom Meeting SDK for embedding Zoom meetings into web, Android, iOS, macOS, Unreal, React Native, Electron, and Linux applications.
Use when you want to integrate the full Zoom meeting experience into your app.
Supports Web (JavaScript), React Native (iOS/Android), Electron desktop apps, Linux (C++ headless bots), and native platforms.
|
| triggers | ["embed meeting","embed zoom meeting","integrate meeting","meeting in web app","meeting in website","add zoom to website","meeting sdk","join meeting programmatically","meeting bot","bot joins meeting","joining meeting timeout","join meeting failed","waiting room","hide meeting info","hide meeting password"] |
Zoom Meeting SDK
Embed the full Zoom meeting experience into web, mobile, desktop, and headless integrations.
Current Release Snapshot
Verified from the public changelog on 2026-07-10:
| Platform family | Current release |
|---|
| Android, Electron, iOS, Linux, macOS, Windows | 7.1.0 |
| React Native | 7.0.5 |
| Web | 6.2.0 |
| Unreal wrapper | 1.1.0 (wraps Meeting SDK 6.1.5) |
Native 7.1.0 adds I420 Limited/Full support, face-region ROI in raw video, on-demand avatar
download, and platform-specific breakout-room additions. It includes breaking changes on several
native platforms, so diff the downloaded headers/wrappers before copying examples from older
package snapshots in this repository.
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_url links.
- Meeting SDK join path requires SDK signature + SDK join call; REST
join_url is not a Meeting SDK join payload.
Prerequisites
- Zoom app with Meeting SDK credentials
- Client ID and Client Secret from Marketplace; legacy SDK Key/Secret migration was enforced on
June 27, 2026
- Platform-specific development environment (Web, Android, iOS, macOS, Unreal, Electron, Linux, or Windows)
Need to create the SDK app first? Use
Marketplace app management for app creation,
manifest validation, app-type quirks, and credential response shapes before generating
Meeting SDK signatures. Start from the
Meeting SDK create template.
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/6.2.0/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/6.2.0/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/6.2.0/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/6.2.0/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/6.2.0/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/6.2.0/zoom-meeting-6.2.0.min.js"></script>
<script>
ZoomMtg.preLoadWasm();
ZoomMtg.prepareWebSDK();
ZoomMtg.init({
leaveUrl: window.location.href,
patchJsMedia: true,
disableCORP: !window.crossOriginIsolated,
success: function() {
ZoomMtg.join({
signature: 'YOUR_SIGNATURE',
meetingNumber: 'MEETING_NUMBER',
userName: 'User Name',
passWord: '',
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 the Client Secret in client code. Generate signatures server-side:
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 = {
appKey: process.env.ZOOM_CLIENT_ID,
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_CLIENT_SECRET
);
res.json({ signature });
});
3. CSS Conflicts - Avoid Global Resets
Global * { margin: 0; } breaks Zoom's UI. Scope your styles:
* { margin: 0; padding: 0; }
.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;
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:
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 |
|---|
| Client ID/Secret | Current Meeting SDK credentials from Marketplace |
| Signature | JWT with appKey signed using the Client 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
Sample Repositories
Official (by Zoom)
Full list: See general/references/community-repos.md
Resources
Environment Variables