# Help understanding how to create meeting using backend

**URL:** <https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496>\
**Category:** Web\
**Created:** [March 10, 2020, 1:35am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496 "2020-03-10T01:35:54Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![gabriel.rf0](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gabriel.rf0/32/3438_2.png) [@gabriel.rf0](https://devforum.zoom.us/u/gabriel.rf0)\
**Post date:** [March 10, 2020, 1:35am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/1 "2020-03-10T01:35:54Z")

</div>

Hi All  
I am using zoom to create meetings on the backend and join meetings on the frontend.  
The frontend sample worked great to join a meeting I created using the zoom dashboard, now I need to create a meeting using nodejs backend.

I am using this project on github ( [https://github.com/zoom/sample-app-node](https://github.com/zoom/sample-app-node) ), which btw seems very outdated since it mentions v1 api, but since I could not find a sample that guides me better than that one, that’s what I choose so far, please let me know if there is a more up to date.

My problem is that I am trying to make that nodejs sample work, and when I read the docs it mentions a complete different way to make calls to the zoom api.

So finally to my first question, today, to create a meeting using the api rest calls, do I really need to either have a jwt token to be used in every request, or use oauth?  
I am very new to nodejs and backend in general, so I do not understand how all this is supposed to come together so the api calls can be made.  
Question 1.a, if the answer above is true, can the jwt/oauth be handled in the same nodejs server as the one that is going to make the api call to create the meeting? Since all the samples are very specific to only one task, it gives me the impression that I would need a server that only gets the JWT or makes the oauth and another one that does in fact the create meeting api call…

Second question  
I there a sample somewhere that shows how a nodejs server would use either jwt or oauth and make a create meeting call using the latest API (v2) ?

---

<div class="post-metadata">

**Author:** ![gabriel.rf0](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gabriel.rf0/32/3438_2.png) [@gabriel.rf0](https://devforum.zoom.us/u/gabriel.rf0)\
**Post date:** [March 10, 2020, 2:54am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/2 "2020-03-10T02:54:20Z")

</div>

Ok so I’ll keep answering my own questions, to whomever is interested in this: How to create a meeting using nodejs

Download the jwt sample from [GitHub - zoom/zoom-api-jwt: Sample NodeJS app to call Zoom's APIs using Json Web Token (JWT)](https://github.com/zoom/zoom-api-jwt) and follow the steps presented there to install

Create a new request handler just before the lines:

> //use userinfo from the form and make a post request to /userinfo  
> app.post(“/userinfo”, (req, res) =\> {

and add the follwing sample code:

```
app.post("/newmeeting", (req, res) => {
  email = "your maketplace developer email";
  var options = {
    method: "POST",
    uri: "https://api.zoom.us/v2/users/" + email + "/meetings",
    body: {
      topic: "test create meeting",
      type: 1,
      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
  };

  rp(options)
    .then(function(response) {
      console.log("response is: ", response);
      res.send("create meeting result: " + JSON.stringify(response));
    })
    .catch(function(err) {
      // API call failed...
      console.log("API call failed, reason ", err);
    });
});

```

And make your postman/frontend call to that newmeeting endpoint like localhost:3000/newmeeting …

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [March 10, 2020, 4:00pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/3 "2020-03-10T16:00:34Z")

</div>

Hey @gabriel.rf0,

That is exactly how to do it! 🙂

Let me know if you have additional questions!

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![kouchi.mohammad](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kouchi.mohammad/32/1667_2.png) [@kouchi.mohammad](https://devforum.zoom.us/u/kouchi.mohammad)\
**Post date:** [May 29, 2020, 6:43pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/4 "2020-05-29T18:43:10Z")

</div>

Thank you @gabriel.rf0, you helped me a lot with this answer, doc’s sample with OAuth, confused me!

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [June 3, 2020, 7:27pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/5 "2020-06-03T19:27:35Z")

</div>

Happy to hear you got the help you needed! 🙂

-Tommy

---

<div class="post-metadata">

**Author:** ![junaidali9559](https://avatars.discourse-cdn.com/v4/letter/j/9dc877/32.png) [@junaidali9559](https://devforum.zoom.us/u/junaidali9559)\
**Post date:** [June 8, 2020, 8:25am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/6 "2020-06-08T08:25:50Z")

</div>

hey bro  
can you help me in create meeting bro i’m confused that i have run a zoom-api-jwt-master sample app and i got this

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/2/2f0d678d2da334065e1c2373333b995da6d803e0.png)  
Now what next i should do now i can’t understand please help me.

---

<div class="post-metadata">

**Author:** ![le.oviedo](https://avatars.discourse-cdn.com/v4/letter/l/8e8cbc/32.png) [@le.oviedo](https://devforum.zoom.us/u/le.oviedo)\
**Post date:** [June 8, 2020, 2:14pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/7 "2020-06-08T14:14:29Z")

</div>

Hi @junaidali9559 , basically you need to copy and paste the example code from @gabriel.rf0 in the index.js file and replace the line  
`email = "your maketplace developer email";` with your email.  
then change  
`<form action="/userinfo" method="post">`  
to  
`<form action="/newmeeting" method="post">`  
in the public/index.html file  
Then go to `localhost:3000/newmeeting` and you will get the JSON response with the created meeting information printed.

---

<div class="post-metadata">

**Author:** ![junaidali9559](https://avatars.discourse-cdn.com/v4/letter/j/9dc877/32.png) [@junaidali9559](https://devforum.zoom.us/u/junaidali9559)\
**Post date:** [June 9, 2020, 4:28am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/8 "2020-06-09T04:28:51Z")

</div>

Hi @le.oviedo, after doing all this i get this error now ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/f/f3a44428c5da8f8c8a40de0f339f61a57c643e02.png)  
after adding @gabriel.rf0 code snippet my index.js file code is this

//include required modules  
const jwt = require(‘jsonwebtoken’);

const config = require(’./config’);  
const rp = require(‘request-promise’);

const express = require(‘express’);  
const app = express();

app.use(express.urlencoded({ extended: true }));  
app.use(express.static(‘public’));  
var email, userid, resp;  
const port = 3000;

//Use the ApiKey and APISecret from config.js  
const payload = {  
iss: config.APIKey,  
exp: ((new Date()).getTime() + 5000)  
};  
const token = jwt.sign(payload, config.APISecret);

//get the form  
app.get(’/’, (req,res) =\> res.send(req.body));  
app.post("/newmeeting", (req, res) =\> {  
email = “[junaidali9559@gmail.com](mailto:junaidali9559@gmail.com)”;  
var options = {  
method: “POST”,  
uri: “[https://api.zoom.us/v2/users/](https://api.zoom.us/v2/users/)” + email + “/meetings”,  
body: {  
topic: “test create meeting”,  
type: 1,  
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  
};

rp(options)  
.then(function(response) {  
console.log("response is: ", response);  
res.send("create meeting result: " + JSON.stringify(response));  
})  
.catch(function(err) {  
// API call failed…  
console.log("API call failed, reason ", err);  
});  
});

//use userinfo from the form and make a post request to /userinfo  
app.post(’/userinfo’, (req, res) =\> {  
//store the email address of the user in the email variable  
email = req.body.email;  
//check if the email was stored in the console  
console.log(email);  
//Store the options for Zoom API which will be used to make an API call later.  
var options = {  
//You can use a different uri if you’re making an API call to a different Zoom endpoint.  
uri: “[https://api.zoom.us/v2/users/](https://api.zoom.us/v2/users/)”+email,  
qs: {  
status: ‘active’  
},  
auth: {  
‘bearer’: token  
},  
headers: {  
‘User-Agent’: ‘Zoom-api-Jwt-Request’,  
‘content-type’: ‘application/json’  
},  
json: true //Parse the JSON string in the response  
};

//Use request-promise module’s .then() method to make request calls.  
rp(options)  
.then(function (response) {  
//printing the response on the console  
console.log(‘User has’, response);  
[//console.log](https://console.log)(typeof response);  
resp = response  
//Adding html to the page  
var title1 ='

### Your token:
’  
var result1 = title1 + ‘`’ + token + ‘`’;  
var title =‘
### User’s information:
’  
//Prettify the JSON format using pre tag and JSON.stringify  
var result = title + ‘`’+JSON.stringify(resp, null, 2)+ ‘`’  
res.send(result1 + ‘  
’ + result);

```
})
.catch(function (err) {
    // API call failed...
    console.log('API call failed, reason ', err);
});

```

});

app.listen(port, () =\> console.log(`Example app listening on port ${port}!`));

What should i do now please help me.  
Thanks

---

<div class="post-metadata">

**Author:** ![le.oviedo](https://avatars.discourse-cdn.com/v4/letter/l/8e8cbc/32.png) [@le.oviedo](https://devforum.zoom.us/u/le.oviedo)\
**Post date:** [June 9, 2020, 2:10pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/9 "2020-06-09T14:10:52Z")

</div>

Hi @junaidali9559, open **public/index.html**  
then change  
`<form action="/userinfo" method="post">`  
to  
`<form action="/newmeeting" method="post">`  
and it should work

---

<div class="post-metadata">

**Author:** ![junaidali9559](https://avatars.discourse-cdn.com/v4/letter/j/9dc877/32.png) [@junaidali9559](https://devforum.zoom.us/u/junaidali9559)\
**Post date:** [June 10, 2020, 4:22am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/10 "2020-06-10T04:22:31Z")

</div>

hi @le.oviedo yes its working now thank you!  
But what should i do next now i want this to run with web sdk on my company website. What should i do please help me!

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [June 12, 2020, 9:20pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/11 "2020-06-12T21:20:18Z")

</div>

Hey @junaidali9559,

Happy to hear you got it working! @le.oviedo thanks for your help! 🙂

@junaidali9559, you can take the [code from our sample app](https://github.com/zoom/sample-app-web) and put it on your website, or follow the guide here: [https://www.npmjs.com/package/@zoomus/websdk](https://www.npmjs.com/package/@zoomus/websdk)

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![maheshwaripatil7777](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/maheshwaripatil7777/32/12125_2.png) [@maheshwaripatil7777](https://devforum.zoom.us/u/maheshwaripatil7777)\
**Post date:** [July 18, 2020, 10:09pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/12 "2020-07-18T22:09:00Z")

</div>

Yes I created that meeting but how can I send the invitation via email to users?

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [July 21, 2020, 9:54pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/13 "2020-07-21T21:54:03Z")

</div>

Hey @maheshwaripatil7777,

The only way to send an invitation email to users is with the [Add Meeting Registrant API.](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingregistrantcreate)

Otherwise you will have to use a 3rd party email API like [SendGrid.com](http://SendGrid.com).

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![prembritz](https://avatars.discourse-cdn.com/v4/letter/p/5f9b8f/32.png) [@prembritz](https://devforum.zoom.us/u/prembritz)\
**Post date:** [September 21, 2020, 11:27am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/14 "2020-09-21T11:27:25Z")

</div>

hello tommy,

how to list meeting details of zoom using node.js or java or php?

any one technology is highly appreciate.

---

<div class="post-metadata">

**Author:** ![will.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/will.zoom/32/14417_2.png) [@will.zoom](https://devforum.zoom.us/u/will.zoom)\
**Post date:** [September 22, 2020, 8:29pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/15 "2020-09-22T20:29:18Z")

</div>

Hey @prembritz, you can utilize our [GET Meeting endpoint](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting) to fetch Zoom meeting details. In the linked documentation, you’ll also find an embedded Postman tool with a code generator for Node, Java, PHP, etc.

If you have further questions, please create a new post in #zoom-api.

Thanks,  
Will

---

<div class="post-metadata">

**Author:** ![akshay.salekar](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/akshay.salekar/32/17022_2.png) [@akshay.salekar](https://devforum.zoom.us/u/akshay.salekar)\
**Post date:** [December 9, 2020, 8:54am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/16 "2020-12-09T08:54:24Z")

</div>

Is there any way of creating zoom meet link without ApiKey and APISecret. Or any other way to create meet link just with emailid without configuring anything

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [December 10, 2020, 10:33pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/17 "2020-12-10T22:33:40Z")

</div>

Hey @akshay.salekar,

Can you clarify your use case so I can help? You can get your Zoom meeting link on [zoom.us](http://zoom.us) as well. 🙂

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![akshay.salekar](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/akshay.salekar/32/17022_2.png) [@akshay.salekar](https://devforum.zoom.us/u/akshay.salekar)\
**Post date:** [December 11, 2020, 11:17am UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/18 "2020-12-11T11:17:08Z")

</div>

Hey Thank you for reply,  
I wanted to ask is there anyway to create a api key and secret key for on organization so that I can use the same api key and secret key for all users of that organization to create meeting link using node js backend.

---

<div class="post-metadata">

**Author:** ![MaxM](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/maxm/32/42303_2.png) [@MaxM](https://devforum.zoom.us/u/MaxM)\
**Post date:** [December 11, 2020, 11:35pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/19 "2020-12-11T23:35:36Z")

</div>

Hey @akshay.salekar,

Thank you for providing additional information. The Web SDK is not able to create meetings, instead, it’s best used when joining meetings. You can use the [Create a Meeting API](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate) in order to programmatically create a meeting but this requires that you use a separate OAuth or JWT app and therefore, separate credentials to authenticate with.

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

Thanks,  
Max

---

<div class="post-metadata">

**Author:** ![askary.almazan](https://avatars.discourse-cdn.com/v4/letter/a/53a042/32.png) [@askary.almazan](https://devforum.zoom.us/u/askary.almazan)\
**Post date:** [January 6, 2021, 5:08pm UTC](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496/20 "2021-01-06T17:08:56Z")

</div>

How long does this meeting last and how can the term be terminated early?

[Next page](https://devforum.zoom.us/t/help-understanding-how-to-create-meeting-using-backend/8496.md?page=2)
