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://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/ai-companion.md
AI Companion in Meeting SDK
Control AI Companion features in embedded Zoom meetings.
Overview
The Meeting SDK provides InMeetingAICompanionController to manage AI Companion features within meetings. This allows you to check status and available features.
Important: The Meeting SDK is for human use cases only. It does NOT support bots or AI notetakers. For bot/automated AI processing, use rtms.
Availability
| Platform | Controller Available |
|---|---|
| Web | Limited (settings-based) |
| Android | ✅ InMeetingAICompanionController |
| iOS | ✅ MobileRTCAICompanionController |
| Windows | ✅ IMeetingAICompanionController |
| macOS | ✅ ZoomSDKMeetingAICompanionController |
AI Companion Features
| Feature | Constant | Description |
|---|---|---|
| Query | QUERY | Ask AI Companion questions during meeting |
| Smart Summary | SMART_SUMMARY | Auto-generate meeting summary |
| Smart Recording | SMART_RECORDING | Highlight key moments in recording |
Android
import us.zoom.sdk.*;
// Get AI Companion controller
InMeetingService inMeetingService = ZoomSDK.getInstance().getInMeetingService();
InMeetingAICompanionController aiController = inMeetingService.getInMeetingAICompanionController();
// Check if AI Companion is enabled for this meeting
boolean isEnabled = aiController.isAICompanionEnabled();
Log.d("AICompanion", "Enabled: " + isEnabled);
// Get available features
List<AICompanionFeature> features = aiController.getAvailableFeatures();
for (AICompanionFeature feature : features) {
Log.d("AICompanion", "Feature available: " + feature.name());
}
// Check specific feature
boolean hasSummary = aiController.isFeatureAvailable(AICompanionFeature.SMART_SUMMARY);AI Companion Events (Android)
// Listen for AI Companion status changes
inMeetingService.addListener(new InMeetingServiceListener() {
@Override
public void onAICompanionActiveChanged(boolean isActive) {
Log.d("AICompanion", "Active state changed: " + isActive);
}
@Override
public void onAICompanionFeaturesChanged() {
// Re-check available features
List<AICompanionFeature> features = aiController.getAvailableFeatures();
}
});iOS (Swift)
import MobileRTC
// Get AI Companion controller
guard let meetingService = MobileRTC.shared().getMeetingService(),
let aiController = meetingService.getInMeetingAICompanionController() else {
return
}
// Check if AI Companion is enabled
let isEnabled = aiController.isAICompanionEnabled()
print("AI Companion enabled: \(isEnabled)")
// Get available features
if let features = aiController.getAvailableFeatures() as? [MobileRTCAICompanionFeature] {
for feature in features {
print("Feature: \(feature.rawValue)")
}
}
// Check specific feature
let hasSummary = aiController.isFeatureAvailable(.smartSummary)AI Companion Events (iOS)
// Implement delegate
class MeetingDelegate: NSObject, MobileRTCMeetingServiceDelegate {
func onAICompanionActiveChanged(_ isActive: Bool) {
print("AI Companion active: \(isActive)")
}
func onAICompanionFeaturesChanged() {
// Refresh available features
}
}Windows (C++)
#include "zoom_sdk.h"
// Get AI Companion controller
IMeetingService* meetingService = SDKInterfaceWrap::GetInst().GetMeetingService();
IMeetingAICompanionController* aiController = meetingService->GetMeetingAICompanionController();
// Check status
bool isEnabled = aiController->IsAICompanionEnabled();
// Get features
IList<AICompanionFeature>* features = aiController->GetAvailableFeatures();
for (int i = 0; i < features->GetCount(); i++) {
AICompanionFeature feature = features->GetItem(i);
// Process feature
}macOS (Objective-C)
#import <ZoomSDK/ZoomSDK.h>
// Get AI Companion controller
ZoomSDKMeetingService *meetingService = [[ZoomSDK sharedSDK] getMeetingService];
ZoomSDKMeetingAICompanionController *aiController = [meetingService getAICompanionController];
// Check status
BOOL isEnabled = [aiController isAICompanionEnabled];
NSLog(@"AI Companion enabled: %d", isEnabled);
// Get features
NSArray *features = [aiController getAvailableFeatures];
for (NSNumber *feature in features) {
NSLog(@"Feature: %@", feature);
}Web SDK
The Web SDK doesn't expose direct AI Companion controls. AI Companion behavior is determined by:
Account settings
Meeting settings
Host controls
// AI Companion features are controlled by meeting/account settings
// The Web SDK respects these settings automatically
// You can check meeting info for AI-related settings
ZoomMtg.getCurrentMeetingInfo(function(result) {
console.log('Meeting info:', result);
});Use Cases
Display AI Companion Status
// Android: Show UI indicator based on AI Companion status
public void updateAICompanionUI() {
InMeetingAICompanionController aiController = getAIController();
if (aiController.isAICompanionEnabled()) {
aiIndicator.setVisibility(View.VISIBLE);
if (aiController.isFeatureAvailable(AICompanionFeature.SMART_SUMMARY)) {
summaryBadge.setVisibility(View.VISIBLE);
}
} else {
aiIndicator.setVisibility(View.GONE);
}
}Inform Users About AI Features
// iOS: Show alert about AI features
func showAICompanionInfo() {
guard let aiController = getAIController() else { return }
var features: [String] = []
if aiController.isFeatureAvailable(.smartSummary) {
features.append("Meeting Summary")
}
if aiController.isFeatureAvailable(.smartRecording) {
features.append("Smart Recording")
}
if !features.isEmpty {
let message = "AI Companion features active: \(features.joined(separator: ", "))"
showAlert(title: "AI Companion", message: message)
}
}Limitations
| Limitation | Notes |
|---|---|
| No bot support | Meeting SDK is for human use only |
| Read-only | Cannot enable/disable features via SDK |
| Settings-dependent | Features depend on account/meeting settings |
| No transcript access | Use REST API or RTMS for transcripts |
Related
AI Companion Integration Use Case - Full integration guide
rtms - For real-time transcript access
zoom-rest-api - For meeting summaries and transcripts after meeting
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