### Setup Python Virtual Environment and Install Dependencies Source: https://developers.zoom.us/docs/rtms/meetings/quickstart.md Navigate into the Python project directory, create and activate a virtual environment, and install the RTMS SDK and other dependencies using pip. ```shell # Create virtual environment python3 -m venv .venv # Activate virtual environment source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies pip install python-dotenv # Install the SDK pip install rtms ``` -------------------------------- ### Session Started Event Request Example Source: https://developers.zoom.us/docs/api/video-sdk/events.md This JSON object is an example of a request body for the 'session.started' event. It contains details about the session that has just started. ```json { "event": "session.started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "" } } } ``` -------------------------------- ### Setting up and Using Annotation Tools Source: https://developers.zoom.us/docs/video-sdk/web/share-annotation.md This example shows the steps to start annotation, retrieve the annotation controller, and then configure a pen tool with a specific width. Ensure the Video SDK for web version 2.2.0 or later is used. ```javascript // Step 1: Get the annotation controller const annotationController = client .getMediaStream() .getAnnotationController(); // Step 2: Start annotation await client.getMediaStream().startAnnotation(); // Step 3: Set up a pen tool await annotationController.setToolType(AnnotationToolType.Pen); await annotationController.setToolWidth(8); ``` -------------------------------- ### Get user My docs info Source: https://developers.zoom.us/docs/api/canvas.md Retrieves the root My Docs information for a specified user. This is useful for obtaining the starting point of a user's document hierarchy, for example, when needing to list children of another user's My docs. ```APIDOC ## GET /docs/users/{userId}/root ### Description Get the specified user's My docs info. My docs is the root of a user's documents. ### Method GET ### Endpoint /docs/users/{userId}/root ### Parameters #### Path Parameters - **userId** (string) - Required - The ID of the user. #### Responses ##### Status: 200 Returns user My Docs info. ###### Content-Type: application/json - **root_id** (string) - Required - User My Docs ID. ### Request Example (No request body for GET request) ### Response Example ```json { "root_id": "dAdqGeghRh6QF4dDe1Ex_A" } ``` ``` -------------------------------- ### Start Server with npm Source: https://developers.zoom.us/docs/rtms/meetings/quickstart.md Run this command to set up the server to listen for incoming webhook events when the app is launched in a meeting. ```shell npm run start ``` -------------------------------- ### Start Server with Python Source: https://developers.zoom.us/docs/rtms/meetings/quickstart.md Run this command to set up the server to listen for incoming webhook events when the app is launched in a meeting. ```shell python main.py ``` -------------------------------- ### Get Webinar Detail Report Example Source: https://developers.zoom.us/docs/api/meetings/ma.md This JSON object represents a successful response when retrieving webinar details. It includes information such as meeting ID, topic, duration, participant count, start and end times, and custom tracking fields. ```json { "custom_keys": [ { "key": "Host Nation", "value": "US" } ], "dept": "HR", "duration": 2, "end_time": "2022-03-15T07:42:22Z", "id": 345678902224, "participants_count": 4, "start_time": "2022-03-15T07:40:46Z", "topic": "My Meeting", "total_minutes": 3, "tracking_fields": [ { "field": "Host Nation", "value": "US" } ], "type": 4, "user_email": "jchill@example.com", "user_name": "Jill Chill", "uuid": "4444AAAiAAAAAiAiAiiAii==" } ``` -------------------------------- ### Get Zoom Room Account Profile Response Source: https://developers.zoom.us/docs/api/rooms/ma.md Example JSON response for a successful retrieval of Zoom Room account profile details. This includes basic settings like passcode and support contact, as well as setup configurations for background images. ```json { "basic": { "required_code_to_ext": true, "room_passcode": "111111", "support_email": "contact-it@example.com", "support_phone": "18798769876" }, "setup": { "apply_background_image_to_all_displays": true, "background_image_info": [ { "display_id": "zoom_rooms_display1", "content_id": "zrd9DycNSxK6K4dEUS6z-g", "download_url": "https://zoom.us/file/Sq2mdxqRQ9eq7wmD5TFD6g?jwt=eyJ0eXAiOiJKV1QiLCJrIjoiaHRlNU05dDciLCJ6bV9za20iOiJ6bV9vMm0iLCJhbGc", "download_url_ttl": 3600 } ] } } ``` -------------------------------- ### Check System Requirements and Initialize SDK (Async/Await) Source: https://developers.zoom.us/docs/video-sdk/web/browser-support.md This example demonstrates checking system requirements and initializing the Zoom Video SDK using async/await syntax for cleaner asynchronous code. Ensure your environment supports top-level await. ```jsx import ZoomVideo from "@zoom/videosdk" const client = ZoomVideo.createClient(); let stream; if ( ZoomVideo.checkSystemRequirements().video && ZoomVideo.checkSystemRequirements().audio ) { await client.init("en-US", "Global", { patchJsMedia: true }); await client.join(topic, token, userName, password); stream = client.getMediaStream(); } ``` -------------------------------- ### Setup and Background Image Configuration Source: https://developers.zoom.us/docs/api/rooms.md This section details the 'setup' object, including options for applying background images across all displays and configuring individual display backgrounds. ```APIDOC ## Object: setup ### Description Configuration for Zoom Room setup, including background image settings. ### Fields - **`apply_background_image_to_all_displays`** (boolean) - Apply the same background image to all displays. - **`background_image_info`** (array of objects) - Background image information for each display. - **Items:** - **`content_id`** (string) - Content ID for background image library item or default item. Set to empty string to reset. - **`display_id`** (string) - The ID of the display to apply the background image to. ``` -------------------------------- ### Contact Center Voice RTMS Started Request Example Source: https://developers.zoom.us/docs/api/rtms/events.md Example JSON payload for the contact_center.voice_rtms_started event. This event signifies the start of an RTMS stream for a contact center voice call. ```json { "event": "", "event_ts": 1, "payload": { "engagement_id": "", "rtms_stream_id": "", "server_urls": "" } } ``` -------------------------------- ### Get Region Response Body Example Source: https://developers.zoom.us/docs/api/contact-center.md Example of a successful response when retrieving information about a Contact Center region. ```json { "region_id": "36c8dc7c-695f-11ed-a081-0a514d46f86b", "region_name": "Main Region", "sip_zone_id": "AfgzMEweSQ6tqzC8jhYJ2A", "sip_zone_name": "zccsipzone", "is_main_region": true } ``` -------------------------------- ### Build and Run Electron App (Windows) Source: https://developers.zoom.us/docs/meeting-sdk/electron/download-and-install.md Build and run the sample Electron app after installing all dependencies on Windows. ```bash npm run electron:serve ``` -------------------------------- ### Start Scheduled Meeting Source: https://developers.zoom.us/docs/api/rooms.md This example shows how to start a scheduled meeting using its event ID. The `event_id` is required for scheduled meetings. ```json { "event_id": "your_event_id" } ``` -------------------------------- ### Get Assignees of a Task Example Source: https://developers.zoom.us/docs/api/tasks.md Retrieves the list of assignees for a specified task. This example shows a successful response with task ID and assignee details. ```json { "task_id": "z2vo9qNRRHKArlJqkVHNUw", "assignees": [ { "user_id": "CcrEGgmeQem1uyJsuIRKwA", "display_name": "John Doe", "email": "john.doe@example.com", "avatar": "https://example.com/avatar.jpg" } ] } ``` -------------------------------- ### Navigate and Run Sample App Source: https://developers.zoom.us/docs/video-sdk/flutter/sample-app.md Change directory to the example folder and run the Flutter app. ```shell cd example flutter run ``` -------------------------------- ### Get CRM Accounts Example Source: https://developers.zoom.us/docs/api/iq.md Retrieves a list of CRM account objects. This example shows the expected JSON response structure for a successful retrieval. ```json { "data": [ { "zra_account_id": "OPENAPIaCLhU8cQR4qfdTSvT4stxA006aa00000JkrQiiAx", "crm_account_id": "006aa00000JkrQiiAx", "owner_email": "jchill@example.com", "account_name": "Some Company", "domain": "example.com", "type": "Prospect", "industry": "Electronics", "annual_revenue": 750000, "phone": "800-0555-0100", "employees": 30, "modify_time": "2025-11-20T12:00:00Z", "create_time": "2025-11-20T12:00:00Z" } ] } ``` -------------------------------- ### Install Prerequisites Source: https://developers.zoom.us/docs/video-sdk/linux/integrate.md Install the necessary build tools: gcc, g++ compiler, and make utility. These are required for compiling and linking the SDK. ```shell sudo apt install gcc sudo apt install g++ sudo apt install make ``` -------------------------------- ### Initialize SDK with Swift Source: https://developers.zoom.us/docs/video-sdk/ios/integrate.md Create an instance of ZoomVideoSDKInitParams and set the domain and logging preference. This must be done on the main thread. ```swift let initParams = ZoomVideoSDKInitParams() initParams.domain = "zoom.us" initParams.enableLog = true ``` -------------------------------- ### Get Participant Identifier Code Example Source: https://developers.zoom.us/docs/api/crc.md Example JSON response for obtaining a participant identifier code. This code is used to authenticate CRC meetings. ```json { "participant_identifier_code": "41bc4gfs3", "expire_in": 7200, "paid_crc_plan_participant": true } ``` -------------------------------- ### Basic Express Server Setup Source: https://developers.zoom.us/docs/rtms/contact-center/quickstart.md Sets up a basic Express server that listens for incoming requests and logs its running status. It includes importing necessary modules and defining a root route for testing. ```javascript import express from "express"; import dotenv from "dotenv"; import WebSocket from "ws"; // Load environment variables from .env dotenv.config(); const app = express(); // Enable JSON body parsing app.use(express.json()); // Basic root route for testing app.get("/", (req, res) => { res.send("Zoom RTMS Server is up and running."); }); // Listen on localhost:3000 const PORT = 3000; app.listen(PORT, () => { console.log(`Server is listening on http://localhost:${PORT}`); }); ``` -------------------------------- ### RTMS Started Event Payload Example Source: https://developers.zoom.us/docs/api/rtms/events.md This JSON object represents the payload for an RTMS started event. It includes details about concurrent stream numbers and limits. ```json { "event": "", "event_ts": 1, "payload": { "concurrency_limit": 1, "concurrency_number": 1, "percentage": 1 } } ``` -------------------------------- ### Get All Quotes for a Zoom Partner Source: https://developers.zoom.us/docs/api/commerce.md Retrieve all quotes for a Zoom partner using the GET /commerce/quotes endpoint. This snippet shows an example JSON response structure. ```json { "page_count": 20, "quote_list": [ { "quote_reference_id": "OR-125613343", "quote_number": "O-3429342", "status": "submitted", "quote_type": "sale", "transaction_type": "New", "end_customer_account_name": "dfreABC Pvt. Ltd.", "end_customer_account_number": "3842618277", "end_customer_crm_account_number": "A-3454334", "sub_reseller_name": "John", "sub_reseller_crm_account_number": "A-348742", "invoice_owner_name": "John", "invoice_owner_crm_account_number": "A-348742", "creation_date": "2024-07-01", "effective_date": "2024-07-01", "net_amount": { "amount": 100000, "currency": "USD" }, "updated_date": "2024-07-01", "trade_screening": false, "deal_reg_number": "DELREG-1002-L1", "po_number": "PO-10021-A" } ] } ``` -------------------------------- ### SDK Initialization and Basic Usage Source: https://developers.zoom.us/docs/contact-center/web/campaigns.md This snippet demonstrates how to initialize the SDK using the `zoomCampaignSdk:ready` event and perform basic actions like opening the campaign window. ```APIDOC ## SDK Initialization and Basic Usage ### Description This code demonstrates how to properly initialize and use the Contact Center SDK for web. It includes the essential `zoomCampaignSdk:ready` event listener to ensure the SDK is fully loaded before attempting to interact with it, such as opening the campaign window. ### Method `window.addEventListener` with `zoomCampaignSdk:ready` event, followed by `zoomCampaignSdk.open()`. ### Endpoint N/A (Client-side JavaScript) ### Parameters N/A ### Request Example ```javascript window.addEventListener("zoomCampaignSdk:ready", () => { // customer can do something here: // ... // eg. using it to open campaign zoomCampaignSdk.open(); }); ``` ### Response N/A (Client-side JavaScript execution) #### Success Response (200) N/A #### Response Example N/A ``` -------------------------------- ### Initialize SDK with Objective-C Source: https://developers.zoom.us/docs/video-sdk/ios/integrate.md Create an instance of ZoomVideoSDKInitParams and set the domain and logging preference. This must be done on the main thread. ```objectivec ZoomVideoSDKInitParams *initParams = [[ZoomVideoSDKInitParams alloc] init]; initParams.domain = @"zoom.us"; initParams.enableLog = YES; ``` -------------------------------- ### Example: Assigning a Cohost using UserID Source: https://developers.zoom.us/docs/rooms/cli/zCommands This example demonstrates how to first list participants to get a UserID, and then use that UserID with the zCommand Assign Cohost command. ```shell zCommand Call ListParticipants OK *r ListParticipantsResult 2 user_name: Pengfei Wang111 *r ListParticipantsResult 2 user_id: 16780288 *r ListParticipantsResult 2 is_host: off *r ListParticipantsResult 2 is_myself: off *r ListParticipantsResult 2 can_record: off zCommand Assign Cohost: 16780288 OK *r AssignCohostResult(status=OK): ** end ``` -------------------------------- ### Example API Response for User Information Source: https://developers.zoom.us/docs/internal-apps/s2s-oauth.md A successful GET request to the /users/me endpoint will return user details. This example shows a partial response structure. ```json { "id": "ZXY333", "first_name": "Joe", "last_name": "Chill", "display_name": "Joe Chill", "email": "jchill@example.com", "type": 1 // ... } ``` -------------------------------- ### Initialize and Show Video in Campaign Mode (Swift) Source: https://developers.zoom.us/docs/contact-center/ios/campaigns.md This Swift snippet demonstrates how to set up and display a video view for campaigns. It covers item creation, service initialization, and UI fetching. Ensure you have the necessary API key and campaign information. ```swift /// demo code to initialize the chat service and show the video view in the Campaign mode. func showVideo(_ campaignInfo: ZoomCCCampaignInfo) { /** First, cteate a ZoomCCItem class instance. This determines the channel(chat, video, ZVA) to use. For the video case, set the sdkType property to ZoomCCIInterfaceType_Video. The ApiKey value can be got in the campaign creation page by clicking the blue button named "Embed Web Tag". The page path in the admin page is Campaign Management-> Web and In-App->Embed Web Tag. When using the Campaign mode, the property useCampaignMode should be set to YES, and the property campaignInfo should be set with the target campaign value fetched from the method [ZoomCCInterface getCampaigns:complete: ]. */ let item = ZoomCCItem() item.sdkType = .video item.apiKey = APP_CAMPAIGN_API_KEY item.useCampaignMode = true item.campaignInfo = campaignInfo /** Second, fetch the video service instance, then set its delegate. This delegate receives callbacks from ZoomCCSDK. When the service status is ZoomCCSDKStatus_Initial, initialize the video service by calling the "initializeWithItem:" and "login" functions. After that, the internal service will connect to the server to fetch information, letting us send and receive messages from the server. ``` -------------------------------- ### Install Build Dependencies and Create Log Directory Source: https://developers.zoom.us/docs/video-sdk/linux/get-started.md Installs necessary system libraries for running the Electron demo and creates a log directory in the user's home folder. ```shell sudo apt install -y libglib2.0-dev liblzma-dev libxcb-image0 libxcb-keysyms1 libxcb-xfixes0 libxcb-xkb1 libxcb-shape0 libxcb-shm0 libxcb-randr0 libxcb-xtest0 libgbm1 libxtst6 libgl1 libnss3 libasound2 libpulse0 mkdir -p ~/.zoom/logs ``` -------------------------------- ### Make GET Request to Get User Details (Node.js) Source: https://developers.zoom.us/docs/api/using-zoom-apis.md This example demonstrates how to make a GET request to retrieve user details using an access token. Replace '{yourtokenhere}' with your actual token and 'sjkf1234' with the target user ID. ```javascript var request = require("request"); var options = { method: "GET", // A non-existing sample userId is used in the example below. url: "https://api.zoom.us/v2/users/sjkf1234", headers: { authorization: "Bearer {yourtokenhere}", // Do not publish or share your token publicly. }, }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); ``` -------------------------------- ### Get Engagement Recording Status Example Source: https://developers.zoom.us/docs/api/contact-center.md Example JSON response when polling an engagement recording's status. This shows the recording status and last modified time. ```json { "statuses": [ { "status": "pause", "last_modified_time": "2023-01-01T00:00:00Z" } ], "engagement_id": "W_VATTk_Q5aW6z5rZtBxAQ", "channel": "video", "channel_source": "live_video" } ``` -------------------------------- ### Initialize Video SDK Configuration Source: https://developers.zoom.us/docs/video-sdk/flutter/sample-app.md Example of initializing the Video SDK with configuration settings in the main.dart file. ```dart InitConfig initConfig = InitConfig( domain: 'zoom.us', enableLog: false, ); ``` -------------------------------- ### Example Download URL Source: https://developers.zoom.us/docs/api/meetings/events.md An example of a complete download URL with placeholder values for the recording ID and access token. ```url https://zoom.us/recording/download/123456?access_token=abcdefgh ``` -------------------------------- ### Engagement Events Response Example Source: https://developers.zoom.us/docs/api/contact-center.md Example JSON response for retrieving an engagement's events. Shows event details like start time, name, channel, and content. ```json { "engagement_id": "W_VATTk_Q5aW6z5rZtBxAQ", "events": [ { "start_time": "2021-12-03T13:07:46Z", "event_name": "Start", "channel": "video", "channel_source": "in_app_video", "event_content": "{\"flow_id\": \"zwKiV80hQ7CwRg9BEm0Bvw\",\"flow_name\": \"Demo\"}" } ] } ``` -------------------------------- ### Initialize SDK Parameters (Swift) Source: https://developers.zoom.us/docs/video-sdk/macos/integrate.md Create an instance of ZMVideoSDKInitParams and set the domain and logging preference. This must be done before calling any other SDK functions. ```swift let initParams = ZMVideoSDKInitParams() initParams.domain = "https://zoom.us" initParams.enableLog = true ```