From zoom-skills
Embeds Zoom meetings into web, mobile, desktop, and headless apps using the Zoom Meeting SDK. Covers Android, iOS, macOS, Electron, React Native, Unreal, and Linux.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zoom-skills:meeting-sdkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Embed the full Zoom meeting experience into web, mobile, desktop, and headless integrations.
RUNBOOK.mdandroid/RUNBOOK.mdandroid/android.mdandroid/concepts/architecture.mdandroid/concepts/lifecycle-workflow.mdandroid/examples/join-start-pattern.mdandroid/references/android-reference-map.mdandroid/references/environment-variables.mdandroid/references/versioning-and-compatibility.mdandroid/scenarios/high-level-scenarios.mdandroid/troubleshooting/common-issues.mdelectron/RUNBOOK.mdelectron/concepts/high-level-scenarios.mdelectron/concepts/lifecycle-workflow.mdelectron/concepts/sdk-architecture-pattern.mdelectron/examples/authentication-pattern.mdelectron/examples/join-meeting-pattern.mdelectron/examples/raw-data-pattern.mdelectron/examples/setup-guide.mdelectron/references/electron-reference.mdEmbed the full Zoom meeting experience into web, mobile, desktop, and headless integrations.
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.
join_url links.join_url is not a Meeting SDK join payload.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.
<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>
// 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({
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>
| 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 |
Never expose the Client 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 = {
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 });
});
Global * { margin: 0; } breaks Zoom's UI. Scope your styles:
/* BAD */
* { margin: 0; padding: 0; }
/* GOOD */
.your-app, .your-app * { box-sizing: border-box; }
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;
}
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; }
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.
| 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) |
| 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
.env keys and where to find each value.npx claudepluginhub zoom/skills --plugin zoom-skillsBuilds web apps that run inside the Zoom client using the @zoom/appssdk JavaScript SDK, including in-meeting experiences, Layers API for immersive visuals, Collaborate Mode, and In-Client OAuth.
Automates Zoom meeting creation, scheduling, webinar management, recording retrieval, and participant tracking via Composio's Zoom toolkit. Requires Rube MCP connection.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.