As developers, one of our biggest concerns can be designing scaleable product & system implementations. We want the solutions we craft to be low cost (with minimal technical & financial debt!) and simple for others to sustain.
A challenge many Zoom developers of all license types face is running into API rate limits. To help inspire a fix for your use case, outside of increasing rate limits, we will explore an easy Zoom API Events configuration that helps you access the information you need without API calls.
An API rate limit is a cap on the number of requests an account can send to a specific endpoint in a certain period of time. Ultimately, API rate limits exist to sustain data resources for all users. They prevent APIs from being abused by certain types of internet security threats and help maintain scaleability to ensure consistent quality response times.
Certain Zoom API endpoints are more susceptible to rate limit responses because they are resource intensive (Dashboard API endpoints) and/or need to be accessible across the greatest percentage of users since they are essential to the foundation of the Zoom product platform (Create/Update/Delete Meeting API endpoints).
Zoom API Events are notifications you can enable when certain things happen. When these things happen, you can point those notifications to a place where you can receive webhooks about those events.
Webhooks, sometimes called reverse APIs, are a one-way data-sharing service that take up less resources than APIs so make a great compliment to APIs.
Webhooks at Zoom do not count as API requests/calls so you will not run into rate limit errors from using Zoom API Events.
There are 50+ Zoom API Events to compliment our APIs. Let’s explore an example use case and implementation:
You’re a developer at a small remote school and teachers want to see how long students attended a topic review meeting for:
You could query the list meeting participants endpoint which includes participant “join_time” and “leave_time”, but this has a rate limit label of “heavy” and requires a business or higher plan (which the school does not have).
From List Meeting Participants Response Payload
From List Meeting Participants API endpoint documemation
Alternatively, you could use the meeting.participant_joined and meeting.particpant_left events to send notifications to an endpoint hosted on a site like Requestbin where you see webhooks with payload details about each meeting participant.
Create a Webhook Only App OR add these events to a pre-existing app where you need to access the data:
After filling out the information on the “Information” tab, head over to the “Features” tab. You’ll notice a “verification token” that should only be securely shared with approved admin & developers:
Toggle the “event subscriptions” which will then show an “add event subscription” field:
Click “add event subscription”. I’m going to name mine “Participant Attendance” for the sake of this demo. You’ll also see "event notification endpoint URL–this is where Requestbin comes in!:
Head over to https://requestbin.com/ and click “create request bin”. Create an account or log in as you see fit:
After you log in, you’ll see a page like this where you’ll copy your event notification url for your webhook app. This is where you’ll receive webhooks for the Zoom API Events:
Copy that link and paste it into the “event notification endpoint URL” field on your webhook app. NEXT click “add events”. I added the participant events I needed and clicked “done” to save:
Now I’ll create a meeting and have a participant join. The event notification should fire off to Requestbin (hosted by Pipedream_ where I’ll see the webhooks:
Here’s the expanded payload for the meeting.participant_joined event where I see detailed information about my participant including their join time!
After my participant leaves, I see another event notification come in right after. I click on that event and expand the webhook details:
As you can see, using these Zoom API Event notifications, a webhook only app on the Zoom Marketplace, and Requestbin/Pipedream I’m able to get the participant join and leave time without any API requests!
I can extract this data and add it to a database of my choosing to keep track of this information for my records.
This process was completely free, easy to implement, and meets the needs of my usecase.
If you found this helpful, let me know. I’m happy to hear any other feedback or information about other webhook usecases or resources.