Can I record and store the zoom meetings into our personal server instead of Cloud Storage or is there any way to transfer those file?

I have integrated the Zoom Meeting WebSDK into the Angular 11 application with client view. Now I need to record the ongoing sessions without any interruption (Host cannot stop or pause the recording) and store it onto the cloud storage, and only the Admin can have access those recorded file. The users who have been engaged in the meetings will not gonna have any access to those file. And also is there a way we can make a relation between the videos recorded and the meeting id. And is there any API that can fetch the video file from the Zoom Cloud Storage so that the Admin can view them whenever he/she wants.
Also I need this feature also be available in the Android and IOS platform as well. On the mobile platform we are using the Zoom Meeting SDK of those platform.
This information I require, based on this I can choose which plan I should go to upgrade my account to.

Browser Console Error
Right now I have enabled the Automatic Recording in the settings. (For local only)
and used following code snippet

              record: true

But it is showing the following error.

errorCode: 1,
errorMessage: "Please make sure host has enabled cloud recording and also not disabled it when use \"init()\" method",
method: "record",
result: null,
status: false

Which Web Meeting SDK version?
Version:- 2.2.0

Thank You.

Hi, @mucademy1,

Welcome to the Developer Forum and thank you for posting. Yes, it is possible to record a meeting and download it programmatically. This feature is available across our Android and IOS platforms too. To do this, you would need to write a script that downloads and uploads it to a cloud provider of your choice. I’ve linked a helpful Developer Forum post that goes into greater details of what this workflow may look like:

Once the download is uploaded to your cloud provider, you can manage the access permissions to the meeting. Down below, you will find the Get meetings recording API. The recording files can be downloaded via the download_url property listed in the response.

Get meetings recording API

Also, you can use the Cloud Recording Controls API to control in-meeting cloud recording features to control how the recording is stopped or paused. In-meeting controls include starting and stopping a recording, pausing and resuming a recording, and inviting participants as well.

Use in-meeting cloud recording controls API Link

I hope this answers your question, but please let me know if you have any further questions.


Thank You very much for your reply. It really helps a lot.
I have another query.
Suppose that I need to create an app that helps the user to come and join 1 - 1 meetings. (Like a Teacher - Student). Now My app will have many users and I want them to have meetings any time they want.
For Example:-
Suppose I have three teachers Teacher A, Teacher B, Teacher C
And I have 3 Students - Student 1, Student 2, Student 3
Now If Teacher A is engaged with Student 1, and if I want my app to let Teacher B to able to join the meeting with Student 2 from their device / browser.
Note:- The meetings between each teacher and student will be private only to that teacher and student.
Will it be possible to have concurrent meetings? If yes then how?
Right now after implementing the WebSDK whenever I am trying to start more than one meetings from different browser/computers I am getting the following error.

Thank You.

Hi, @mucademy1,

Thank you for posting in the Developer Forum – I am happy to help. First, can you share whether the host concurrent meeting featured is enabled on your account? This feature allows users to have 2 meetings active concurrently. I should note by default the user will be unable to join multiple meetings simultaneously on the desktop client.

Can I host concurrent meetings?


Thanks for your reply. And no I don’t have the concurrent meeting featured enabled right at the moment, as I am using the Basic (Free) Account plan. Based on the requirements and the solution to the current problem we are discussing I am going to shift to the premium plans.
As per the documentation (link provided by you) I have found this-
“Licensed users on Business, Education, and Enterprise accounts can host up to 2 meetings at the same time.”

Actually my need is the Host (The Admin account [mucademy1]) generates the meetings using the meeting API.
Then a teacher start the meetings using the ZOOM WebSDK (the teacher is not a zoom user) by generating the signature with role=1 (following the steps to start a meeting with WebSDK client view).
Then a student join that meeting.
According to the application (Our end) business logic a session/meeting includes only one teacher and one student.

Now while they are engaged in that session/meeting.
There might be another teacher who wants to start a different meeting register for them. At that time I am getting the said error.
My application can have multiple teacher and I want that more than 2 teacher can start the meetings at the same time.

To elaborate more.
I am using Angular 11 as my front end and Node JS as my back end.
My business logic is that Teacher and student can register to the website.
Student can book a session with a teacher for a certain time. (Just like appointment). One teacher can have one appointment with one student at a time.
So a student books a session with a teacher say 21 March 2022 11:00 AM. (So in the back end, with the help of Zoom Meeting API I am generating a meeting for that time, and save the meeting id for reference)

