Zoom Apps SDK

The Zoom Apps SDK is a JavaScript library that faciliates communication between your Zoom App and the Zoom client. The SDK allows you to take advantage of the many APIs and events Zoom exposes in its embedded browser.

Installation

There are two ways to install the Zoom Apps SDK into your frontend project

NPM

You can install it from NPM, if you are using a module bundler such as Webpack:

$ npm install @zoom/appssdk

CDN

Alternatively, you can load the SDK from a CDN, using a script tag in your HTML document:

<script src="https://appssdk.zoom.us/sdk.js"></script>

You can also load a minified SDK, using a script tag in your HTML document:

<script src="https://appssdk.zoom.us/sdk.min.js"></script>

Usage

If you installed Zoom Apps SDK from NPM, import zoomSdk into the component where you wanted to use the SDK and call config as your first call to verify your application with Zoom.

import zoomSdk from "@zoom/appssdk"

async function configureApp() {
const configResponse = await zoomSdk.config({
popoutSize: {width: 480, height: 360},
capabilities: ["shareApp"]
})
}

When you load the SDK using a script tag, zoomSDK is served as a global object and can be called across components. Even in this case zoomSdk.config should be the first call.

<script src="https://appssdk.zoom.us/sdk.js"></script>

async function configureApp() {
const configResponse = await zoomSdk.config({
version: "0.16",
popoutSize: {width: 480, height: 360},
capabilities: ["shareApp"]
})
}

The cloud SDK is designed to provide on-demand patch updates, and it does not support exact versions. You will always get the latest patch version within the major version specified in the version parameter of zoomSdk.config. In other words, if you supplied an exact version like 0.16.1, you will get the latest patch within the 0.16 major version.

zoomSdk.config response object. Read more about zoomSdk.config

{
"clientVersion": "5.11.1.8356",
"browserVersion": "applewebkit/17613.2.7.1.8",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)",
"auth": {
"status": "authorized",
"upgradable": true
},
"unsupportedApis": [],
"runningContext": "inMainClient"
}

Note

  • Zoom Desktop Client is a native application. Depending on the Zoom Desktop Client version a user has installed, they might have access to different Zoom Apps APIs and events. With the cloud version of the SDK, you automatically get the latest patches as we release new client versions, and your apps avoid potential breaks due to missing patches.

  • When using SDK via npm, check for updates in our monthly release of Zoom Desktop Client. You must manually update your app when needed to the latest SDK to maintain compatibility with newer client versions.

  • The SDK module installed via npm includes the sdk.d.ts file which provides type definitions for sdk.es.js and sdk.module.js. The cloud-based SDK does not provide this file.

How do compatibility patches work?

This is an example of how compatibility patches delivered via cloud-based SDK help your app run on the latest client versions.

Note: This example is only for illustrating the concept, and does not imply Zoom is planning to change the sendAppInvitation API schema.

Example: Your app is developed against the 3.4.0 client version and uses the sendAppInvitation API.

Client version 3.4.0. The sendAppInvitation API schema is

sendAppInvitation ({ participantUUIDs: [participantUUID1, participantUUID2, ...], })

Client version 4.0.0 introduces a breaking change to the sendAppInvitation API that requires one additional parameter message to customize your invitation. The new API schema is

sendAppInvitation ({ participantUUIDs: [participantUUID1, participantUUID2, ...],  message: "This app is awesome, try it!"})

Apps based on the client version 3.4.0 will break when used on the 4.0.0 client because the client is expecting the message parameter as part of the API call. Whereas, when you use the cloud-based SDK, the compatibility patch can accept your API request and transform it internally to use a default value for the message parameter.

Original call from app to SDK

sendAppInvitation ({ participantUUIDs: [participantUUID1, participantUUID2, ...], })

SDK transforms the call internally to

sendAppInvitation ({ participantUUIDs: [participantUUID1, participantUUID2, ...], message: ""})

Release notes

Refer to release notes to discover changes made in the Apps SDK.

Resources to create a Zoom App

Need help?

Hierarchy

  • ZoomSdk

Methods - Core Endpoints

Methods - In-client Auth

Methods - Collaborate Mode

Methods - Managing Breakout Rooms

Methods - Maintaining State Outside of a Meeting

Methods - User Media

Methods - Events Core

Methods - Events Managing Collaborations

Methods - Events Managing Breakout Rooms

Methods - Events maintaining state outside of a meeting

Methods - Meeting

Methods - Meeting Action Endpoints

Methods - Other

