Chilkat Online Tools

Node.js / Zoom API / List all recordings

Back to Collection Items

var os = require('os');
if (os.platform() == 'win32') {  
    if (os.arch() == 'ia32') {
        var chilkat = require('@chilkat/ck-node21-win-ia32');
    } else {
        var chilkat = require('@chilkat/ck-node21-win64'); 
    }
} else if (os.platform() == 'linux') {
    if (os.arch() == 'arm') {
        var chilkat = require('@chilkat/ck-node21-arm');
    } else if (os.arch() == 'x86') {
        var chilkat = require('@chilkat/ck-node21-linux32');
    } else {
        var chilkat = require('@chilkat/ck-node21-linux64');
    }
} else if (os.platform() == 'darwin') {
    if (os.arch() == 'arm64') {
        var chilkat = require('@chilkat/ck-node21-mac-m1');
    } else {
        var chilkat = require('@chilkat/ck-node21-macosx');
    }
}


function chilkatExample() {

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    var http = new chilkat.Http();
    var success;

    var queryParams = new chilkat.JsonObject();
    queryParams.UpdateInt("page_size",30);
    queryParams.UpdateString("next_page_token","quis officia in reprehenderit");
    queryParams.UpdateString("mc","false");
    queryParams.UpdateString("trash","false");
    queryParams.UpdateString("from","1989-05-07");
    queryParams.UpdateString("to","1989-05-07");
    queryParams.UpdateString("trash_type","meeting_recordings");
    queryParams.UpdateInt("meeting_id",68423085);

    // Adds the "Authorization: Bearer <access_token>" header.
    http.AuthToken = "<access_token>";

    // resp: HttpResponse
    var resp = http.QuickRequestParams("GET","https://api.zoom.us/v2/users/:userId/recordings",queryParams);
    if (http.LastMethodSuccess == false) {
        console.log(http.LastErrorText);
        return;
    }

    var sbResponseBody = new chilkat.StringBuilder();
    resp.GetBodySb(sbResponseBody);

    var jResp = new chilkat.JsonObject();
    jResp.LoadSb(sbResponseBody);
    jResp.EmitCompact = false;

    console.log("Response Body:");
    console.log(jResp.Emit());

    var respStatusCode = resp.StatusCode;
    console.log("Response Status Code = " + respStatusCode);
    if (respStatusCode >= 400) {
        console.log("Response Header:");
        console.log(resp.Header);
        console.log("Failed.");

        return;
    }

    // Sample JSON response:
    // (Sample code for parsing the JSON response is shown below)

    // {
    //   "from": "2019-08-15",
    //   "to": "2019-09-15",
    //   "page_count": 1,
    //   "page_size": 30,
    //   "total_records": 1,
    //   "next_page_token": "",
    //   "meetings": [
    //     {
    //       "uuid": "gkABCDEnCkPuA==",
    //       "id": 1000000000000,
    //       "account_id": "AbcjxkfhdEEE",
    //       "host_id": "z8dfkgABBBBBBBfp8uQ",
    //       "topic": "MyTestPollMeeting",
    //       "type": 2,
    //       "start_time": "2019-08-29T21:54:49Z",
    //       "timezone": "America/Los_Angeles",
    //       "duration": 1,
    //       "total_size": 47383,
    //       "recording_count": 1,
    //       "share_url": "https://api.zoom.us/recording/share/IABCDJDKDJEEEEEk_GwfdggdgkTziMw",
    //       "recording_files": [
    //         {
    //           "id": "589ABBBBB-8718e",
    //           "meeting_id": "gkABCDEnCkPuA==",
    //           "recording_start": "2019-08-29T21:54:55Z",
    //           "recording_end": "2019-08-29T21:55:24Z",
    //           "file_type": "M4A",
    //           "file_size": 10098,
    //           "play_url": "https://api.zoom.us/recording/play/pfA2AvvvvvAnAzOibbbbELxl",
    //           "download_url": "https://api.zoom.us/recording/download/pfA2AvvvvvAnAzOibbbbELxl",
    //           "status": "completed",
    //           "recording_type": "audio_only"
    //         },
    //         {
    //           "meeting_id": "gkABCDEnCkPuA==",
    //           "recording_start": "2019-08-29T21:54:55Z",
    //           "recording_end": "2019-08-29T21:55:24Z",
    //           "file_type": "TIMELINE",
    //           "download_url": "https://api.zoom.us/recording/download/cc33ekldfdjfhf3-aaaaa"
    //         },
    //         {
    //           "id": "96119b=kdfhf791",
    //           "meeting_id": "gkABCDEnCkPuA==",
    //           "recording_start": "2019-08-29T21:54:55Z",
    //           "recording_end": "2019-08-29T21:55:24Z",
    //           "file_type": "MP4",
    //           "file_size": 37285,
    //           "play_url": "https://api.zoom.us/recording/play/abcdkjfhdhfdhfj",
    //           "download_url": "https://api.zoom.us/recording/download/abcdkjfhdhfdhfj",
    //           "status": "completed",
    //           "recording_type": "shared_screen_with_speaker_view"
    //         }
    //       ]
    //     }
    //   ]
    // }

    // Sample code for parsing the JSON response...
    // Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

    var uuid;
    var id;
    var account_id;
    var host_id;
    var topic;
    var v_type;
    var start_time;
    var timezone;
    var duration;
    var total_size;
    var recording_count;
    var share_url;
    var j;
    var count_j;
    var id_str;
    var meeting_id;
    var recording_start;
    var recording_end;
    var file_type;
    var file_size;
    var play_url;
    var download_url;
    var status;
    var recording_type;

    var from = jResp.StringOf("from");
    var v_to = jResp.StringOf("to");
    var page_count = jResp.IntOf("page_count");
    var page_size = jResp.IntOf("page_size");
    var total_records = jResp.IntOf("total_records");
    var next_page_token = jResp.StringOf("next_page_token");
    var i = 0;
    var count_i = jResp.SizeOfArray("meetings");
    while (i < count_i) {
        jResp.I = i;
        uuid = jResp.StringOf("meetings[i].uuid");
        id = jResp.IntOf("meetings[i].id");
        account_id = jResp.StringOf("meetings[i].account_id");
        host_id = jResp.StringOf("meetings[i].host_id");
        topic = jResp.StringOf("meetings[i].topic");
        v_type = jResp.IntOf("meetings[i].type");
        start_time = jResp.StringOf("meetings[i].start_time");
        timezone = jResp.StringOf("meetings[i].timezone");
        duration = jResp.IntOf("meetings[i].duration");
        total_size = jResp.IntOf("meetings[i].total_size");
        recording_count = jResp.IntOf("meetings[i].recording_count");
        share_url = jResp.StringOf("meetings[i].share_url");
        j = 0;
        count_j = jResp.SizeOfArray("meetings[i].recording_files");
        while (j < count_j) {
            jResp.J = j;
            id_str = jResp.StringOf("meetings[i].recording_files[j].id");
            meeting_id = jResp.StringOf("meetings[i].recording_files[j].meeting_id");
            recording_start = jResp.StringOf("meetings[i].recording_files[j].recording_start");
            recording_end = jResp.StringOf("meetings[i].recording_files[j].recording_end");
            file_type = jResp.StringOf("meetings[i].recording_files[j].file_type");
            file_size = jResp.IntOf("meetings[i].recording_files[j].file_size");
            play_url = jResp.StringOf("meetings[i].recording_files[j].play_url");
            download_url = jResp.StringOf("meetings[i].recording_files[j].download_url");
            status = jResp.StringOf("meetings[i].recording_files[j].status");
            recording_type = jResp.StringOf("meetings[i].recording_files[j].recording_type");
            j = j+1;
        }

        i = i+1;
    }


}

