# I am getting an error, Error: Request failed with status code 401 { code: 124, message: 'Invalid access token.' }

**URL:** <https://devforum.zoom.us/t/i-am-getting-an-error-error-request-failed-with-status-code-401-code-124-message-invalid-access-token/106061>\
**Category:** API and Webhooks\
**Created:** [March 19, 2024, 3:45pm UTC](https://devforum.zoom.us/t/i-am-getting-an-error-error-request-failed-with-status-code-401-code-124-message-invalid-access-token/106061 "2024-03-19T15:45:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![kelzomwangmo](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kelzomwangmo/32/57712_2.png) [@kelzomwangmo](https://devforum.zoom.us/u/kelzomwangmo)\
**Post date:** [March 19, 2024, 3:45pm UTC](https://devforum.zoom.us/t/i-am-getting-an-error-error-request-failed-with-status-code-401-code-124-message-invalid-access-token/106061/1 "2024-03-19T15:45:01Z")

</div>

const express = require(‘express’);  
const axios = require(‘axios’);  
const jwt = require(‘jsonwebtoken’);  
require(‘dotenv’).config({ path: ‘./zoom.env’ });

var router = express.Router();

const generateJWT = () =\> {  
const exp = Math.floor(Date.now() / 1000) + (60 \* 60);  
console.log(‘exp:’, new Date(exp \* 1000).toISOString());  
const payload = {  
iss: process.env.ZOOM\_API\_KEY,  
exp: exp,  
};

// Sign the token with your API secret  
const token = jwt.sign(payload, process.env.ZOOM\_API\_SECRET, { algorithm: ‘HS256’ });

// Log the token for debugging  
console.log(‘Generated JWT:’, token);

return token;  
};

const handleError = (error, res) =\> {  
console.error(`Error: ${error.message}`);  
if (error.response) {  
console.error(error.response.data);  
console.error(error.response.status);  
console.error(error.response.headers);  
}  
res.status(500).send(‘An error occurred’);  
};

// Create Meeting  
router.post(‘/createMeeting’, async function(req, res) {  
const jwtToken = generateJWT();  
try {  
const userId = req.body.id;  
const response = await axios.post(`https://api.zoom.us/v2/users/${userId}/meetings`, {  
topic: req.body.topic,  
type: 2, // Scheduled meeting  
start\_time: req.body.startTime, // “2024-03-31T12:00:00Z”  
duration: req.body.duration, // in minutes  
}, {  
headers: {  
‘Authorization’: `Bearer ${jwtToken}`,  
‘Content-Type’: ‘application/json’  
}  
});  
console.log(`Status: ${response.status}, Body: ${JSON.stringify(response.data)}`);  
res.json(response.data);  
} catch (error) {  
handleError(error, res);  
}  
});

// List Meetings  
router.get(‘/listMeeting’, async function(req, res) {  
const jwtToken = generateJWT();  
try {  
const userId = req.query.userId;  
const response = await axios.get(`https://api.zoom.us/v2/users/${userId}/meetings`, {  
headers: {  
‘Authorization’: `Bearer ${jwtToken}`,  
}  
});  
console.log(`Status: ${response.status}, Body: ${JSON.stringify(response.data)}`);  
res.json(response.data);  
} catch (error) {  
handleError(error, res);  
}  
});

// Update Meeting  
router.post(‘/updateMeeting’, async function(req, res) {  
const jwtToken = generateJWT();  
try {  
const meetingId = req.body.mId;  
const response = await axios.patch(`https://api.zoom.us/v2/meetings/${meetingId}`, {  
topic: req.body.topic,  
type: req.body.type,  
}, {  
headers: {  
‘Authorization’: `Bearer ${jwtToken}`,  
‘Content-Type’: ‘application/json’  
}  
});

```
console.log(`Status: ${response.status}, Body: ${JSON.stringify(response.data)}`);
res.json(response.data);

```

} catch (error) {  
handleError(error, res);  
}  
});

// Get Meeting Details  
router.get(‘/getMeeting’, async function(req, res) {  
const jwtToken = generateJWT();  
try {  
const meetingId = req.query.meetingId;

const response = await axios.get(`https://api.zoom.us/v2/meetings/${meetingId}`, {  
headers: {  
‘Authorization’: `Bearer ${jwtToken}`,  
}  
});

```
console.log(`Status: ${response.status}, Body: ${JSON.stringify(response.data)}`);
res.json(response.data);

```

} catch (error) {  
handleError(error, res);  
}  
});

module.exports = router;

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [March 23, 2025, 7:21am UTC](https://devforum.zoom.us/t/i-am-getting-an-error-error-request-failed-with-status-code-401-code-124-message-invalid-access-token/106061/2 "2025-03-23T07:21:03Z")

</div>

Closed on March 23, 2025, 7:21am UTC

This topic was automatically closed 368 days after the last reply. New replies are no longer allowed.