Core Endpoints Methods

  • To initialize and start using the SDK, you must first call zoomSdk.config to verify your application with Zoom. Without completing this step, your application won’t be able to use any of the APIs or event listeners provided by the SDK. In the request body of this API call, specify the list of APIs and event listeners that you plan to use in your app as shown below. Ensure that the list of capabilities provided in this request corresponds to the list of APIs and events that you have added in your app build flow on Marketplace (Zoom App > Feature > Zoom App SDK).

    The Zoom Apps SDK relies on a token that is generated and used internally by the Zoom client to authorize API calls on behalf of the app. This token is bound to the openURL that you provide when you call zoomSdk.config. If your URL changes, your configuration will be invalidated and you will need to call zoomSdk.config with the new URL again.

    If your Zoom App is a single page app, we suggest modifying your navigation methods to automate this.

    const configResponse = await zoomSdk.config({
    version: '0.16',
    // The `version` param is only required if using the Cloud SDK (not NPM SDK).
    // See README for more details.
    popoutSize: { width: 480, height: 360 },
    capabilities: [
    //APIs
    "shareApp",
    "listCameras",
    "setCamera",
    "setVideoMirrorEffect",
    "getMeetingParticipants",
    "cloudRecording",
    "allowParticipantToRecord",
    "getRunningContext",
    "getMeetingContext",
    "getSupportedJsApis",
    "showNotification",
    "openUrl",
    "setVirtualBackground",
    "listCameras",
    "setCamera",
    "sendAppInvitation",
    "sendAppInvitationToAllParticipants",
    "getUserContext",
    "getRecordingContext",
    "getMeetingContext",
    "getMeetingJoinUrl",
    "getMeetingUUID",
    "expandApp",
    "connect",
    "postMessage",
    //Events
    "onShareApp",
    "onSendAppInvitation",
    "onCloudRecording",
    "onActiveSpeakerChange",
    "onAppPopout",
    "onCohostChange",
    "onParticipantChange",
    "onReaction",
    "onConnect",
    "onExpandApp",
    "onMessage",
    "onMeeting",
    ],
    });

    Parameters

    Returns Promise<ConfigResponse>

Client Version: 5.6.7

  • Returns an array of APIs and events supported by the current running context.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    await zoomSdk.getSupportedJsApis();
    

    Returns Promise<GetSupportedJsApisResponse>

Client Version: 5.6.7

  • Opens a URL in the system browser of a user's device.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    await zoomSdk.openUrl({ url: "https://awesome-zoom-app.com/login" });
    

    You must whitelist the URL's domain in your Marketplace app configuration, otherwise the browser will show a warning "Accessing Untrusted Web Site". And the user has to manually click the link to trigger marketplace to redirect them to the specified url.

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.6.7

  • Returns the context in which the Zoom App is launched: inMeeting, inWebinar, inMainClient, inPhone, inCollaborate. This is useful for controlling your app's behavior based on the presence of a single user or multiple collaborative users.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    await zoomSdk.getRunningContext();
    

    Returns Promise<RunningContextResponse>

Client Version: 5.6.7

  • This API is only available in meetings. It returns an object containing basic information about the meeting.

    Supported roles: Owner

    Supports Guest Mode: No

    await zoomSdk.getMeetingContext();
    

    Returns Promise<GetMeetingContextResponse>

Client Version: 5.6.7

  • This sets a virtual background or blur the user's native background.

    When setVirtualBackground is invoked in a context where the smart virtual background package is not yet installed, a dialog prompts the user to download the package. When the user clicks "Install" in the dialog box, the package is downloaded. The client will subsequently show the consent dialog for setting the background.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    var myOptions = {
    fileUrl: "https://unsplash.com/photos/itTHOJ5aUk4"
    };

    await zoomSdk.setVirtualBackground(myOptions);

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.6.7

  • Removes current virtual background and resets to use the camera.

    Note that when calling removeVirtualBackground, the client will pop up a confirmation dialog to let the user allow or disallow. If the user does not allow the action, the client will return an error code of 10017 to the app.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.removeVirtualBackground().then(function() => {
    // background was successfully removed
    })
    .catch(function(error) => {
    // there was an error removing the virtual background
    })

    Returns Promise<GeneralMessageResponse>

Client Version: 5.9.0

  • Draws an image in the foreground of the user’s video.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.setVirtualForeground({
    imageData: <ImageData>
    })
    .then((ctx) => {
    console.log("setVirtualForeground returned", ctx);
    })
    .catch((e) => {
    console.log(e);
    });

    Returns

    On success, this returns an object with an imageId field (string/UUID) that uniquely identifies the image.

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.9.0

  • Removes the image which was set using setVirtualForeground from the foreground of the user’s video.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.removeVirtualForeground()
    .catch((e) => {
    console.log(e);
    });

    Returns Promise<GeneralMessageResponse>

Client Version: 5.6.7

  • Triggers a push notification. The embedded browser does not support the Web Notification API, so we have provided a similar API via the JS SDK.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    await zoomSdk.showNotification({
    type: "info",
    title: "Hello",
    message: "This is an info notification"
    });

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.6.7

Client Version: 5.6.7

