Find all meetings over past day for Pro level accounts

Description
PRO level accounts do not have access to the dashboard metrics api’s. Currently as far as I am aware the only way to see all recordings made account wide over the last 24 hours with a single api call is using the metrics api.(/v2/metrics/meetings)

So without that being an option on PRO level account, to see all recordings made over the last 24 hours on a PRO account the only other path I can see is this:

  1. List out all users:
    https://api.zoom.us/v2/users (paginate if required)
  2. Then for each user request the recordings for that user over the last 24 hours:
    https://api.zoom.us/v2/users/{userId}/recordings

Unfortunately this would lead to a lot a calls to the api.

Do you have a better solution or is this just a limitation you put on PRO level accounts do to them not paying as much? I also imagine PRO accounts are more likely to have fewer users on an account than a Business/Enterprise account does.

Which Endpoint/s?
https://marketplace.zoom.us/docs/api-reference/zoom-api/dashboards/dashboardmeetings
https://marketplace.zoom.us/docs/api-reference/zoom-api/users/users
https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingslist

Comments
Yes, I know about the recording.completed webhook and happily use it. Unfortunately we have run across instances where the webhook was not received and so building a type of redundancy that checks the API for what recordings happened is necessary.

Thanks!

Hey @zoom-test,

Have you looked into the List Recordings of an Account endpoint?

It is available to Pro plans.

Thanks,
Tommy

Ah, thank you for pointing this out. That looks a little more promising. I will try it out. Looks similar to the metrics request but the response shape is just a list of the recordings object.

1 Like

Happy to help @zoom-test!

Hopefully this is perfect for your use case!

To easily find your account id, you can JWT decode an access_token.

Thanks,
Tommy

So, I tried out the endpoint but I don’t have access with my current token setup, which is confusing.

My app is setup to give me these permissions (which includes recording:read:admin,

image

and the API says that we need that to request with the account id:

But when I make a request with my account id:
https://api.zoom.us/v2/accounts/MyAccountIdHere/recordings
It returns this:

    {
        "code": 4700,
        "message": "Invalid access token, does not contain scopes: [zms:recording:read, zms:recording:write, recording:master]"
    }

Is this a bug?

Hey @zoom-test,

Possibly a bug.

Can you try adding the recording:master scope, and or passing in me as the account ID?

Also make sure to reinstall the app after making scope changes.

Thanks,
Tommy

Ok, sorry for the delay.

I added the scope recording:read:admin to the app, re-authenticated.

Requested this url:
https://api.zoom.us/v2/accounts/myaccountid/recordings

401 Unauthorized

{
    "code": 124,
    "message": "Invalid access token."
}

I checked other endpoints and the token works fine for them (users/me, meetings/uuid/recordings) but then when I come back to this it says it is invalid?

If I try the /me url
https://api.zoom.us/v2/accounts/me/recordings
Then it says

{
    "code": 4700,
    "message": "Invalid access token, does not contain scopes: [zms:recording:read, zms:recording:write, account:read:admin, account:write:admin]"
}

Any ideas?

I added account:read:admin which finally gave me access to get
https://api.zoom.us/v2/accounts/me/recordings
but if I put my actual account id in there instead of me it gives me the "Invalid access token." response.

I guess the documentation does say that:


So since most would operate under a Master Account then you need the permissions to account:read:admin.

Is there anything I am missing here?

Hey @zoom-test,

Correct, the documentation states to use the account:read:admin scope, and the me keyword as the accountId. This is the intended functionality.

Thanks,
Tommy

This feels weird to me. If I already have permission to view all user recordings with recording:read:admin then why do I need a separate scope permission to view the same data through a more convenient API?

Maybe I am just complaining that to add the account:read:admin scope requires me to update the app in the marketplace, and then get all my users to re-authorize the app so I can get the updated scope permission enabled, and meanwhile the code has to handle both scenarios as well.

Also the documentation would be more helpful if it specified that recording:read:admin only works for sub-accounts. Currently it reads like if you specify the account id then recording:read:admin is sufficient scope to view all recordings for any account you have permission to. And if other developers are like me then they stopped reading there and went to try it and it kept failing like it did for me.

Hey @zoom-test,

Thanks for your input here, I understand the pain point of users having to update the app.

We will also work on making our docs more clear about the two scopes. CC @shrijana.g

Thanks,
Tommy

1 Like

same issue.

Hey @micky3423425, thanks for posting and using Zoom!

Please share details about your issue.

Thanks,
Tommy