Zoom `get meeting recording` API returns only the latest set of recordings of a meeting

Description
Hi Team,

I have tried to get recordings of a particular meeting. There are two sets of recordings for a single meeting, but only the latest recordings are available in the API.

Which App Type (OAuth / Chatbot / JWT / Webhook)?
We are using the JWT authentication for this API request

Which Endpoint/s?
API endpoint used: # /meetings/{meetingId}/recordings

How To Reproduce (If applicable)
Steps to reproduce the behavior:

  1. Request this API endpoint with the meeting id - # /meetings/{meetingId}/recordings
  2. In the web dashboard of Zoom, we can see there are two recordings available. But we only get the latest recording in the API response.

Please DM so that I can share the Meeting ID with you.

Hi @sanju.ps,

I just DM’d you for additional details.

Thanks!
Will

Hi Will,

Here is the meeting ID:

URLs of the different recording files for this same Meeting ID:

  1. https://sorgem.zoom.us/recording/management/detail?meeting_id=
  2. https://sorgem.zoom.us/recording/management/detail?meeting_id=

Please see attached screenshot of the above-mentioned two different recordings.

Thanks.

Hi @sanju.ps,

Thanks for sharing this.

This is expected behavior—the GET Meeting Recording endpoint will only return the latest recording. You would have to call this endpoint 2 times using each individual meeting UUID since each meeting instance is considered different. You can get the individual UUIDs for this meetings 2 instances by calling this endpoint:
https://api.zoom.us/v2/past_meetings/{meetingId}/instances

If you wanted to get all the recordings in one go, you could call the List All Recordings endpoint which is the same endpoint you are seeing in the Zoom web portal.

Thanks,
Will

@will.zoom Does the list all recordings differentiate between scheduled and non-scheduled? For instance the site.zoom.us/recording lists 39 recordings for me (dating back to March), but even if I set the times on the endpoint /users/me/recordings, I only get 8. Using the /past_meetings/{meetingId}/instances has many more, but even it leaves some out. I had assumed if I iterated over all of the past meetings and looked at the recordings there it would be complete. Is there something I am missing?

Thanks,

Joe

Hey @wjs,

Do you have an example request/response you can share? Based on your description, it sounds like perhaps you could be pulling recordings for just the last instance of some recurring meetings. But I’m happy to take a closer look!

Thanks,
Will

@will.zoom

I am not sure what in particular would be most helpful, but I was looking at this call /past_meetings/3814511099/instances

That produces 40 responses, not all of which have recordings. If I use

/meetings/{meeting_uuid}/recordings

and loop over all of the recordings I only see 2 recordings on 10-16, but on the https://ORG.zoom.us/recording page there are 4. I can get those additional 2 recordings if I also query /users/me/recordings, but it appears to be missing the other two. I specified the correct time frames, and checked double encoding of the uuids, and specified 300 returns per page (nothing had more than a single page).

I suppose the question is, how is the ORG.zoom.us/recording generated, or what is the best way to get all recordings for a meeting.

Hey @wjs,

Thanks for sharing these additional details. Is it possible to share a screenshot of the recordings in the UI that you’re not getting via API? If you could also share the response for your call to /meetings/meetingUUID/recordings, I’d like to compare the two and help debug!

Any recordings in the web portal should also be accessible via the API.

Thanks,
Will

Thanks @will.zoom. Here is the image I see, and the API response from:

https://api.zoom.us/v2/past_meetings/3814511099/instances

Note that there are 4 recordings from 2020-10-16 on the image, but only 2 in the return from the API. I verified that there are really 4 recordings that I can download from the UI. Any idea what is going on there?