Client Version: 5.6.7

  • Get all available cameras.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    await zoomSdk.listCameras();
    

    Returns

    {
    "cameras": [
    { "id": "0x14424000046d085b", "name": "Logitech Webcam C925e #2" },
    { "id": "0x8020000005ac8514", "name": "FaceTime HD Camera (Built-in)" }
    ]
    }

    Returns Promise<ListCamerasResponse>

Client Version: 5.6.7

Client Version: 5.6.7

Client Version: 5.6.7

  • Get information of the participants in the current meeting. Note that for breakout rooms, the participants in the current room will be returned, not those of the parent meeting.

    Supported roles: Owner

    Supports Guest Mode: No

    await zoomSdk.getMeetingParticipants();
    

    Returns Promise<GetMeetingParticipantsResponse>

Client Version: 5.6.7

Client Version: 5.6.7

  • It returns basic information about the meeting participant while in a meeting.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.getUserContext().then((result) => {
    // e.g. { screenName: 'Happy Zoomineer', role: 'host', participantUUID: "xxxx", status: "authorized"}
    })
    .catch(function(error){
    // there was an error
    })

    Returns Promise<GetUserContextResponse>

Client Version: 5.6.7

  • This API endpoint is only available in meetings. It returns basic information about the meeting recording while in a meeting.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    zoomSdk.getRecordingContext().then((result) => {
    // e.g. { cloudRecordingStatus: 'stopped'|'started'|'paused'|'connecting'}
    })
    .catch(function(error){
    // there was an error
    })

    Returns Promise<GetRecordingContextResponse>

Client Version: 5.6.7

  • This API endpoint is only available in meetings. It allows the app to access the JoinUrl while in a meeting.

    Supported roles: Owner

    Supports Guest Mode: No

    zoomSdk.getMeetingJoinUrl()
    .then((result) => {
    // e.g. { joinUrl: "xxxxxx"}
    })
    .catch(function(error){
    // there was an error
    })

    Returns Promise<GetMeetingJoinUrlResponse>

Client Version: 5.6.7

  • This API endpoint is only available in meetings. It allows the app to access the meetingUUID while in a meeting.

    In breakout rooms,meetingUUID identifies the specific breakout room, and parentUUID helps connect individual rooms to the main meeting. Note that the value of parentUUID must be used for REST API calls inside of breakout rooms, while meetingUUID is otherwise used.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.getMeetingUUID()
    .then(function(result){
    // e.g. { meetingUUID: 'abcdefghijklmnopqrstuvwx'}
    })
    .catch(function(error){
    // there was an error
    })

    Returns Promise<GetMeetingUUIDResponse>

Client Version: 5.6.7

  • Tells the client to expand to the larger size or collapse it back to the default app UI size.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    await zoomSdk.expandApp({
    action: 'expand' | 'collapse',
    })

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.8.3

  • Allow a specific participant to start a local recording. This API will trigger a pop-up consent dialog in the client to let the host allow or not allow.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    This API is not available in webinars.

    await zoomSdk.allowParticipantToRecord({
    participantUUID: 'xxxx',
    action: "grant"
    })

    This API requires participantUUID

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.8.3

  • Starts a new meeting or joins an existing meeting and launches the app in the meeting.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    await zoomSdk.launchAppInMeeting({ joinURL: 'xxx' })
    
    with joinURL without joinURL
    inMainClient Joins meeting associated with the joinURL and launches app in it Starts a new meeting and launches app in it

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.7.3

  • Shows client participant selection dialog window for sending an app invitation.

    Triggers client built in participant selection UI, so that apps running in non-owner context that do not have screen names can invite specific users

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    await zoomSdk.showAppInvitationDialog();
    

    Returns Promise<GeneralMessageResponse>

Client Version: 5.7.3

  • Sends invitation of current app to the meeting owner (person who scheduled the meeting).

    Sends app invitations specifically to the meeting owner. Sent to both meeting & persistent chat when the meeting owner is in the meeting. Sent to persistent chat when the meeting owner is not in the meeting that might be ongoing.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    await zoomSdk.sendAppInvitationToMeetingOwner();
    

    Returns Promise<AppInvitationResponse>

Client Version: 5.7.6

  • Sends invitation for the current app to all participants currently in the meeting.

    In breakout rooms, this will only send invitations to participants within the current room.

    This API may behave differently depending on the in-meeting chat setting enabled by the host for the meeting participants. The meeting host can determine whether meeting participants can chat with: No one, Hosts and Cohosts, Everyone, Everyone and Anyone directly.

    Supported roles: Host, Co-Host, Participant

    Supports Guest Mode: No

    await zoomSdk.sendAppInvitationToAllParticipants()
    .then(function(){
    // success
    })
    .catch(function(error){
    // there was an error
    })

    Returns Promise<AppInvitationResponse>

