Integrating Zoom's API allows you to automate meeting scheduling and management. With this integration, you can schedule and manage meetings without needing a paid Zoom plan. Here’s a step-by-step guide to get you started with Zoom API integration using Node.js and Express.
Prerequisites
Basic knowledge of Node.js and Express.
A Zoom account.
Node.js and npm installed on your machine.
Step-by-Step Instructions
1. Create a Zoom App
- Create a Zoom Account: If you don't have one, sign up at Zoom Marketplace.
Develop an App: Go to the Zoom Marketplace and click on the "Develop" icon.
Build App: Click on "Build App" and select "Server to Server OAuth" app type.
Store Credentials: After creating the app, store the following details securely:
ZOOM_CLIENT_ID
ZOOM_CLIENT_SECRET
ZOOM_ACCOUNT_ID
2. Set Up Your Project
- Create a Project Folder: Create a new folder for your project and initialize it with npm.
mkdir zoom-meeting-integration
cd zoom-meeting-integration
npm init -y
- Install Dependencies: Install the required libraries using npm.
npm install axios body-parser dotenv express
- Create Environment Variables: Create a .env file in the root directory of your project and add your Zoom credentials:
ZOOM_CLIENT_ID=YOUR_ZOOM_CLIENT_ID
ZOOM_CLIENT_SECRET=YOUR_ZOOM_CLIENT_SECRET
ZOOM_ACCOUNT_ID=YOUR_ZOOM_ACCOUNT_ID
3. Implement API Integration
- Create an Index File: Create a file named index.js and set up your basic Express server:
const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');
require('dotenv').config();
const app = express();
app.use(bodyParser.json());
// Your code will go here
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
- Get an Access Token: Create a function to get an OAuth token from Zoom. Add the following code to index.js:
async function getAccessToken() {
const response = await axios.post('https://zoom.us/oauth/token', null, {
params: {
grant_type: 'account_credentials',
},
auth: {
username: process.env.ZOOM_CLIENT_ID,
password: process.env.ZOOM_CLIENT_SECRET,
},
});
return response.data.access_token;
}
- API Payload
{
"topic": "Sample Meeting",
"type": 1,
"duration": 30,
"start_time": "2024-09-01T10:00:00Z",
"agenda": "Discuss project updates"
}
- Schedule a Meeting: Create an endpoint to schedule a meeting using the Zoom API:
app.post('/schedule-meeting', async (req, res) => {
try {
const token = await getAccessToken();
const meetingData = {
topic: 'Sample Meeting',
type: 1,
duration: 30,
start_time: '2024-09-01T10:00:00Z',
agenda: 'Discuss project updates',
};
const response = await axios.post('https://api.zoom.us/v2/users/me/meetings', meetingData, {
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
});
res.json(response.data);
} catch (error) {
res.status(error.response ? error.response.status : 500).send(error.message);
}
});
- Retrieve Meeting Link: Once you have the meeting ID, you can use it to get the meeting link:
app.get('/meeting-link/:meetingId', async (req, res) => {
try {
const token = await getAccessToken();
const meetingId = req.params.meetingId;
const response = await axios.get(`https://api.zoom.us/v2/meetings/${meetingId}`, {
headers: {
Authorization: `Bearer ${token}`,
},
});
res.json({ join_url: response.data.join_url });
} catch (error) {
res.status(error.response ? error.response.status : 500).send(error.message);
}
});
- Sending Meeting Links Send Emails: After retrieving the meeting link, you can use any mail service (e.g., Nodemailer) to send the meeting link to participants.
- Additional Information
- Meeting Features: Note that the API for adding participants may require a paid Zoom plan. For free plans, you can only schedule meetings and share the links manually.
- Refer to GitHub: For a complete implementation, check out the GitHub repository Zoom Meeting Scheduler.
By following these steps, you can successfully integrate Zoom API into your application for scheduling and managing meetings.