Missing recordings when using recordings API

The “Recordings and Transcripts” page on your web app (/recording/meeting/transcript) lists many recordings.

There is only a single user in the account (verified by calling /v2/users)

A call to list the recordings (/v2/users/me/recordings), regardless of parameters I’ve specified always returns zero results.

{"from":"2025-03-11","to":"2025-04-11","page_count":0,"page_size":0,"total_records":0,"next_page_token":"","meetings":[]}

I’ve tried to call to list an individual meeting’s recordings (/v2/meetings/:meetingId/recordings) by passing it meeting ID. That fails for most meetings, but it actually succeeds for one, but it only returns an instance of the recording from February (and this particular meeting room has had many meetings since).

How am I screwing this up?

1 Like

Hi @crazyjncsu,

In your tests, are you by chance trying to fetch recordings for different instances of a recurring meeting?

If so, this would be expected behavior since you need to get the ID’s of all past instances of that meeting, and then call the /meetingId/recordings endpoint for each of those meetings.

This would explain why only one instance’s recording is showing up through the API from your initial call.

You can get all past instances using this endpoint: Zoom Meeting API

Let me know if you have any questions about this!

1 Like

I had tried with meeting UUIDs (probably /v2/meeting/:meetingId/recordings) and did not get any results (for meetings that showed recordings in the web UI). So that is an issue too, but I suppose that could be the call formatting or something (or more likely the same underlying issue that is preventing the per-user recordings from showing up)

Hi @crazyjncsu , from this line, can you please clarify if you are using the Zoom Rooms product to start meetings?

Are these meetings that you’ve hosted? Or have some of them been hosted by other people, you were a participant and they’ve shared the recordings with you?

If you did not host the meeting, you may not be able to request the recordings via API unless you are an admin with the correct scopes to query. The scopes you need are on the endpoint documentation: Meetings APIs

Here are a couple of tips that can help you identify why you are not seeing the recordings you expect? Optimize Zoom cloud recording workflows -- guidance and tips for developers for extracting data-rich AI-powered insights

Hi @crazyjncsu , from this line, can you please clarify if you are using the Zoom Rooms product to start meetings?

This is for my client’s account, so I don’t know for sure, but I doubt they are using an additional product. I think they just have a meeting room which they reuse. Should it matter?

Are these meetings that you’ve hosted? Or have some of them been hosted by other people, you were a participant and they’ve shared the recordings with you?

They are all meeting that they’ve hosted and appear on their Transcripts area in your web UI. I’m really just trying to emulate what that page is listing.

I think I have the required scope (cloud_recording:read:list_user_recordings:admin):
(not letting me embed my image)

Wouldn’t the API give an error if I didn’t have scopes configured correctly?

Here are a couple of tips that can help you identify why you are not seeing the recordings you expect

I read those but really couldn’t find anything to help me with this.

Hi @crazyjncsu , it sounds like you are external to the client who’s info you are trying to access. Are you trying to access their data through a published marketplace app you’ve created and they’ve installed giving you permission to access their data? Or have they provided you with their credentials for an app they’ve created to access their data?

I had the app created in a different account until I realized the burden required to share it with this account. So then I just got her login to create the app in her account. It is an “Admin-managed” app (as certain things I was trying to do prior to being “admin-managed” were requiring “*:admin” scopes, presumably because they are under the single admin user?)

So the app is in her account. Shouldn’t it have the right scopes and everything if that endpoint is not returning an error?

I would be glad to engage with anyone or provide any account information, but it won’t even let me share images or links here.

I really just want to pull the recordings via API that are listed in the web UI.

It could be that the meetings weren’t recorded to the cloud or the meeting IDs are incorrect. Also, recordings tied to other hosts (even in the same account) won’t show up. Double-check cloud recording was enabled and the IDs are correct.

It could be that the meetings weren’t recorded to the cloud or the meeting IDs are incorrect. Also, recordings tied to other hosts (even in the same account) won’t show up. Double-check cloud recording was enabled and the IDs are correct.

The meetings are in the web UI. Even though they were conducted from her computer, I can download the transcripts from the web.

There are no other hosts. There is a single user in the account. (as mentioned above)

Is there some weird runtime filtering happening because my app isn’t published? I’ve tried using the Development and Production credentials for the oauth flows (they both succeed) but no difference.