Client Version: 5.9.0

  • Changes the app's rendering context from the meeting sidebar to the main meeting window, with behavior defined by the specified view option. Only a meeting host may invoke an immersive runRenderingContext. To transition other meeting participants to an immersive view, the meeting host’s app must use the sendAppInvitationToAllParticipants API.

    Warning: Only one app instance can create an immersive rendering context at a time. If another attempts to, it will fail with an error.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.runRenderingContext({
    view: 'immersive'
    })

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.9.0

  • Returns the rendering context of the app to the sidebar.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.closeRenderingContext()
    .then(() => {
    console.log("closeRenderingContext returned");
    })
    .catch((e) => {
    console.log(e);
    });

    Returns Promise<GeneralMessageResponse>

Client Version: 5.9.0

  • Draws participant videos and static images on top of the background.

    The getMeetingParticipants method provides a list of meeting participants. For each of these, the app can specify a position, size and z-index with using drawParticipant. This method is available when using the "immersive" rendering context. All visible meeting participants are shown using a video cutout, removing their background.

    Supported roles: Host, Co-Host

    Supports Guest Mode: Yes

    zoomSdk.drawParticipant({
    participantUUID: 'xxx',
    x: 0, y: 0, width: 1280, height: 720, zIndex: 1
    })
    .then((ctx) => {
    console.log("drawParticipant returned", ctx);
    })
    .catch((e) => {
    console.log(e);
    });

    Notes

    • The getMeetingParticipants() API is only available to the meeting host. When multiple participants are each using the same Layers app for a meeting, app-specific messaging may be used to communicate the participants list to other meeting attendees.
    • Drawing a participant’s video that is already being drawn moves it to the new location.
    • If the participant isn’t sending video, the a fallback will be used. Fallbacks are tried in the following order: user avatar, telephone icon (if applicable), CRC icon (if applicable), user name.

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.9.0

Client Version: 5.9.0

  • Draws an image in the rendering context's canvas.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.drawImage({
    imageData: <ImageData (includes width/height properties)>,
    x: 0, y: 0, zIndex: 3
    })
    .then((ctx) => {
    console.log("drawImage returned", ctx);
    })
    .catch((e) => {
    console.log(e);
    });

    Notes

    Drawing an image with the same x / y / zIndex / width / height as an existing image replaces the previous image and may return the same imageId.

    In order to move an image, use clearImage first, and then redraw the image in the intended position.

    Parameters

    Returns Promise<DrawImageResponse>

Client Version: 5.9.0

Client Version: 5.10.6

  • Draws the OSR webview with the specified size, location and zIndex [Layers Camera Mode]

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.drawWebView({
    x: 0,
    y: 0,
    width: 1280,
    height: 720,
    zIndex: 2
    })
    .catch((e) => {
    console.log(e);
    });

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.10.6

  • Clears the content set by drawWebView. [Layers Camera Mode]

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.clearWebView()
    .catch((e) => {
    console.log(e);
    });

    Returns Promise<GeneralMessageResponse>

Client Version: 5.11.3

  • Beta API may undergo some changes

    This API returns app context token that contains signed app context data for secure backend validation. See https://marketplace.zoom.us/docs/zoom-apps/zoomappcontext for more details.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Running context: all

    Supports Guest Mode: Yes

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.getAppContext()
    .then((appContext) => console.log(appContext))
    .catch((err) => console.log(err))

    Returns Promise<GetAppContextResponse>

Client Version: 5.12.6

  • Shares audio from my computer. Pass in an action to start or stop the share. Does not share the screen or app. stereo is default mode option, optionally pass parameter to change to mono

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Running context: inMeeting, inWebinar

    Supports Guest Mode: Yes

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.shareComputerAudio({ action: start })
    .then((response) => console.log(response)) // { message: success }
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • The functionality of this API is to help add participants on a Zoom Meeting to pins.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Running context: inMeeting, inWebinar

    Scope label: Read Scopes: Content

    Supports Guest Mode: Yes

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.addParticipantPins( {participantUUIDs: [ participantUUID1, ... ], secondaryDisplay: true|false })
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • The functionality of this API is to help remove participants on a Zoom Meeting from pins.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Running context: inMeeting, inWebinar

    Scope label: Read Scopes: Content

    Supports Guest Mode: Yes

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.removeParticipantPins( {participantUUIDs: [ participantUUID1, ... ], secondaryDisplay: true|false })
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • This API permits Hosts and Co-Hosts to allow Webinar Attendees to speak.

    Supported roles: Host, Co-Host

    Running context: inWebinar

    Scope label: Write Scopes: Manage Content, Manage Participants

    Supports Guest Mode: No

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.allowAttendeesToSpeak( {participantUUIDs: [ participantUUID1, ... ]})
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • This API permits Hosts and Co-Hosts to disallow Webinar Attendees to speak.

    Supported roles: Host, Co-Host

    Running context: inWebinar

    Scope label: Write Scopes: Manage Content, Manage Participants

    Supports Guest Mode: No

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.disallowAttendeesToSpeak( {participantUUIDs: [ participantUUID1, ... ]})
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • This API permits Hosts and Co-Hosts to eject Attendees from a Webinar.

    Supported roles: Host, Co-Host

    Running context: inWebinar

    Scope label: Write Scopes: Manage Participants

    Supports Guest Mode: No

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.removeWebinarAttendees( {participantUUIDs: [ participantUUID1, ... ]})
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

