Create a Video SDK app


The Video SDK provides video, audio, screen sharing, chat, data streams, and more, as a service. You can build with all of these features, or pick and choose. The Video SDK also comes with a full set of server side APIs and Webhooks.

To create a Video SDK app, see the following steps.

On This Page

Create

Create a Video SDK account if you haven't done so already. Then navigate to the Zoom App Marketplace, click Develop, and Build Video SDK.

Information

In the information section, provide the name of your app, and the developer contact name and email address. Product updates about the Video SDK will be sent to that email address.

Download

In the Download section, you will be able to download the Video SDK for each platform.

Video SDK and API Credentials

A Video SDK app comes with two sets of credentials, one set for authorizing use of the Video SDK, and another set for making requests to the Video SDK REST APIs.

Video SDK Key and Secret

The Video SDK Key and Secret credentials are for authorizing use of the Video SDK. See the Video SDK Authorization page for instructions on how to use the Video SDK Key and Secret.

Video SDK API

The Video SDK API Key and Secret are for authorizing use of the Video SDK APIs. See the following for how to generate a Video SDK API JWT token to call the Video SDK APIs.

Each request to the Video SDK API must be authorized by an encrypted Video SDK API JSON Web Token (JWT) as the request header bearer token. A Video SDK API JWT token can be used until the token expires. You can set the token expiry, but we suggest limiting the time up to one hour for increased security.

JWTs are generated with three core parts: Header, Payload, and Signature. When combined, these parts are separated by a period to form a token: 1111111.2222222.3333333.

Header:

The Header includes the specification of the signing algorithm and the type of token.

KeyValue
algHS256
typJWT
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload:

The payload of a JWT contains the claims of the token, or the pieces of information being passed about the user and any metadata required.

KeyValue Description
issYour Video SDK API Key. Required.
iatThe current timestamp. Required.
expJWT expiration date. Required. In epoch format.
{
  "iss": VIDEO_SDK_API_KEY,
  "exp": 1662152446,
  "iat": 1662147046
}

Signature:

To create a signature for the JWT, the header and payload must be encoded with the Video SDK API Secret through an HMAC SHA256 algorithm.

ValueValue Description
VIDEO_SDK_API_SECRETRequired, your Video SDK API Secret.
HMACSHA256(
  base64UrlEncode(header) + '.' + base64UrlEncode(payload),
  VIDEO_SDK_API_SECRET
);

Example Video SDK API JWT:

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJWSURFT19TREtfQVBJX0tFWSIsImV4cCI6MTY2MjE1MjQ0NiwiaWF0IjoxNjYyMTQ3MDQ2fQ.akFeSHZYtpB8E2q7qAHuAMn5Fc2loWYTupP-SOb-rLc

Node.js generate Video SDK API JWT function

In this sample Node.js generate Video SDK API JWT function, we use jsrsasign, an open source cryptographic JavaScript library.

const KJUR = require('jsrsasign')
// https://www.npmjs.com/package/jsrsasign
function generateVideoSdkApiJwt(sdkApiKey, sdkApiSecret) {

  const iat = Math.round((new Date().getTime() - 30000) / 1000)
  const exp = iat + 60 * 60 * 2
  const oHeader = { alg: 'HS256', typ: 'JWT' }

  const oPayload = {
    iss: sdkApiKey,
    iat: iat,
    exp: exp
  }

  const sHeader = JSON.stringify(oHeader)
  const sPayload = JSON.stringify(oPayload)
  const videosdk_api_token = KJUR.jws.JWS.sign('HS256', sHeader, sPayload, sdkApiSecret)
  return videosdk_api_token
}

console.log(generateVideoSdkApiJwt(process.env.VIDEO_SDK_API_KEY, process.env.VIDEO_SDK_API_SECRET))

For additional JWT libraries and examples in more languages, see JWT.io.

You are now ready to call the Video SDK APIs.

Endpoint:

GET https://api.zoom.us/v2/videosdk/sessions

Request Header:

{
  "Authorization": "Bearer {{videosdk_api_token}}"
}

Response Code: 200 OK

Response Body:

{
  "from": "2022-09-01",
  "to": "2022-09-02",
  "page_size": 30,
  "next_page_token": "",
  "sessions": []
}

Video SDK Webhooks

Webhooks can be configured to send Video SDK events to your server as an HTTP POST request. This is useful for tracking events or building out business logic. For example, when you receive a Video SDK session ended webhook, you could kick off a thank you for joining email to the users.

To enable Webhooks, slide the event subscription toggle. Give your set of Webhooks a name, and provide an Event notification endpoint URL. The Event notification endpoint URL is where the Webhook events will be sent to.

Then, choose the events you want to add, like the "User joined" event.

After you finish configuring your Video SDK Webhooks, make sure to click "Save".

Video SDK Dashboard

The Video SDK dashboard displays information about session usage and live or past session data. It displays similar information as the Dashboard for meetings and webinars (referenced in this guide as the Meeting dashboard), except about sessions.

This document outlines the differences between the Video SDK dashboard and the Meeting dashboard. For more information about the Meeting dashboard, see Getting started with Dashboard in the Zoom Help Center.

Dashboard data updates at 12:00 GMT daily. Data is stored in the Dashboard for 12 months.

Getting started

  1. Sign in to the Zoom web portal with a Video SDK account.
  2. Click Dashboard in the navigation menu.

