Zoom Cloud recording “download_URL” working only in browser


I’m able to access download URLs fine and when the download URL is pasted into the browser it is downloading the mp4 file.

The same download_url I’m using from nodeJS or python it is returning HTML Page as a response (Required Password HTML Page), Wrapped the URL with Nodejs it is returning status code as 401 and response body forbidden.

How can I access the Recorded meeting video from the backend code(Node JS or Python) ?

I’m using JWT Token to retrieve the download_URL

1 Like

Hi @shravan, I have removed the screenshot as it included sensitive account and recording data.

When accessing the recording, can you add a JWT as an access_token parameter to the download url?

Follow the Get Meeting Recordings API documentation reference on the download_url for more information.

Yes I’m adding access_token parameter for that I’m passing jet token

download_url? access_token = Bearer < JWT TOKEN >

@shravan do you know if there are any authentication profiles on your account or user level settings restricting access to cloud recordings from specific domains?

did you find the solution ? I am not getting any response from zoom team and there is no way to implement this. Please someone provide solution for this.

Hi Shravan
Did this work for you. I am having the same problem. Download_url returns a html response and not the recording (using Node.js, JWT)

No it is not resolve,so I’m using webhook to fix that problem

Hey @ankit, @shoeb, @shravan,

Can you please share the code you are using to download the file?

Please share steps to reproduce the issue.


Hey @tommy,

This is my code.

$destination = $dir . "/movie.mp4";
$authorization = 'Authorization: Bearer ' . $token;

$url = $url . '?access_token=' . $token;
$fp = fopen($destination, "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    
curl_setopt($ch, CURLOPT_FILE, $fp);


url and token is download_url and download_token in Recording Completed

And result:

I have same issue.

Can anybody help me?

1 Like

Hey @karasiov, @HyoSeong,

Can you try just using the ?access_token=token query param and not the Authorization Bearer?

That should fix the issue.


1 Like

Thanks for reply, @tommy
I changed my code

$destination = $dir . "/movie.mp4";
//$authorization = 'Authorization: Bearer ' . $token;
$url = $url . '?access_token=' . $token;
$fp = fopen($destination, "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FILE, $fp);

Then the result is

Access denied

But cURL command works, postman works too. ( download_url?access_token=somelongtoken )
(This is weird)

Temporary I use Get Meeting Recordings API, this API return download_url too,
But It doesn’t need any token to download.

Hey @HyoSeong,

Can you try allowing redirects in your request to download the file:

Does it have the token included?


not OP but this fixed my 401 / getting HTML response. thanks!

1 Like

Thanks for sharing @mokutsu! :slight_smile:


For clarify the correct curl command that worked for me is

curl -L -X GET <download_url_from_meeting_api>?access_token=<jwt_token>

The docs are confusing on this one as <download_path> is no where to be found

1 Like

@tommy, @mokutsu
I have the same issue I am able to download using a browser when I am logged in the Download url plus the JWT token as a query parameter works.
But when I do the same using my php code using curl it gives password required page in return.
@tommy. I see that there are multiple questions on this.
I am guessing you may have something that worked end to end. So please post full code and steps that you guys have tested and work

  1. Download the file using curl in PHP not command line shell
  2. Get the actual file name instead of specifying one.

I have code for all this but I can not get past the password required using PHP curl.

Any help will be greatly appreciated.


Hey @psuhas,

Thanks for sharing and your feedback. We will use it to improve our docs.


Hey @ssnukala,

Make sure of, add the JWT Token as a query param and not as a request header:


I see I have replied to a few of your posts already in this thread, let’s continue this discussion there:

Let me know if that helps!


you are trying to open the destinarion with write permission, please try with “r” instead of “w” like this:

$fp = fopen($destination, "r");

1 Like