In-client Auth Methods

Client Version: 5.9.0

Client Version: 5.10.0

  • This method is part of in-client OAuth feature. It initiates on OAuth authorization request from the Zoom Client - Zoom Apps tab - to the Zoom marketplace.

    Invoke the authorize method with PKCE codeChallenge and optional state:

    • If the app's scopes are authorized by the user, it starts a non-interactive OAuth flow, completely invisible to the user.
    • If the app's scopes have changed or added, it goes to the in-client consent screen, and the user is prompted to reauthorize the app's scope.

    Notes The application must create a crypographically secure string for OAuth2.0 code verifier, which is used to generate the challenge.

    Upon user authorization, an onAuthorized event is triggered with an authorization code. You have to add an event listener for this event to get authorization code.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    zoomSdk.authorize({
    state: 'TIA5UgoM38',
    codeChallenge: 'o0qAEF...'
    }).then((ret) => {
    console.log(ret);
    }).catch((e) => {
    console.log(e);
    })

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.10.6

  • Triggers a contextual prompt for the user to sign in with Zoom (if the user context status is not "authenticated"), or add the app (if the user context status is "authenticated"). The prompt is asynchronous and non-blocking, users can continue using the app while it is visible, or close the prompt.

    If user context is "unauthenticated", Zoom does not know the user, and only some Zoom APIs are allowed. Invoking promptAuthorize will ask the user to log in to Zoom, upon which user context status will update to "authenticated".

    If user is authenticated, but they have not yet added the app and/or consented to app scopes, invoke promptAuthorize once more to ask the authenticated user to consent and add the app. This will invoke the in-client OAuth flow and update user context status to "authorized".

    IMPORTANT: Calling promptAuthorize will update user context status, per the states noted above. You MUST reconfigure the application upon user context status change, by re-calling the config method. The recommended approach is to listen for the onMyUserContextChange event and invoke config once more if the user context status has changed.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    zoomSdk.promptAuthorize()
    .then((res) => console.log(res))
    .catch((err) => console.log(err))

    Returns Promise<GeneralMessageResponse>

Collaborate Mode Methods

Client Version: 5.10.0

  • Starts Collaborate mode in a meeting. Can be initiated by hosts or co-hosts. Use the optional shareScreen parameter to opt out of sharing the host’s app screen with participants as a preview or when participants ignore the Collaborate invite.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    zoomSdk.startCollaborate(
    { "shareScreen": true || false } // default true}(host/cohost)
    ).then(function(response) {})
    .catch(function(error) {
    // handle error
    })

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.10.0

  • Ends Collaborate mode in a meeting. Can be initiated by hosts or co-hosts.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    zoomSdk.endCollaborate()
    .then(function(response) {}) // (host/cohost)
    .catch(function(error) {
    // handle error
    })

    Returns Promise<GeneralMessageResponse>

Client Version: 5.10.0

  • Leave Collaborate mode. Can be initiated by participants in a meeting who are currently in Collaborate mode.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    zoomSdk.leaveCollaborate()
    .then(function(response) {}) // (other participant)
    .catch(function(error) {
    // handle error
    })

    Returns Promise<GeneralMessageResponse>

Client Version: 5.10.0

  • Join Collaborate mode. Can be initiated by participants in a meeting when they are invited to collaborate.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    zoomSdk.joinCollaborate()
    .then(function(response) {}) // (other participant)
    .catch(function(error) {
    // handle error
    })

    Returns Promise<GeneralMessageResponse>

Managing Breakout Rooms Methods

Client Version: 5.8.6

Client Version: 5.8.6

  • Change breakout room settings.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Note: Each parameter is optional. If the parameter is missing, the related setting is not changed.

    Response is a JSON object with information about the current configuration.

    Example

    {
    "allowParticipantsChooseRoom": true,
    "allowParticipantsReturnToMainSession": true,
    "automaticallyMoveParticipantsIntoRooms": true,
    "closeAfter": 1,
    "countDown": 60
    }

    Parameters

    Returns Promise<ConfigureBreakoutRoomsResponse>

Client Version: 5.8.6

Client Version: 5.8.6

Client Version: 5.9.3

  • List all breakout rooms. Owners get list of rooms and participants for each breakout room. Co-hosts and participants get only list of rooms. The method works for participants only when breakout rooms are open.

    Supported roles: Host, Co-Host, Participant

    Supports Guest Mode: Yes

    Example payload

    {
    rooms: [{
    breakoutRoomId: "room uuid",
    name: "room name",
    participants: [{
    participantUUID,
    displayName,
    participantStatus = ["assigned"|"joined"]
    }, …],
    state = [“open”|”closed”],
    unassigned: [{
    participantUUID,
    displayName
    }, …]
    }]
    }

    Returns an array of breakout rooms with their names, UUID, and an array of participant id's.

    Returns Promise<BreakoutRoomsResponse>

