Download URL is not working

Hey @selva.iyyamperumal,

We will continue looking into the issue and keep you updated.

Thanks,
Tommy

Hi Tom,
Please share the timeline to fix this issue, if any.

we have been facing this issue more than 4 weeks now. We need to decide whether we need to continue run our connectors or not.

Our customers are not happy to continue the service. Hope you understand. Please escalate the issue.

Thanks.
Regards,
Selva

Hey @selva.iyyamperumal,

Just pinged engineering again to look into this. Apologies as we are very busy, I will keep you updated.

Thanks,
Tommy

Hello, Tom!

Is there any update?
We continue to get 502 on download url.

Server error: GET https://{name}.zoom.us/rec/download/{code} resulted in a 502 Bad Gateway response:

502 Bad Gateway

502 Bad Gateway

(truncated...)

Thank you in advance!
Best Regards,
Evgeniya

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