Now there might be another student who can also book a session at the same time with another teacher.
And this scenario can occur more than two times, that means at 11:00 AM 21 March multiple teacher can have session with multiple student. (One on One session).
So if those teacher simultaneously start the meeting on 11:00 AM, can they start and join the meetings, is it possible?

Teacher A -----> Student A 11:00 AM 21 March
Teacher B ------> Student B 11:00 AM 21 March (Error on Basic and Pro Plan Account)
Teacher C -------> Student D 11:00 AM 21 March (Error on Business, Education, Enterprise account)
Teacher D -------> Student C 11:00 AM 21 March (Error on Business, Education, Enterprise account)

Thank you for sharing this additional context. First, the same user will be unable to join multiple meetings simultaneously but can have up to 2 meetings active at a time. In order to test this workflow, you want to reach out to support to get the concurrent meeting feature enabled on the Zoom Account. After the feature is enabled, you can consider assigning or delegating a user or multiple users in your account to schedule meetings on behalf of teachers. This feature allows users with Scheduling Privilege the ability to manage and act as an alternative host for all meetings. For greater details on this workflow, please check out the Developer Support article linked below:

Additionally, I’ve linked 50+ results for concurrent meeting posts detailing how other community members leveraged this feature for your reference:

50+ results for Concurrent Meeting

Let me know if this helps.


Thanks a lot, this helped.
Now, If I get a Business Account Plan and say I purchased 10 license (Might purchase more in future).
After that Can I create My own User to assign license to them?
If so, Then suppose that I have created 10 Users and assigned those 10 license. So now using the ZOOM Meetings API I am gonna schedule the meetings.

And for concurrent meetings I want to use those users to host (according to the account plan) two meetings at the same time. So by math I can host 20 meetings with those users at a time. Is it right?

(Note:- The user does not need to join any meetings, their email / id will be use to host the meetings dynamically that’s all, after that the Teacher and Student will have their session).

So the next question is, do I need different ZOOM_API_KEY and ZOOM_APP_SECRET for each user, or it will be common for all the user. Like if I create an JWT app in Admin / Owner Account, then will that credentials be enough or common for all the meetings for all the user I have created before, I mean can I create the meetings with those credentials?

The following is how I am creating the request to generate a meeting. The generateZoomJWT(300000) is using the ZOOM_API_KEY and ZOOM_APP_SECRET to generate the token.

let zoom_token = library.generateZoomJWT(300000);
let zoom_request_body_options = {
    url: `${process.env.ZOOM_DEVELOPER_EMAIL}/meetings`,
    method: "POST",
    auth: {
        bearer: zoom_token,
    json: true,
    body: {},

One more question is ZOOM_DEVELOPER_URL is here is the Admin URL. So If I use these credentials to create the meetings, will I be able to use one of that Sub-user from before to start this meeting and act as a host? If not then what are the general ways to do this kind of task?

And if I purchase more license and create more users, then do I have to manually synchronize the existence of each user with my server? (Like I want to maintain how much user I have created and their email address for hosting the concurrent session)

And do I have to create a user for each license, (going with my scenario of concurrent meetings), is there any way we can use those license as a standalone mechanism to host the meetings?

And will this scenario be also the same for the Android and iOS (Using SDK) platform?

Regarding Crash Reports and Error Handlers.
Consider a scenario, suppose that two use (of my app, student and teacher) is in a meeting, and suddenly for some zoom server related reason (zoom server end) the meeting gets disconnected, so in that scenario, does the WebSDK throws any error where I can undo the session they were in and notify the user about the same and verify the crash report of the ZOOM?

Thank You very much.

Please reply, I am stuck to take the decision.

Yes, you can create another user to handle license assignments.

Correct, you can host 20 meetings with those users at a time. But each user will be only able to join one meeting at a time.

Great question, as long as the users are in your account, you can create a meeting for each user with the JWT as it is used for internal-based apps.

You can add a meeting assistant with our Add assistant API. Here is helpful developer support article on this:

If you want to validate the existence with your database, then yes, you would want to synchronize. You can also subscribe to our User has been created webhook to detect when users have been created in your account.

User has been created

You can consider either creating a user and that assign a license. Or you can designate several users and you assign their license accordingly via API.

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