Client Version: 5.8.6

  • Add one more breakout room. This method is allowed only when breakout rooms are closed. Returns UUID of newly created breakout room.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Parameters

    Returns Promise<Uuid>

Client Version: 5.8.6

  • Delete one breakout room. This method is allowed only when breakout rooms are closed.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.8.6

Client Version: 5.9.0

  • Assigns a participant to a breakout room (other than the host / co-host). Only one user assigned per call. For open breakout rooms, the method triggers a user flow to join the room.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Note:

    • assignParticipantToBreakoutRoom cannot be executed while the current user is changing rooms.
    • To assign yourself (as host / co-host) to a breakout room, use method changeBreakoutRoom.

    Returns Promise<GeneralMessageResponse>

Client Version: 5.8.6

  • Called by a host / co-host / participant. Allows single participant user to join or leave a breakout room.

    Supported roles: Host, Co-Host, Participant

    Supports Guest Mode: Yes

    Note:

    1. Rooms need to be open
    2. To use this method, rooms must be configured to allow participant to choose rooms (allowParticipantsToChooseRoom=true when using configureBreakoutRooms)
    3. This method returns success when changing breakout rooms is initiated, but the transition for the user might not be completed in some scenarios. Use onBreakoutRoomChange to confirm successful transition. If the event doesn’t fire, repeat changeBreakoutRoom call

    Parameters

    Returns Promise<GeneralMessageResponse>

Maintaining State Outside of a Meeting Methods

Client Version: 5.6.7

  • The API can only be called in meeting. Allows the App to communicate with the instance of the app running on the main client.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: Yes

    await zoomSdk.connect()
    

    Returns Promise<GeneralMessageResponse>

Client Version: 5.6.7

  • Send a message with the current state of the mirrored app. The structure of the payload depends on the needs of the app.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: Yes

    await zoomSdk.postMessage({ JSON })
    

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.7.3

  • Tells the client to end the data communication between connected apps. Note that the client will close the connection between the apps when endSyncData is called or 10 seconds after the onMeeting event with event.action == 'ended' is recieved, whichever comes first.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: Yes

    await zoomSdk.endSyncData()
    

    Returns Promise<void>

User Media Methods

Client Version: 5.11.6

Client Version: 5.11.6

Client Version: 5.11.6

  • Gets the on or off status of the primary video.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    Returns Promise<GetVideoStateResponse>

Client Version: 5.11.6

  • Gets the mute or unmute status of the primary audio.
    

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    Returns Promise<GetAudioStateResponse>

Client Version: 5.10.3

  • Allows hosts and co-hosts to mute and unmute all, or specific, meeting participants. The action doesn’t affect the person initiating the request.

    Running context: inMeeting, inWebinar

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Scope label: Manage Devices

    Scope hierarchy: zoomapps.meetings / zoomapps.webinar

    Confirmation / Consent moments

    • All participants

      "[AppName] wants to unmute all participants" [Don’t Allow] [Allow]

    • Single participant

      "[AppName] wants to unmute this participant: [Screen name]" [Don’t Allow] [Allow]

    • Multiple participants

      "[AppName] wants to unmute these participants: [Screen name 1], [Screen name 2], [Screen name 3],…" [Don’t Allow] [Allow]

    zoomSdk.toggleParticipantMediaAudio({
    "participantUUIDs":['participantUUID1','participantUUID2'....],
    "audio": true | false
    })
    .then((response) => { console.log(response); })
    .catch((e) => { console.log(e); })

    Returns Promise<GeneralMessageResponse>

Events Core Methods

Client Version: 5.6.7

  • This event occurs when the user clicks the share icon from the Zoom App sidebar during a meeting, and when the user stops the share.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    Parameters

    Returns void

Client Version: 5.6.7

Client Version: 5.6.7

  • The cloud recording events occur when a user starts, pauses, stops or resumes recording a Zoom meeting (where your app is being run) to the cloud using the Zoom UI or programmatically using the JS APIs. Additionally, the "connecting" event action will be trigered prior to the start of a cloud recording.

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Returns void

Client Version: 5.6.7

Client Version: 5.6.7

  • This event is triggered when a user joins or leaves a meeting or when a participant's role changes for that meeting.

    Note The event triggers twice in some situations, such as when a participant leaves a meeting with one role and rejoins the meeting with a new role. The participantUUID of the user might change when the role changes.

    Supported roles: Owner

    Supports Guest Mode: No

    Returns void

Client Version: 5.6.7

Client Version: 5.6.7

Client Version: 5.6.7

Client Version: 5.7.3

Client Version: 5.7.3

