File: C:/Users/fred/.codex/.tmp/plugins/plugins/zoom/skills/zoom-apps-sdk/references/apis.md
# Zoom Apps SDK - API Reference
Complete reference for all @zoom/appssdk methods organized by category.
## Initialization
### config(options)
**Must be called first.** Initializes the SDK and declares capabilities.
```javascript
const configResponse = await zoomSdk.config({
capabilities: ['getMeetingContext', 'shareApp', ...],
version: '0.16'
});
// Returns: { runningContext, clientVersion, unsupportedApis }
```
### getSupportedJsApis()
Check which APIs are available in the current client.
```javascript
const { supportedApis } = await zoomSdk.getSupportedJsApis();
// Returns: { supportedApis: ['getMeetingContext', 'shareApp', ...] }
```
## Context APIs
### getMeetingContext()
```javascript
const context = await zoomSdk.getMeetingContext();
// { meetingID, meetingTopic, meetingStatus }
```
### getUserContext()
```javascript
const user = await zoomSdk.getUserContext();
// { screenName, role, participantId, status }
// role: 'host' | 'coHost' | 'attendee' | 'panelist'
// status: 'authorized' | 'authenticated' | 'unauthenticated'
```
### getRunningContext()
```javascript
const { context } = await zoomSdk.getRunningContext();
// 'inMeeting' | 'inMainClient' | 'inWebinar' | 'inImmersive' | ...
```
### getMeetingUUID()
```javascript
const { meetingUUID } = await zoomSdk.getMeetingUUID();
```
### getMeetingJoinUrl()
```javascript
const { joinUrl } = await zoomSdk.getMeetingJoinUrl();
```
### getMeetingParticipants()
```javascript
const { participants } = await zoomSdk.getMeetingParticipants();
// [{ participantId, participantUUID, screenName, role }]
```
### getRecordingContext()
```javascript
const recording = await zoomSdk.getRecordingContext();
// { cloudRecordingStatus, localRecordingStatus }
```
## Authorization APIs
### authorize(options)
Trigger In-Client OAuth (no browser redirect).
```javascript
await zoomSdk.authorize({ codeChallenge: '...', state: '...' });
// onAuthorized event fires with { code, state }
```
### promptAuthorize()
Prompt guest/authenticated users to authorize.
```javascript
await zoomSdk.promptAuthorize();
```
## Meeting Action APIs
### shareApp()
```javascript
await zoomSdk.shareApp();
```
### sendAppInvitation(options)
```javascript
await zoomSdk.sendAppInvitation({ participantUUIDs: ['uuid1'], action: 'open' });
```
### sendAppInvitationToAllParticipants()
```javascript
await zoomSdk.sendAppInvitationToAllParticipants();
```
### sendAppInvitationToMeetingOwner()
```javascript
await zoomSdk.sendAppInvitationToMeetingOwner();
```
### showAppInvitationDialog()
```javascript
await zoomSdk.showAppInvitationDialog();
```
## UI APIs
### expandApp(options)
```javascript
await zoomSdk.expandApp({ action: 'expand' }); // or 'collapse'
```
### openUrl(options)
```javascript
await zoomSdk.openUrl({ url: 'https://example.com' });
```
### showNotification(options)
```javascript
await zoomSdk.showNotification({ title: 'Alert', message: 'Something happened!', type: 'info' });
```
## Media APIs
### listCameras()
```javascript
const { cameras } = await zoomSdk.listCameras();
```
### setVirtualBackground(options)
```javascript
await zoomSdk.setVirtualBackground({ imageData: 'base64-data' });
```
### removeVirtualBackground()
```javascript
await zoomSdk.removeVirtualBackground();
```
### setVideoMirrorEffect(options)
```javascript
await zoomSdk.setVideoMirrorEffect({ mirrorMyVideo: true });
```
### allowParticipantToRecord(options)
```javascript
await zoomSdk.allowParticipantToRecord({ participantUUID: 'uuid', action: 'grant' });
```
### cloudRecording(options)
```javascript
await zoomSdk.cloudRecording({ action: 'start' }); // 'stop', 'pause', 'resume'
```
## Communication APIs
### connect()
Connect to other app instances (main client <-> meeting).
```javascript
await zoomSdk.connect();
```
### postMessage(options)
```javascript
await zoomSdk.postMessage({ payload: JSON.stringify({ type: 'update', data: {...} }) });
```
## Layers APIs
### runRenderingContext(options)
```javascript
await zoomSdk.runRenderingContext({ view: 'immersive' }); // or 'camera'
```
### closeRenderingContext()
```javascript
await zoomSdk.closeRenderingContext();
```
### drawParticipant(options)
```javascript
await zoomSdk.drawParticipant({ participantUUID: 'uuid', x: 0, y: 0, width: 640, height: 480, zIndex: 1 });
```
### clearParticipant(options)
```javascript
await zoomSdk.clearParticipant({ participantUUID: 'uuid' });
```
### drawImage(options)
```javascript
await zoomSdk.drawImage({ imageData: canvas.toDataURL(), x: 0, y: 0, width: 1280, height: 720, zIndex: 0 });
```
### clearImage(options)
```javascript
await zoomSdk.clearImage({ imageId: 'id' });
```
### drawWebView(options)
```javascript
await zoomSdk.drawWebView({ webviewId: 'my-view', x: 0, y: 0, width: 400, height: 300, zIndex: 2 });
```
### clearWebView(options)
```javascript
await zoomSdk.clearWebView({ webviewId: 'my-view' });
```
## Collaborate APIs
### startCollaborate(options)
```javascript
await zoomSdk.startCollaborate({ shareScreen: true });
```
## Event Listeners
```javascript
zoomSdk.addEventListener('onMeeting', (event) => { ... });
zoomSdk.removeEventListener('onMeeting', handler);
```
See **[events.md](events.md)** for complete event reference.
## Resources
- **SDK Reference**: https://appssdk.zoom.us/
- **Capabilities list**: https://developers.zoom.us/docs/zoom-apps/