"List Webinars" endpoint returning all past webinars NOT upcoming

Hey there Zoom friends. We’re using the latest zoom API in our Node.js application to list out our upcoming webinars, however it’s seemingly returning ALL historic webinars for this account, not just scheduled ones that are available to register for. I’ve double-checked the User ID that we are returning webinars from, and it does not match with what we have showing in that user’s “upcoming webinars” list within their zoom dashboard. This seems to contradict what the API docs say should be happening:

“Use this API to list all the webinars that are scheduled by or on-behalf a user”

Am I missing something with how this endpoint is meant to behave? It seems like a mistake since there is already an endpoint for “List Past webinar Instances”

Which Endpoint/s or Web JS SDK?

How To Reproduce
Here’s the code we’re using to retrieve our webinars:

const API_KEY = "XXXXXX";

const jwt = require("jsonwebtoken");
const rp = require("request-promise");

const getWebinarsList = () => {
  const payload = {
    iss: API_KEY,
    exp: new Date().getTime() + 5000
  const token = jwt.sign(payload, API_SECRET);

  const options = {
    uri: "https://api.zoom.us/v2/users/XXXXXX/webinars",
    auth: {
      bearer: token
    headers: {
      "User-Agent": "Zoom-api-Jwt-Request",
      "content-type": "application/json"
    json: true

  return rp(options);

Here’s what’s being spit out with the above code:

There should only be two webinars showing, all of these are OLD webinars. Why is it doing this?

And here’s what’s showing in the same account’s “upcoming webinars” list from the Zoom account area:

Hey @twentyoverten, thanks for the detailed response and for using Zoom!

Unfortunately there is no way to specify upcoming/scheduled webinars via query params like the GET /users/{userId}/meetings.

I have already passed this to the team as a feature request. JIRA: ZWP-2134

As a work around, you could call the List Webinars endpoint like you are doing, and implement logic to filter the response by time frame and include those results on your web page. By default the webinars are returned in reverse chronological order, so the upcoming ones will be at the bottom of the list.

Sorry for the innocence, you can track our releases here to be notified when we add query params to get upcoming/scheduled webinars.


Thanks for the update @tommy,

Appreciate that it’s been added as a feature request. I’ve implemented a temporary solution as you mentioned using moment.js (outlined below for anyone else running into a similar issue), but it’s obviously a bit cumbersome, as well as becoming problematic if you have historic webinars that exceed 300 (due to the pagination total being unknown until you do an initial request). If you have any additional suggestions in the interim to address that, until params are added, that would be much appreciated!

Partial solution with moment.js:

const webinars = data.webinars.filter(webinar => {
  if (moment(webinar.start_time) >= moment()) {
    return webinar;
1 Like

Hey @twentyoverten, Thanks for posting the workaround with moment.js! :slight_smile:

I understand the headache here, especially if your webinars exceed the 300 per page limit. We are already working on adding query params to solve this.

Keep an eye on our release page to stay updated.


1 Like