I’m still struggling hard with this.

It won’t let me post links, but there is a thread on this forum: “Retrieve a meeting’s recordings”

It suggests having the scopes: recording:read:admin or recording:read

Those don’t see available anymore? All now start with cloud_recording:*

This is such a struggle. I don’t see why it is returning an empty result set from /v2/users/me/recordings when they show up in the Web UI and there is only one user in the account.

Still:

{
  "from": "2025-03-25",
  "to": "2025-04-25",
  "next_page_token": "",
  "page_count": 0,
  "page_size": 0,
  "total_records": 0,
  "meetings": []
}

OK, so there is that single recording from Feb 20 I referenced in my original post. I can list it and do all the fun operations on it including downloading the transcript.

The funny thing is that although it appears in the Web UI (at least a meeting that starts with the same ID on the same minute), the web UI gives the message “The transcription file has expired” when attempting to download it.

Still poking around trying to figure out this mess…

Hi @crazyjncsu , unfortunately, I do not get all the notifications unless I am tagged.

Thank you for clarifying the account details.

I noticed you’re calling for meeting “from”: “2025-03-25”,
“to”: “2025-04-25”, – are all the meetings that you see in the web portal from that time? Could any of the meeting you’re trying to download be older than 6 months? We have a limit on pulling meeting info via API if it’s older than 6 months.

If they are not, double check the date parameter is accurate.

Yes, @gianni.zoom, in the Web UI I see over 20 recordings for that date range.

Hi @crazyjncsu , you have the correct scope cloud_recording:read:list_user_recordings:admin based on the app type you’re using for the endpoint.

I’m wondering if your request parameters are the issue since you said you’ve tried a few combinations. Let’s simply try this–copy and append to the base url:

/users/me/recordings?page_size=300&mc=false&trash=false&from=2025-03-25&to=2025-04-25

Please query with a valid access token and tell me if it works?

@gianni.zoom

I inserted your string into the URL verbatim, same results:

jake@Jakes-MacBook-Air dir % curl 'https://api.zoom.us/v2/users/me/recordings?page_size=300&mc=false&trash=false&from=2025-03-25&to=2025-04-25' -X GET -H "Authorization: Bearer [redacted]"

{"from":"2025-03-25","to":"2025-04-25","page_count":0,"page_size":0,"total_records":0,"next_page_token":"","meetings":[]}%                                                                   

jake@Jakes-MacBook-Air dir % 

I’d be very happy to provide more info such as the account ID, any tokens, etc. This forum limits screenshots and posting of URLs. And some of it is sensitive, yet this forum is my only outlet to support.

BTW all other operations are working quite well. I can list meetings, pull AI meeting summaries, list attendees, etc. Just these recordings are returning empty results.

Hi @crazyjncsu , I see! Thank you for testing this. We’ve changed up the workflow between Developer Advocate public community help and private developer suport. I want you to submit a support ticket to evaluate any account filters that may be impacting the API response.

In your support ticket, please include a link to this post as well as:

  • account id
  • client id
  • zm-tracking-id
  • screenshot of full request response

Please let me know the result of the investigation in this thread.

Thanks!

Please let me know the result of the investigation in this thread.

Sure thing.

It looks like there might be an issue with the date range or meeting ID you’re using. Double-check that the meeting IDs and the specified date range match the available recordings.

@gianni.zoom .. I provided the information you suggested included the zm-tracking-id, screenshots of the recordings in the web UI, etc.

I was asked when the issue started happening, and I responded that it started happening when I attempted to use the API.

Then I just received this:

Hello,

Our Technical Support team assists with product-level defects. We have confirmed this issue is configuration-related and not within the scope of your account’s Developer Support Plan, as such this case will be closed.

For help with developer configuration issues, custom solutions, custom integrations, or feature requests, please visit our Developer Forum where Zoom Developers and community members are available to assist you.

If you are interested in additional developer support options for your account, such as live developer consultations, please visit https://explore.zoom.us/docs/en-us/developer-support-plans.html  for more information on our Developer Support tiers.

Thank you,
Zoom Support

Do I have any outlet to get help?

@gianni.zoom Any update?

The support ticket was just abruptly closed with no way for me to respond. They said they confirmed it was “configuration-related” but gave no details. Should I submit another support ticket?