Creating/Hosting concurrent meetings through API (Server-to-Server App)

Currently, I’m using Server-to-Server App’s Credentials (Account ID, Client ID and Client Secret) to get my Bearer access token and to connect to Zoom API:

// Server-to-Server App's Credentials
const accountId = 'asLtmaTbqk...';
const clientId = 'oE_OzyRAWK...';
const clientSecret = '2a0GjdyXtZ5Va0...';

 async createZoomMeeting(subject: string, startTime: Date) {
  const authData = `${clientId}:${clientSecret}`;

  // First, I get my access_token through my Server-to-Server App
  const access_token = await axios.post<ZoomServerTokenResponse>(
   `https://zoom.us/oauth/token?grant_type=account_credentials&account_id=${accountId}`,
   undefined,
   {
    headers: {
     Authorization: `Basic ${base64Encode(authData)}`,
    },
   },
  );

  // And then using that access_token I'm creating a meeting through Zoom's API
  const response = await axios.post<CreateZoomMeetingResponse.Root>(
   'https://api.zoom.us/v2/users/me/meetings/',
   createZoomMeetingRequest(startTime, subject),
   {
    headers: {
     Authorization: `Bearer ${access_token }`,
    },
   },
  );
  return response.data;
 }
}

And this works fine, as long as a user that created this Server-to-Server app hosts one meeting at a time. But, when I want to host 2 or more meetings concurrently (at the same time), I can’t, and that is Zoom’s restriction and I’m fully aware of it.

But, today I bought a Pro account subscription and created 9 Basic users (with no licensed plan) under this Pro account.


What I want to achieve:
I would like to create a code that will somehow iterate through those users’ credentials (or their App credentials), check if a user currently has a meeting running as a host, if it has, skip to next user, and if it doesn’t - create and host a meeting.

My questions are:

  1. Can those multiple Basic users somehow use the same one Server-to-Server app to get their Bearer access_token to access Zoom’s API and create a meeting? (This post from 2022. denies that if I understood it correctly, but maybe something changed since 2022.)
  2. If first question’s answer is no, should I then create a Server-to-Server App on every of those 9 accounts and generate the Bearer access token through these apps? Or maybe there’s a better way to achieve this?
  3. What’s the best way to check if a user already has a hosting meeting running at the moment? (I’m thinking about Event Subscriptions (Webhooks) maybe?)


If any of you achieved similar behaviour like this, please let me know in comments or link me a post/s that will help me achieve this.

Hi @PhasedConnect_dev
Thanks for reaching out to us!
I am happy to help here!

To answer your questions:

Can those multiple Basic users somehow use the same one Server-to-Server app to get their Bearer access_token to access Zoom’s API and create a meeting? (This post 1 from 2022. denies that if I understood it correctly, but maybe something changed since 2022.)
Yes, you can use the same S2S app to get an access token and create a meeting for each user.

You could check the User presence status using the Get a user presence status endpoint

Or you could also set up a webhook event that will let you know whenever the users presence status changes