Cloud recording


Zoom Video SDK sessions offer cloud recording using:

  • In-session SDK functions to enable session hosts to start, pause, resume, and stop recordings. See the SDK tab for these functions.
  • Cloud recording APIs to enable Developers to initiate and manage cloud recording functions. See the REST API tab for details.

Recording resolution depends on the video quality being sent from the Video SDK for Web, with a maximum resolution of 720p.

On this page

Prerequisites

Recording options

You can record Video SDK sessions in many different ways, such as:

Video or screen sharing:

  • Record active speaker with shared screen
  • Record gallery view with shared screen
  • Record active speaker, gallery view and shared screen separately

Audio:

  • Record audio-only files
  • Record one audio file for all participants
  • Record a separate audio file of each participant

Chat:

  • Save chat messages from the session

Advanced:

  • Add a timestamp to the recording
  • Display participants' names in the recording
  • Record thumbnails when sharing
  • Optimize the recording for a third party video editor

Init cloud recording

After joining a session, call client.getRecordingClient() to get the cloud recording client.

const cloudRecording = client.getRecordingClient()

Start recording

cloudRecording.startCloudRecording()

To start recording, PATCH recording.start to the /events endpoint.

Endpoint: https://api.zoom.us/v2/videosdk/sessions/{sessionId}/events

Request header:
{
"Authorization": "Bearer {{VIDEOSDK_JWT_TOKEN}}"
}
Request body:
{
"method": "recording.start"
}
Response code:

202 Accepted

Response body:

Empty

Stop recording

cloudRecording.stopCloudRecording()

To stop recording, PATCH recording.stop to the /events endpoint.

Endpoint: https://api.zoom.us/v2/videosdk/sessions/{sessionId}/events

Request header:
{
"Authorization": "Bearer {{VIDEOSDK_JWT_TOKEN}}"
}
Request body:
{
"method": "recording.stop"
}
Response code:

202 Accepted

Response body:

Empty

Get account recordings

REST API only.

To get all of the cloud recordings for the account, GET /recordings.

Endpoint: https://api.zoom.us/v2/videosdk/recordings

Request header:

{
"Authorization": "Bearer {{VIDEOSDK_JWT_TOKEN}}"
}

Response body:

{
"from": "2022-01-31",
"to": "2022-02-01",
"sessions": [
{
"timezone": "",
"duration": 1,
"session_id": "kwPoX6bTS4uWBYwmEppXvZ++",
"session_name": "testSDK124",
"start_time": "2022-02-01T19:12:01Z",
"total_size": 4581920,
"recording_count": 2,
"recording_files": [
{
"id": "b5487b74-17a2-440e-88e7-d822db00c3cf",
"status": "completed",
"recording_start": "2022-02-01T19:13:02Z",
"recording_end": "2022-02-01T19:14:12Z",
"file_type": "M4A",
"file_size": 1104796,
"download_url": "https://web.example.com/rec/download/Iv73Xi568jxYnorYNWlc_d3eHXGnok0hlmRWat2sfkrFT2NN7TkLFdjpz11S1qJTzXQVdaw1Jn3SQhpR.D8pt9OQFn9VJeg9l",
"recording_type": "audio_only",
"file_extension": "M4A"
},
{
"id": "f0b0b02a-24e6-4b99-af67-b14c03ba42c7",
"status": "completed",
"recording_start": "2022-02-01T19:13:02Z",
"recording_end": "2022-02-01T19:14:12Z",
"file_type": "MP4",
"file_size": 3477124,
"download_url": "https://web.example.com/rec/download/H6m6EAjAkKYyQYKjRgKc881bI95JPTBhX9tXQ3q0na-MsseH5eWv4V2Vp4dr3fy852IPrvH2UzRZQVYR.xCPjdzRHX8tEIyrI",
"recording_type": "shared_screen_with_speaker_view",
"file_extension": "MP4"
}
]
}
],
"page_size": 30,
"total_records": 1,
"next_page_token": ""
}

