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.

Hey @wjs,

Thanks so much for sharing this side-by-side. I think I see where the confusion is coming in, and apologies, as it’s a bit of a nuance in our platform.

The Past Meetings endpoint that you’re hitting will only return past meetings that had at least 1 non-host attendee. If a meeting only had 1 attendee (the host), it will not be returned by the API. The two instances you’re seeing for 10/16 had at least 2 attendees, so you’re seeing them in the the API response, while I can see from logs on my end that the other two instances appear to have had only 1 attendee.

I hope this helps to clarify, but let me know if you still have questions about this!

Best,
Will

Hi @buc,

In checking that meeting ID, it looks like you’re running into the same situation I described above—each of these instances had only 1 attendee, so they won’t be returned by this endpoint.

Thanks,
Will

@will.zoom Yes you are right there is only 1 attendee, but as i see from UI we are getting 3 recordings.
So my requirement is to get those three recordings, could you please let me know from which endpoint i can get those recordings?
UI screenshot

Hi @buc,

Since it won’t be possible to query these past instances with 1 attendee via the past_meetings endpoint, I’m happy to provide you with the corresponding UUIDs, which you can then pass to the GET Meetings Recordings endpoint as a workaround:
4YkvwpboTPmLK6/iPfxv+A==
m4uHgpcJTwq/Si7ZtKlzAg==
MoYiLnYrQreX4juYkZV0rw==

I hope this helps!

Thanks,
Will

@will.zoom thanks for the efforts, but i need API from where i can get these UUIDS which you have mentioned. This is my actual requirement.

Hey @buc,

A few options for you are to use the Recording Completed Webhook, which will automatically send you the recording download_url, play_url and additional meeting info once a recording has completed processing.

Or, you can have a second user join to make sure the meeting report is generated.

Thanks,
Tommy

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.