chilkatExample();

Curl Command

curl -G -d "page_size=30"
	-d "next_page_token=quis%20officia%20in%20reprehenderit"
	-d "mc=false"
	-d "trash=false"
	-d "from=1989-05-07"
	-d "to=1989-05-07"
	-d "trash_type=meeting_recordings"
	-d "meeting_id=68423085"
	-H "Authorization: Bearer <access_token>"
https://api.zoom.us/v2/users/:userId/recordings

Postman Collection Item JSON

{
  "name": "List all recordings",
  "request": {
    "auth": {
      "type": "oauth2"
    },
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "{{baseUrl}}/users/:userId/recordings?page_size=30&next_page_token=quis officia in reprehenderit&mc=false&trash=false&from=1989-05-07&to=1989-05-07&trash_type=meeting_recordings&meeting_id=68423085",
      "host": [
        "{{baseUrl}}"
      ],
      "path": [
        "users",
        ":userId",
        "recordings"
      ],
      "query": [
        {
          "key": "page_size",
          "value": "30",
          "description": "The number of records returned within a single API call."
        },
        {
          "key": "next_page_token",
          "value": "quis officia in reprehenderit",
          "description": "The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes."
        },
        {
          "key": "mc",
          "value": "false",
          "description": "Query Metadata of Recording if an On-Premise Meeting Connector was used for the meeting."
        },
        {
          "key": "trash",
          "value": "false",
          "description": "Query trash.\n`true`: List recordings from trash.<br> `false`: Do not list recordings from the trash.<br> The default value is `false`. If you set it to `true`, you can use the `trash_type` property to indicate the type of Cloud recording that you need to retrieve. "
        },
        {
          "key": "from",
          "value": "1989-05-07",
          "description": "The start date in 'yyyy-mm-dd' UTC format for the date range for which you would like to retrieve recordings. The maximum range can be a month. If no value is provided for this field, the default will be current date. For example, if you make the API request on June 30, 2020, without providing the “from” and “to” parameters, by default the value of 'from' field will be “2020-06-30” and the value of the 'to' field will be “2020-07-01”. \n\n**Note**: The \"trash\" files cannot be filtered by date range and thus, the \"from\" and \"to\" fields should not be used for trash files."
        },
        {
          "key": "to",
          "value": "1989-05-07",
          "description": "End date in 'yyyy-mm-dd' 'yyyy-mm-dd' UTC format. "
        },
        {
          "key": "trash_type",
          "value": "meeting_recordings",
          "description": "The type of Cloud recording that you would like to retrieve from the trash. The value can be one of the following:<br>\n    `meeting_recordings`: List all meeting recordings from the trash.<br>\n    `recording_file`: List all individual recording files from the trash. "
        },
        {
          "key": "meeting_id",
          "value": "68423085",
          "description": "The meeting ID."
        }
      ],
      "variable": [
        {
          "key": "userId",
          "value": "quis officia in reprehenderit",
          "description": "(Required) The user ID or email address of the user. For user-level apps, pass the `me` value for this parameter."
        }
      ]
    },
    "description": "Use this API to list all [cloud recordings](https://support.zoom.us/hc/en-us/articles/203741855-Cloud-Recording) of a user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter.\n\n<p style=\"background-color:#e1f5fe; color:#01579b; padding:8px\"> <b>Note:</b> To access a user's password protected cloud recording, add an <code>access_token</code> parameter to the download URL and provide either the <a href=\"https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-jwt-app\">JWT</a> or the user's OAuth access token as the value of the <code>access_token</code> parameter.</p>\n\nWhen a user records a meeting or a webinar by choosing the **Record to the Cloud** option, the video, audio, and chat text are recorded in the Zoom cloud.\n\n**Scopes:** `recording:read:admin`, `recording:read`<br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`\n\n**Prerequisites:** \n* Pro or a higher plan.\n* Cloud Recording must be enabled on the user's account."
  },
  "response": [
    {
      "name": "**HTTP Status Code:** `200`<br>\nList of recording objects returned.",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/users/:userId/recordings?page_size=30&next_page_token=quis officia in reprehenderit&mc=false&trash=false&from=1989-05-07&to=1989-05-07&trash_type=meeting_recordings&meeting_id=68423085",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "users",
            ":userId",
            "recordings"
          ],
          "query": [
            {
              "key": "page_size",
              "value": "30"
            },
            {
              "key": "next_page_token",
              "value": "quis officia in reprehenderit"
            },
            {
              "key": "mc",
              "value": "false"
            },
            {
              "key": "trash",
              "value": "false"
            },
            {
              "key": "from",
              "value": "1989-05-07"
            },
            {
              "key": "to",
              "value": "1989-05-07"
            },
            {
              "key": "trash_type",
              "value": "meeting_recordings"
            },
            {
              "key": "meeting_id",
              "value": "68423085"
            }
          ],
          "variable": [
            {
              "key": "userId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The user ID or email address of the user. For user-level apps, pass the `me` value for this parameter."
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n \"from\": \"2019-08-15\",\n \"to\": \"2019-09-15\",\n \"page_count\": 1,\n \"page_size\": 30,\n \"total_records\": 1,\n \"next_page_token\": \"\",\n \"meetings\": [\n  {\n   \"uuid\": \"gkABCDEnCkPuA==\",\n   \"id\": 1000000000000,\n   \"account_id\": \"AbcjxkfhdEEE\",\n   \"host_id\": \"z8dfkgABBBBBBBfp8uQ\",\n   \"topic\": \"MyTestPollMeeting\",\n   \"type\": 2,\n   \"start_time\": \"2019-08-29T21:54:49Z\",\n   \"timezone\": \"America/Los_Angeles\",\n   \"duration\": 1,\n   \"total_size\": 47383,\n   \"recording_count\": 1,\n   \"share_url\": \"https://api.zoom.us/recording/share/IABCDJDKDJEEEEEk_GwfdggdgkTziMw\",\n   \"recording_files\": [\n    {\n     \"id\": \"589ABBBBB-8718e\",\n     \"meeting_id\": \"gkABCDEnCkPuA==\",\n     \"recording_start\": \"2019-08-29T21:54:55Z\",\n     \"recording_end\": \"2019-08-29T21:55:24Z\",\n     \"file_type\": \"M4A\",\n     \"file_size\": 10098,\n     \"play_url\": \"https://api.zoom.us/recording/play/pfA2AvvvvvAnAzOibbbbELxl\",\n     \"download_url\": \"https://api.zoom.us/recording/download/pfA2AvvvvvAnAzOibbbbELxl\",\n     \"status\": \"completed\",\n     \"recording_type\": \"audio_only\"\n    },\n    {\n     \"meeting_id\": \"gkABCDEnCkPuA==\",\n     \"recording_start\": \"2019-08-29T21:54:55Z\",\n     \"recording_end\": \"2019-08-29T21:55:24Z\",\n     \"file_type\": \"TIMELINE\",\n     \"download_url\": \"https://api.zoom.us/recording/download/cc33ekldfdjfhf3-aaaaa\"\n    },\n    {\n     \"id\": \"96119b=kdfhf791\",\n     \"meeting_id\": \"gkABCDEnCkPuA==\",\n     \"recording_start\": \"2019-08-29T21:54:55Z\",\n     \"recording_end\": \"2019-08-29T21:55:24Z\",\n     \"file_type\": \"MP4\",\n     \"file_size\": 37285,\n     \"play_url\": \"https://api.zoom.us/recording/play/abcdkjfhdhfdhfj\",\n     \"download_url\": \"https://api.zoom.us/recording/download/abcdkjfhdhfdhfj\",\n     \"status\": \"completed\",\n     \"recording_type\": \"shared_screen_with_speaker_view\"\n    }\n   ]\n  }\n ]\n}"
    },
    {
      "name": "**HTTP Status Code:** `404` **Not Found**<br><br>\n**Error Code:** `1001`<br>\nUser {userId} not exist or not belong to this account.\n",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/users/:userId/recordings?page_size=30&next_page_token=quis officia in reprehenderit&mc=false&trash=false&from=1989-05-07&to=1989-05-07&trash_type=meeting_recordings&meeting_id=68423085",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "users",
            ":userId",
            "recordings"
          ],
          "query": [
            {
              "key": "page_size",
              "value": "30"
            },
            {
              "key": "next_page_token",
              "value": "quis officia in reprehenderit"
            },
            {
              "key": "mc",
              "value": "false"
            },
            {
              "key": "trash",
              "value": "false"
            },
            {
              "key": "from",
              "value": "1989-05-07"
            },
            {
              "key": "to",
              "value": "1989-05-07"
            },
            {
              "key": "trash_type",
              "value": "meeting_recordings"
            },
            {
              "key": "meeting_id",
              "value": "68423085"
            }
          ],
          "variable": [
            {
              "key": "userId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The user ID or email address of the user. For user-level apps, pass the `me` value for this parameter."
            }
          ]
        }
      },
      "status": "Not Found",
      "code": 404,
      "_postman_previewlanguage": "text",
      "header": [
        {
          "key": "Content-Type",
          "value": "text/plain"
        }
      ],
      "cookie": [
      ],
      "body": ""
    }
  ]
}