Definitions

Sessions are the fundamental building blocks of the Video SDK. Typically, a session connects two or more users so that they can communicate over video and audio, similar to a virtual meeting. Additional features include in-session chat, screen share, and live streaming. See Create, join, and leave a session for your OS platform in the Zoom Video SDK documentation to learn more.

Session minutes are used for billing purposes and calculated based on the number of participants and session connection time. This metric could also be thought of as participant minutes, because it is the sum of the number of minutes connected to a session for each participant. Here are a few examples of how this calculation would work out:

Minutes of connection for each participantCalculationSession minutes
10:00, 10:00, 10:00SUM(10, 10, 10)30
10:00, 09:06, 03:20SUM(10, 10, 4)24

Note that partial minutes are rounded up to the nearest minute.

Dashboard tab

The Dashboard tab displays information about sessions. This is similar to the Meetings tab in the Meeting dashboard. See Dashboard for meetings and webinars for details.

The key difference between the Video SDK dashboard and the Meeting dashboard is that the Video SDK dashboard displays:

  • Usage by Sessions, Session Minutes, Participants, or Participant Info
  • Top 10 Locations By Session Participants
  • Sessions Year-to-Date Trend

You can download all of this data to CSV files just as you can on the Meeting dashboard. The Downloads tab lists the CSV files.

Sessions tab

The Sessions tab shows data about live or past sessions. Click Live Sessions to show all live sessions. Click Past Sessions to view up to a month's worth of data about past sessions. On the Past Sessions tab, choose a range of up to 30 days in the date selector.

The table displays the following:

  • Session ID — The internal representation of a session. This is unique for each session. If you have issues with the session, use this ID when you contact Zoom Support.
  • Session Name — The topic name set by the developer in the session configuration file.
  • Start Time — The time the host started the session.
  • End Time — The time the host ended the session.
  • Duration — The session duration, in hours, minutes, and seconds (hh:mm:ss). Note that sessions under an hour will not display the hours. For example, a 5-minute session will be displayed as “05:00”.
  • Participants — The number of participants in the session.
  • Host Data Center — The Zoom Data Center that the host connected to for the session. See the Datacenter abbreviation list for details.
  • VoIP — Indicates whether a participant used Voice over Internet Protocol.
  • Video — Indicates whether a participant used video.
  • Screen Sharing — Indicates whether a participant used screen sharing.

For VoIP, Video, and Screen Sharing, icons indicate that a participant used these features. A dash indicates that a participant did not use these features.

Session details

Click a session's ID to display more information about the session.

The top of the page displays the session information from the previous page. The rest of the page displays details about the participants, including:

  • Participant — The participant's display name.
  • Device — The device the participant used to connect to the session.
  • IP Address — The participant's public IP address. Mouse-over the information icon to view the local IP address.
  • Location — The participant's geographical location.
  • Network Type — The network connection recognized by Zoom: Wired, Wifi, PPP (Point-to-Point), or Cellular (3G, 4G, and 5G cellular). If the network is not recognized, this value will be “Others”.
  • Microphone — The microphone device detected by the client.
  • Speaker — The speaker device detected by the client.
  • Camera — The camera device detected by the client.
  • Data Center — The Zoom Data Center that the participant connected to for the session. The Real-Time Web Gateway (RWG) helps participants who join sessions from a web browser to connect to the Zoom Global Network.
  • Connection Type — The data protocol type that the participant used or is using to connect.
  • Join Time — The time the participant joined the meeting.
  • Leave Time — The time the participant left the meeting. Mouse-over the information icon to view the reason why the participant left.

Participant details

Click a participant's name to display more information about them.

The top of the page displays the participant's information from the previous page. The rest of the page displays information about the Audio, Video, Screen Sharing, and CPU Usage. Click each tab to view these details.

The Audio, Video, and Screen Sharing tabs include information about the Receiving and Sending quality of the session:

  • Bitrate — The number of bits per second transmitted over the network, in kbps.
  • Latency — The amount of time it takes for a packet to travel from one point to another, in milliseconds.
  • Jitter — The variation in the delay of received packets, in milliseconds.
  • Packet Loss — The average and maximum amounts of packets that failed to arrive at their destination. This is expressed as the percentage of packets that fail to arrive at their destination.

The Video and Screen Sharing tabs include information about the sending and receiving:

  • Resolution — The number of pixels in each dimension supported by your camera or screen.
  • Frame Rate — The frame rate at which your camera can produce unique images. Zoom supports a frame rate of up to 30fps.

CPU Usage

This displays information about the CPU usage of the Zoom instance (the Zoom Client or SDK) on the user's device, including:

  • Zoom minimum CPU usage
  • Zoom average CPU usage
  • Zoom maximum CPU usage
  • System maximum CPU usage

Graphs

This interface also includes graphs that display this information. Use the slider underneath a graph to increase or decrease the time range in focus.

Downloads tab

The Downloads tab displays the CSV files of the data you chose to export from the Dashboard and Sessions tabs. It displays:

  • Report Type — The report's name.
  • Start Time and End Time — The report's date range.
  • Generate Time — The time at which the report was generated.
  • Report Status — The report's status. For example, if the report is ready for download, the report status is “Download”.

Need help?

If you're looking for help, try Developer Support or our Developer Forum. Priority support is also available with Premier Developer Support plans.