Client Version: 5.7.3

  • This event is triggered when the current user’s role changes.

    onMyUserContextChange is be available to apps regardless of whether the app user is an owner, host or attendee in a meeting, but would only provide data for the user that’s running the app (and not the other participants in the meeting).

    IMPORTANT: Some changes to user context (for example, change to status following onMyUserContextChange), will require the application to configure again, by invoking config once more.

    Supported roles: Host, Co-Host

    Supports Guest Mode: Yes

    Returns void

Client Version: 5.9.0

  • Notifies the app when the current user's video settings change, when it’s toggled on or off, and when the audio is muted or unmuted.

    For example, when the user chooses a different camera, mutes or unmutes their primary audio, or toggles: "Original ratio", "HD" in video settings, or primary camera on or off.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    Returns void

Client Version: 5.9.3

  • The event triggers when the user closes the app for participants. It is only triggered for the user who performed the action. Example: The host uses an app to poll participants. When the host closes the app for participants, the app displays the results.

    Supported roles: Host, Co-Host, Panelist

    Supports Guest Mode: No

    Usage:

    zoomSdk.onCloseAppForParticipants((event) => {
    console.log(event)
    });
    • everyone: App closes for all users, including the current user.
    • attendees: App closes for only attendees.
    • everyoneButMe: App closes for everyone except the current user.

    Parameters

    Returns void

Events Managing Collaborations Methods

Client Version: 5.10.0

  • The event is triggered when changes such as start, end, leave or join happen in Collaborate mode. This method informs the app when the host or co-hosts start or end a collaboration, and when meeting participants leave or join a collaboration.

    The event is applicable to users based on their role in the meeting. For participants, the join and leave actions will apply. For hosts and co hosts, the start and end actions will apply. The event does not provide detailed information about the specific change, so the app needs to make an additional API request to retrieve the updated data.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    Returns void

Client Version: 5.10.0

Events Managing Breakout Rooms Methods

Client Version: 5.8.6

  • The event is triggered when any change happens to breakout rooms configuration. This method informs the app when the host changes the configuration manually, or when another app changes the configuration.

    The event does not provide detailed information about the specific change, so the app needs to make an additional API request to retrieve the updated data.

    Supported roles: Host, Co-Host, Participant

    Supports Guest Mode = Yes

    Returns void

Client Version: 5.8.3

Events maintaining state outside of a meeting Methods

Client Version: 5.6.7

  • In order to maintain state after a meeting, the instance of the app that is running in the meeting must communicate with the instance of the app running in the main client. The following events facilitate that process. For more information, see an example of this process.

    Notify the event listener when the API call connect has finished attempting to connect to the app instance running in the main client. This event can only be received in meeting.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: Yes

    Parameters

    Returns void

Client Version: 5.6.7

  • In order to maintain state after a meeting, the instance of the app that is running in the meeting must communicate with the instance of the app running in the main client. The following events facilitate that process. For more information, see an example of this process.

    Receive a sent message from the mirrored app. The structure of the payload depends on the needs of the app.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: Yes

    Parameters

    Returns void

Client Version: 5.6.7

  • In order to maintain state after a meeting, the instance of the app that is running in the meeting must communicate with the instance of the app running in the main client. The following events facilitate that process. For more information, see an example of this process.

    Meeting is closed, then notify the mirrored app and update state one more time.

    Supported roles: Host, Co-Host, Participant, Panelist

    Supports Guest Mode: No

    Parameters

    Returns void

Meeting Methods

Client Version: 5.12.6

  • Add one participant to the current spotlight, without overwriting the current set of participants in the spotlight

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Running context: inMeeting, inWebinar

    Scope label: Write: Manage Content

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    Confirmation / Consent moments: none

    zoomSdk.addParticipantSpotlight({
    participantUUID: participantUUID1
    })
    .then((response) => { console.log(response); })
    .catch((e) => { console.log(e); })

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • Removes one or more participants from the current spotlight

    When there is no array or empty array, it should remove all spotlights

    Supported roles: Host, Co-Host

    Supports Guest Mode: No

    Running context: inMeeting, inWebinar

    Scope label: Write: Manage Content

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    Confirmation / Consent moments: none

    zoomSdk.removeParticipantSpotlights({
    participantUUIDs: [participantUUID1, participantUUID2, ...]
    })
    .then((response) => { console.log(response); })
    .catch((e) => { console.log(e); })

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • Returns an array of participants who are currently in the spotlight

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Supports Guest Mode: Yes

    Running context: inMeeting, inWebinar

    Scope label: Content

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    Confirmation / Consent moments: none

    zoomSdk.getParticipantSpotlights()
    .then((response) => { console.log(response); })
    .catch((e) => { console.log(e); })

    Returns Promise<GetParticipantSpotlightsResponse>

Meeting Action Endpoints Methods