Get session recordings

REST API only.

To get all the recordings for the session, GET {sessionId}/recordings.

Endpoint: https://api.zoom.us/v2/videosdk/sessions/{sessionId}/recordings

Request header:

{
"Authorization": "Bearer {{VIDEOSDK_JWT_TOKEN}}"
}

Response body:

{
"timezone": "",
"duration": 1,
"session_id": "kwPoX6bTS4uWBYwmEpzBvA==",
"session_name": "testSDK124",
"start_time": "2022-02-01T19:12:01Z",
"total_size": 5686716,
"recording_count": 3,
"recording_files": [
{
"id": "f0b0b02a-24e6-4b57-xx67-b14c03ba42c7",
"status": "completed",
"recording_start": "2022-02-01T19:13:02Z",
"recording_end": "2022-02-01T19:14:12Z",
"file_type": "MP4",
"file_size": 3477124,
"download_url": "https://web.example.com/rec/download/gYV4085ivAhN0sSASa0L4KNu6lGnFvsahfIKFxIuKE5UeLrVit16OJ2tCBLSCSQLnA5dWlJ1jknPVJVu.sf0cPIDusWDMqTbO",
"recording_type": "shared_screen_with_speaker_view",
"file_extension": "MP4"
},
{
"id": "b5487b74-17a2-440e-93e7-d009db00c3cf",
"status": "completed",
"recording_start": "2022-02-01T19:13:02Z",
"recording_end": "2022-02-01T19:14:12Z",
"file_type": "M4A",
"file_size": 1104796,
"download_url": "https://web.example.com/rec/download/1fmg5SxfSW7UuA4cQT6282isttmNTddairEwq7uMZEJqDs7rFB-rSpQS2kBnT2zBqH5-mM3Q6nZBfQyY.djXshU4mG85q_bZ7",
"recording_type": "audio_only",
"file_extension": "M4A"
}
],
"participant_audio_files": [
{
"id": "30306814-b919-41e7-9iit-e20ed2c7ab21",
"status": "completed",
"recording_start": "2022-02-01T19:13:02Z",
"recording_end": "2022-02-01T19:14:12Z",
"file_type": "M4A",
"file_size": 1104796,
"download_url": "https://web.example.com/rec/download/5JNOuxxPKaYQqKmk5ZegBlUlJq6_TVapkAPlTY9uoiFWU2Xy9Ssh04_bJuT9lMrVQRVPm6nG-wX7na9a.C7pS655JRCXRE9l4",
"file_name": "Audio only - Example53",
"file_extension": "M4A"
}
]
}

Recording completed webhook

You can also receive a POST request to your server with JSON (a webhook) once the recording has completed processing. You can use Webhooks to automate distribution or uploading of the recording files to your own cloud storage system. See Using Zoom Webhooks and the session.recording_completed webhook for details.

Sample payload:

{
"event": "string",
"event_ts": "long",
"payload": {
"account_id": "string",
"object": {
"session_id": "string",
"session_name": "string",
"start_time": "string [date-time]",
"timezone": "string",
"recording_files": [
{
"id": "string",
"recording_start": "string",
"recording_end": "string",
"file_name": "string",
"file_path": "string",
"file_type": "string",
"file_size": "number",
"file_extension": "string",
"download_url": "string",
"status": "string",
"recording_type": "string"
}
],
"participant_audio_files": [
{
"id": "string",
"recording_start": "string",
"recording_end": "string",
"file_type": "string",
"file_name": "string",
"file_size": "integer",
"file_extension": "string",
"download_url": "string",
"file_path": "string",
"status": "string",
"recording_type": "string"
}
]
}
}
}

For more details, see the full Video SDK API and Webhook reference pages.

View recordings

Recordings are also available to view and download from your Video SDK Account Recording page.

Next Steps

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.