{
“meetings”: [
{
“start_time”: “2020-08-20T19:02:29Z”,
“uuid”: “4XBioHxGQ16CXRtwklGynQ==”
},
{
“start_time”: “2020-04-29T16:53:18Z”,
“uuid”: “4sFHUVShSb2+WaSIqCteUQ==”
},
{
“start_time”: “2020-08-11T16:26:56Z”,
“uuid”: “5pf2fFRITuCKvMyBcT/9LQ==”
},
{
“start_time”: “2020-03-26T14:42:53Z”,
“uuid”: “6cMUlJJjQTWHZHoNc4M6hQ==”
},
{
“start_time”: “2020-11-18T17:09:30Z”,
“uuid”: “6wx6qGUVQkaMl6bHWOgybA==”
},
{
“start_time”: “2020-10-16T18:40:21Z”,
“uuid”: “7OHKoftSTpy7ZIOiSuXT5Q==”
},
{
“start_time”: “2020-08-11T21:11:13Z”,
“uuid”: “7QssTmMMQziFUw2CYUvpYA==”
},
{
“start_time”: “2020-03-16T13:39:19Z”,
“uuid”: “86ExZhLHTZ+n5G8/2usgMA==”
},
{
“start_time”: “2020-08-27T14:56:47Z”,
“uuid”: “99q3+X8YTGy4lszF76fmHQ==”
},
{
“start_time”: “2020-04-22T17:01:02Z”,
“uuid”: “Ac33fPZ6TPmO66gsOJr+kA==”
},
{
“start_time”: “2020-08-20T23:00:38Z”,
“uuid”: “BOo/FpFuSAiJkzHP3BM6Sg==”
},
{
“start_time”: “2020-03-11T18:59:10Z”,
“uuid”: “DM0bnYWfTdqmhi3EchMJfA==”
},
{
“start_time”: “2020-03-17T17:01:08Z”,
“uuid”: “FhrTysCTS769uTVUnH8krQ==”
},
{
“start_time”: “2020-04-03T16:06:55Z”,
“uuid”: “M37wyuZESg2mDlc39moDAw==”
},
{
“start_time”: “2020-03-11T16:59:55Z”,
“uuid”: “NedH2+BJRRySo6HCVM2b/A==”
},
{
“start_time”: “2020-08-24T19:56:04Z”,
“uuid”: “OcaY9aRqRRy7cc8MegoAWg==”
},
{
“start_time”: “2020-04-24T18:47:30Z”,
“uuid”: “OmNJxjBATc6cnni9d6nhQg==”
},
{
“start_time”: “2020-03-11T08:47:53Z”,
“uuid”: “RDLTLoneSj+l5s5vlY/AMw==”
},
{
“start_time”: “2020-03-20T13:03:46Z”,
“uuid”: “S9tryJaYTISermsUm+7nHg==”
},
{
“start_time”: “2020-04-24T18:42:17Z”,
“uuid”: “Un/XpivcSVmYZnNp0+3vRA==”
},
{
“start_time”: “2020-08-12T15:45:15Z”,
“uuid”: “VHEQDTNCS6m7JLe+fXzfsA==”
},
{
“start_time”: “2020-09-23T13:49:16Z”,
“uuid”: “WO8MNBBZRCyeVOrw9MIHQQ==”
},
{
“start_time”: “2020-04-03T17:15:19Z”,
“uuid”: “XDzYzkDyQUOEUzrY7nqh5Q==”
},
{
“start_time”: “2020-03-17T17:06:14Z”,
“uuid”: “b9LkDh3lTlCpaVn8G1f2jw==”
},
{
“start_time”: “2020-10-07T16:42:55Z”,
“uuid”: “c1RKactHQdqtO4WbuU82QQ==”
},
{
“start_time”: “2020-03-26T15:38:34Z”,
“uuid”: “dEU7oT/3RbCIyTA3lcPNIA==”
},
{
“start_time”: “2020-03-24T12:35:20Z”,
“uuid”: “dLR1v0D+RfqsJuuXlpPuAQ==”
},
{
“start_time”: “2020-03-25T16:02:34Z”,
“uuid”: “dXYajqLMRP+gaP42LVHceA==”
},
{
“start_time”: “2020-03-26T14:55:19Z”,
“uuid”: “g0zOZ/FJRaWC8/1EsEEaRQ==”
},
{
“start_time”: “2020-04-29T14:28:08Z”,
“uuid”: “hVmhrLsAQCeRQzWdd1jVlA==”
},
{
“start_time”: “2020-04-16T15:20:37Z”,
“uuid”: “imv3OpXuS7enjiBgzeRYxw==”
},
{
“start_time”: “2020-04-17T17:07:44Z”,
“uuid”: “mGL9Y2B/TRyvoOjTZv0/ew==”
},
{
“start_time”: “2020-03-11T08:29:53Z”,
“uuid”: “mdSOeNQTSBiuwu0SX31ZpA==”
},
{
“start_time”: “2020-03-11T08:04:48Z”,
“uuid”: “nOMXTdVpTU2Qmjp4S5VVTw==”
},
{
“start_time”: “2020-03-11T08:16:53Z”,
“uuid”: “p9eqjbkBTKSxY5QSiMAgUw==”
},
{
“start_time”: “2020-10-16T19:10:06Z”,
“uuid”: “qA4ivmv/SM+Y3DzhEij9pQ==”
},
{
“start_time”: “2020-08-20T18:21:22Z”,
“uuid”: “sehjzYrHSyGjZIf56iM3NQ==”
},
{
“start_time”: “2020-03-25T15:40:48Z”,
“uuid”: “t+FZIZ61R8y8BEG+BwIHmw==”
},
{
“start_time”: “2020-03-12T16:15:59Z”,
“uuid”: “tpPxnq5cRE+Ifdg/MK5q2Q==”
},
{
“start_time”: “2020-08-10T19:17:10Z”,
“uuid”: “wkSOl6ZIShuAqyKcvh0SGg==”
}
]
}

@will.zoom there is meeting “96312058418” which i have scheduled from create meeting API and is also a recurring meeting. I am using /past_meetings/{meetingId}/instances API but response is coming blank but there are already 2 meeting recordings exists in the system. Could you please guide me what i am doing wrong and what i can do for this?
Objective : Download multiple recordings on multiple instances of a scheduled/recurring meeting.