Daily Sync to Local DB for Custom Reports Discrepancies

We have around 200 organizations that are all in the same account, designated by department. Due to API speed and daily limits, I’m using the API to perform a daily sync of users and meetings and using custom logic to create reports for users in different organizations. I want to make sure I’m getting a complete and accurate data set.

My problem is with meetings. I’m missing some when I compare to the canned “Active Hosts” report in the Zoom UI. Each night, I’m running (once per minute due to throttling) this command:
https://api.zoom.us/v2/metrics/meetings?from=start&to=end&type=past&page_size=300
and then I call it recursively while there is a next_page_token.

Can someone please verify that this is the best way to get a complete list of meetings from the API? Any idea why my data wouldn’t be complete if so? I’m not logging any errors in my application when I sync. I’m querying my database directly and can verify that meetings are not present.

I get the same result as the data in my local DB when I call https://api.zoom.us/v2/report/users/userid/meetings?type=past&from=2020-03-15&to=2020-03-15. There are more meetings included in the “Active Hosts” report than those returned by this call.

I’m able to isolate specific meetings that are the same type, on the same date with more than 1 participant that don’t appear when I call the metrics/meeting or report/users/userid/meetings commands.

Hey @msmythers,

How far off is the API data from the reports / dashboard data on the Zoom Web Portal?

Can you please share specific meeting and userIDs so we can look at the logs?

Thanks,
Tommy

Thanks, @tommy I believe I found the issue as I was searching for the specific meetings to give you details. It seems like when I pull information from the API, I’m getting UTC time. When I pull the report from the UI, it seems to be automatically giving me either the local time of the user or my local time. So when I filter my local data based on date, 3/15-3/15 for example, it’s not including any meetings after 8PM eastern time unless I include the next day.

Is there a best practice to store the local time of the meeting as it’s pulled from the API? Is there a way to pull local time from the API?

1 Like

Hey @msmythers, glad you have found the issue! :slight_smile:

Our APIs store all dates in UTC time. There is no way to query based on timezone.

To account for this, you can use a timezone offset (JavaScript example) to figure out the local time from UTC time, and then adjust your request to include the next UTC day.

Thanks,
Tommy