Hi there,
I wanted to generate zoom meeting link and record that meeting then save it to cloud.
- I generate the zoom meeting link through my javascript code. (getting 202 as response code)
- I am able to start/stop recording via zoom API
- Now when I go to my recordings section on the website it asks me to purchase the Workplace Pro.
My question is: - will purchasing the workplace pro solve the issue?
- is there anything fundamentally wrong about the process im following?
Here is my code for better understanding.,
import axios from "axios";
import { creds } from "./creds.js";
const { account_id, client_id, client_secrete } = creds;
async function getAccessToken() {
const tokenUrl = "https://zoom.us/oauth/token";
const auth = Buffer.from(`${client_id}:${client_secrete}`).toString("base64");
const response = await axios.post(
`${tokenUrl}?grant_type=account_credentials&account_id=${account_id}`,
{},
{
headers: {
Authorization: `Basic ${auth}`,
},
}
);
return response.data.access_token;
}
async function scheduleZoomMeeting(token) {
const meetingConfig = {
topic: "Test Meeting",
type: 2, // 2 = Scheduled meeting
start_time: "2025-05-01T15:00:00Z",
duration: 30, // in minutes
timezone: "UTC",
agenda: "Discuss Zoom API integration",
settings: {
host_video: true,
participant_video: true,
join_before_host: true,
mute_upon_entry: false,
auto_recording: "cloud", // <-- ENABLE RECORDING
approval_type: 0,
registration_type: 1,
},
};
const response = await axios.post(
`https://api.zoom.us/v2/users/me/meetings`,
meetingConfig,
{
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
}
);
console.log("Meeting created successfully:");
console.log(`Join URL: ${JSON.stringify(response.data)}`);
}
async function startCloudRecording(meetingId, token) {
const url = `https://api.zoom.us/v2/live_meetings/${meetingId}/events`;
const headers = {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
};
const payload = {
method: "recording.stop",
};
try {
const response = await axios.patch(url, payload, { headers });
console.log(
`Successfully started cloud recording for meeting ${meetingId}`
);
console.log(response);
} catch (error) {
console.log(error);
}
}
async function getRecordingFiles(meetingId, token) {
const url = `https://api.zoom.us/v2/meetings/${meetingId}/recordings`;
const response = await axios.get(url, {
headers: {
Authorization: `Bearer ${token}`,
},
});
const transcriptFiles = response.data.recording_files.filter(
(file) => file.file_type === "TRANSCRIPT"
);
transcriptFiles.forEach((file) => {
console.log("Transcript Download URL:", file.download_url);
});
}
When i try to fetch the meeting recording with specific meeting id I get
recording doesn't exist error with statuscode 404
Follow up: Is there any other way of doing this? using zoom-sdk? I dont want to provide any user interface to this that is why I am not using web-sdk.
thanks in advance!