Client Version: 5.12.6

  • Enable participant to set their feedback reactions.

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Running context: inMeeting, inWebinar, inImmersive, inCamera

    Scope label: Write Scopes: Manage Content

    Supports Guest Mode: Yes

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.setFeedbackReaction( { feedback: 'yes' } )
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Parameters

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • Removes own feedback that is currently set

    Supported roles: Host, Co-Host, Participant, Panelist, Attendee

    Running context: inMeeting, inWebinar, inImmersive, inCamera

    Scope label: Write Scopes: Manage Content

    Supports Guest Mode: Yes

    Scope hierarchy: zoomapps.meetings / zoomapps.meetings.content

    zoomSdk.removeFeedbackReaction()
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Returns Promise<GeneralMessageResponse>

Client Version: 5.12.6

  • Removes feedback of all participants in the meeting

    Supported roles: Host, Co-Host

    Running context: inMeeting, inWebinar

    Scope label: Write Scopes: Manage Content, Manage Participants

    Supports Guest Mode: No

    Scope hierarchy: zoomapps.webinar / zoomapps.webinar.content

    zoomSdk.removeAllFeedbackReaction()
    .then((response) => console.log(response))
    .catch((err) => console.log(err))

    Returns Promise<GeneralMessageResponse>

Other Methods

  • Low-level method used to register event handlers in the SDK. This is useful because it allows you to use new events in the client without needing to update the JS SDK. You can register multiple listeners per event.

    Parameters

    • event: "onActiveSpeakerChange" | "onAppPopout" | "onAuthorized" | "onBreakoutRoomChange" | "onCloseAppForParticipants" | "onCloudRecording" | "onCollaborateChange" | "onConnect" | "onExpandApp" | "onMeeting" | "onMeetingConfigChanged" | "onMessage" | "onMyActiveSpeakerChange" | "onMyMediaChange" | "onMyReaction" | "onMyUserContextChange" | "onParticipantChange" | "onReaction" | "onRunningContextChange" | "sendAppInvitation" | "shareApp" | "onInviteCollaboration" | "onRenderedAppOpened" | "onFeedbackReaction" | "onRemoveFeedbackReaction"
    • handler: ((data: any) => any)
        • (data: any): any
        • Parameters

          • data: any

          Returns any

    Returns void

  • Use this method to remove a previously registered listener.

    Note that the removeEventListener method requires that you registered a named listener function. If you use an anonymous function, you will not be able to remove it using this method.

    Parameters

    • event: "onActiveSpeakerChange" | "onAppPopout" | "onAuthorized" | "onBreakoutRoomChange" | "onCloseAppForParticipants" | "onCloudRecording" | "onCollaborateChange" | "onConnect" | "onExpandApp" | "onMeeting" | "onMeetingConfigChanged" | "onMessage" | "onMyActiveSpeakerChange" | "onMyMediaChange" | "onMyReaction" | "onMyUserContextChange" | "onParticipantChange" | "onReaction" | "onRunningContextChange" | "sendAppInvitation" | "shareApp" | "onInviteCollaboration" | "onRenderedAppOpened" | "onFeedbackReaction" | "onRemoveFeedbackReaction"
    • handler: ((data: any) => any)
        • (data: any): any
        • Parameters

          • data: any

          Returns any

    Returns void

  • Alias for addEventListener

    Parameters

    • event: "onActiveSpeakerChange" | "onAppPopout" | "onAuthorized" | "onBreakoutRoomChange" | "onCloseAppForParticipants" | "onCloudRecording" | "onCollaborateChange" | "onConnect" | "onExpandApp" | "onMeeting" | "onMeetingConfigChanged" | "onMessage" | "onMyActiveSpeakerChange" | "onMyMediaChange" | "onMyReaction" | "onMyUserContextChange" | "onParticipantChange" | "onReaction" | "onRunningContextChange" | "sendAppInvitation" | "shareApp" | "onInviteCollaboration" | "onRenderedAppOpened" | "onFeedbackReaction" | "onRemoveFeedbackReaction"
    • handler: ((data: any) => any)
        • (data: any): any
        • Parameters

          • data: any

          Returns any

    Returns void

  • Parameters

    • event: "onActiveSpeakerChange" | "onAppPopout" | "onAuthorized" | "onBreakoutRoomChange" | "onCloseAppForParticipants" | "onCloudRecording" | "onCollaborateChange" | "onConnect" | "onExpandApp" | "onMeeting" | "onMeetingConfigChanged" | "onMessage" | "onMyActiveSpeakerChange" | "onMyMediaChange" | "onMyReaction" | "onMyUserContextChange" | "onParticipantChange" | "onReaction" | "onRunningContextChange" | "sendAppInvitation" | "shareApp" | "onInviteCollaboration" | "onRenderedAppOpened" | "onFeedbackReaction" | "onRemoveFeedbackReaction"
    • handler: ((data: any) => any)
        • (data: any): any
        • Parameters

          • data: any

          Returns any

    Returns void

Generated using TypeDoc