Download URL is not working

Hi @tommy - Adding another variation to the general problem of download URLs not working below. The accepted answer of using a non-streaming approach doesn’t work for me.

Problem : Files do not fully download. The file size after using the download URL does not match the size of the recording on Zoom servers – files are always around 15% smaller than on the server. As a result, I cannot play them back once downloaded. Applies to both M4A and MP4s.

Interesting Details

  • Only affects my more recent recordings. The download URLs from March 2020 download in full successfully.
  • Pasting the download URL into the browser works - the file is downloaded completely

Examples
Below are all the curl & Python attempts I’ve tried. They all result in the same thing - the file is only partially downloaded.

Curl:

curl -L -v -o MyRec.m4a
curl -L -v -o MyRec.mp4

Python (3.7):

import requests
import shutil
import urllib.request
import wget


def wget_test(url, filename):
    wget.download(url, filename)

def download_urllib(url, filename):
    urllib.request.urlretrieve(url=url, filename=filename)

def download_chunk(url, filename):
    with requests.get(url, stream=False) as r:
        r.raise_for_status()
        with open(filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                if chunk:  # filter out keep-alive new chunks
                    f.write(chunk)
                    # f.flush()
    return filename

def download_file_stream(url, filename):
    with requests.get(url, stream=True) as r:
        with open(filename, 'wb') as f:
            shutil.copyfileobj(r.raw, f)
    return filename

def download_file_nostream(url, filename):
    with requests.get(url, stream=False) as r:
        with open(filename, 'wb') as f:
            shutil.copyfileobj(r.raw, f)
    return filenam

Hey @nate123, @evgeniya.kuzina,

Can you please try adding the JWT Token as a query param to the end of the download url?

download_url?access_token=JWT_TOKEN_HERE

https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingget

Thanks,
Tommy

1 Like

Hey @tommy - Adding the JWT token to the download URL indeed fixes my issue of partial downloads. Thanks for quick reply!

1 Like

Glad to hear that fixed it! :slight_smile:

-Tommy

HI Tom,
Any update?

Thanks.
Regards,
Selva

This fixed my Python script. Now it downloads ALL cloud recordings.

Funny how before we didn’t need to include the JWT token in the download_url for it to work.

Thanks!

1 Like

@tommy

Hi,

Suddenly, for today’s recordings, only authenticated users can view was enabled under share settings even though I have switched it off at account level and recording level settings.

Because of this, all my recordings download got failed even with JWT token.

It would be good if these changes are done with prior notifications. Also, currently what should I do to disable this.

Currently, I’m manually changing the option and running the recording transfer job. Please do let me know the step to avoid this.

Hey @selva.iyyamperumal,

The current way to download protected recordings is to use JWT_Token.

download_url?access_token=JWT_TOKEN_HERE

The release of OAuth access tokens being able to download recordings has been delayed.

Thanks,
Tommy

Hey @rrodrigues,

Glad you got it working! We updated our security for downloading recordings and that is why you have to use the JWT Token. :slight_smile:

Thanks,
Tommy

Hey @te_zoom.admin,

Were your settings changed by another Zoom user?

You could lock the setting at the admin level to keep your Zoom recordings in the “Public” setting.

Thanks,
Tommy

Hi Tom,
we are using: download_url?access_token=download_token in our Node.js code.

But still we are getting ECONNRESET errors. Still files not fully downloaded in some cases.

Could you please check and let me know?

Thanks.
Selva

Hey @selva.iyyamperumal,

Can you please private message me the meeting id.

Thanks,
Tommy

Sent Tom. Please check and let us know
Thanks.
Selva

Thanks @selva.iyyamperumal,

I will check as soon as possible.

-Tommy

It looks like when I try to request a video download by adding the “?access_token=”+jwt, the response I get is a 302 (temporary redirect), but there is no “Location” header to tell me where to redirect to. I think there should be. This might be in violation of HTTP protocol.

Hey @magmatic,

Can you please send this and the download_url to developersupport@zoom.us so we can debug?

Thanks,
Tommy

I got the same problem.
Did someone solve this problem with PHP?

@tommy
download_url and down_load token I got from “recording.completed” event that works normally with wget and browser but do not work with curl.
GuzzleHttp\Client also does not work.

Hey @kju ,

Can you please send this and the download_url to developersupport@zoom.us so we can debug?

Thanks,
Tommy

Can you post the PHP CURL code that works for downloading the recordings. I keep getting “Download has been disabled by the administrator (200)” even after using the JWT token with the download URL i get using the V2 API.
I have an urgent need to download recordings from my account.

Hey @ssnukala,

It sounds like your Zoom admin or owner has disabled Cloud Recordings from being downloaded. Make sure this setting is turned on:

You can check the setting here: https://zoom.us/account/setting?tab=recording

Thanks,
Tommy