Credentials (API key and secret key etc) linked to one email can be used for other mails of organization for create meeting api

Description
Is there any way where I can generate API credentials from one email id and all the other email id of same domain will able to generate meeting link using API with same credentials linked to one email id from which credentials are generated.
For example. I will generate credential from my email id and I will use same credentials in my API and all the users of my organization will able to create meeting link using same credentials since they have same domain name

If there is any solution available please let me know the prerequisites and process for that.

** Additional information **
For frontend I am using Angular and for backend I am using NodeJS

Please let me know if you need any further insight.
Thank you.

Hey @akshay.salekar,

Thank you for reaching out to the Zoom Developer Forum. Good question! If you would like to have one token set up at the account-level, this is a perfect use case for a JWT token. Here’s a snippet of information from that document:

These tokens offer a method to establish secure server-to-server authentication by transferring a compact JSON object with a signed payload of your account’s API Key and Secret.

When authenticating to the Zoom API, a JWT should be generated uniquely by a server-side application and included as a Bearer Token in the header of each request. Follow this guide to set up the generation and structure of these tokens.

I hope that helps! Let me know if you have any questions.

Thanks,
Max

Hi MaxM,

I have a similar question like this but can’t get any response yet.

How to get all users for a domain name xyz.com using APIs

Example: If I have 2 users abc and xyz, and I have created JWT for abc and I create meeting using API then meeting is created in abc’s account. How we can use same token for xyz user for creating his meeting.

Thanks
Aakash

Hey @aakashp,

Thank you for your question. If you want to use a JWT between two users, they’ll need to be on the same account. This is because the API Key and Secret are specific to an account. More information can be found here.

Thanks,
Max

hi @MaxM,
Thank you for your reply ,
So I tried method of JWT Token and I am able to generate meeting link using email id from which I have generated API credentials . But If I try other email id of same domain it says “User does not exist: email id of user.” with statusCode: 404. And if I use api creds of other email id I am able to generate meeting link which means user exists
Please help me in this. Thanks

1 Like

@MaxM

Here is some part of my code. Also I wanted to ask , do i need purchased account in order to do this ? If yes then is there any way to check if my requirements can be implemented before i purchase

const payload = {
                    iss: config.zoom.APIKey,
                    exp: ((new Date()).getTime() + 5000)
                };
                const token = jwt.sign(payload, config.zoom.APISecret,{algorithm:"HS256"});
                email = req.body.zoomEmailid;
                request({
                    method: "POST",
                    uri: 'https://api.zoom.us/v2/users/' + email + "/meetings",
                    body: {
                        topic: req.body.topic ? req.body.topic : "meeting",
                        type: req.body.meeting_type ? req.body.meeting_type : 1,
                        start_time: req.body.start_time,
                        duration: req.body.duration ? req.body.duration : 60, //minutes
                        timezone: req.body.timezone,
                        settings: {
                            host_video: "true",
                            participant_video: "true"
                        }
                    },
                    auth: {
                        bearer: token
                    },
                    headers: {
                        "User-Agent": "Zoom-api-Jwt-Request",
                        "content-type": "application/json"
                    },
                    json: true //Parse the JSON string in the response
                }, 
                function (error, response, body1) {
                    if (error) {
                       res.send({
                                status: 'failure',
                                message: 'Something went wrong'
                            })
                    } else {
                        if (response.statusCode == 200 || response.statusCode == 201) {
                            res.send({
                                status: 'success',
                                message: response

                            })
                            
                        } else {
                            res.send({
                                status: 'success',
                                message: response.body.message
                            })
                            
                        }
                    }
                })

Hey @akshay.salekar,

Thank you for reaching out to the Zoom Developer Forum. I sent you a DM requesting an email that is encountering the issue. I’ll use that to investigate further.

Thanks,
Max

Hey @akshay.salekar,

Thank you for providing additional information. This may be happening because you haven’t added payment information. While this won’t charge your card, it is necessary in order to access User Management and I think this carries over to User Management as well. You can access this link to enter payment information: https://zoom.us/account/user

I hope that helps! Let me know if you have any questions.

Thanks,
Max

hi @MaxM ,

Thank you for response.

So I am working on a SaaS product, an application tracking system (ATS) and I want to give provision to clients to generate zoom meeting link through my web application. I want the users to be able to configure this integration between my app and Zoom, without them having to visit market place and generate and configure app and get API key and secret key.

I wanted that feature flow as simple as follows :
User will directly click on a button in my app then he will be redirected to zoom for authentication and authorization, client will agree to permissions in case any. Then my app should be able to generate Zoom links for him on his zoom id.

For example : The way https://calendly.com/ handles the zoom integration.

Please let me know if there is any solution of my use case.

Hey @akshay.salekar,

Thank you for providing additional information. This sounds like a perfect use case for OAuth authentication. OAuth will allow you to authenticate on a per-user basis. When you send them to the https://zoom.us/oauth/authorize endpoint with the proper query parameters, they will have the opportunity to log in before accepting the permissions that your app requires. Basically, with OAuth, you can link the user’s existing Zoom account to your app and call the API on their behalf. With JWT you can make API requests for users on your own Zoom account.

I hope that helps! Let me know if you have any questions.

Thanks,
Max

hi @MaxM ,
Thank you for your response
So I have implemented the OAuth and Able to generate meeting link but for my account only because my zoom application is under review for "Request to share this app outside this account’’.
I have 3 queries :

  1. Do we require business account or paid account to be able to use Zoom meeting APIs (Like create meeting link etc.) for different email ids (As I mentioned my requirements). In other words is there any charge for using those APIs for our clients ?

  2. Is there any developer support number for basic account user ?

  3. How much time review process usually takes ? (I have submitted it on 23rd or 24th december 2020 and app name is Webbtree)

Hey @akshay.salekar,

Thank you for the update.

Do we require business account or paid account to be able to use Zoom meeting APIs (Like create meeting link etc.) for different email ids (As I mentioned my requirements). In other words is there any charge for using those APIs for our clients ?

Some endpoints do require a certain level of access in order to use them. You can confirm this by reviewing the Prerequisites section of the documentation. Here’s an example from the Create a User API:

Is there any developer support number for basic account user ?

We don’t have a number that you can call but you can always post here on the forum or email us at developersupport@zoom.us if you have any questions or issues.

How much time review process usually takes ? (I have submitted it on 23rd or 24th december 2020 and app name is Webbtree)

While I don’t have an ETA, the app review process is pretty quick as long as you’ve followed the Submission Checklist

I hope that helps! Let me know if you have any questions.

Thanks,
Max