# Unable to get Recording URL's filename and extension using Python

**URL:** <https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558>\
**Category:** API and Webhooks\
**Created:** [August 18, 2019, 4:29pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558 "2019-08-18T16:29:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![abhilash](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/abhilash/32/1285_2.png) [@abhilash](https://devforum.zoom.us/u/abhilash)\
**Post date:** [August 18, 2019, 4:29pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/1 "2019-08-18T16:29:17Z")

</div>

In the API [Cloud Recordings API](https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingslist), when I try to use Python’s `urlopen` or `requests` to fetch the **filename** and **extension** of the `download_url` field, it gives me 403 Forbidden error.

I’m using the `download_url` of the recording that has type `active_speaker`

How should I fix this?

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [August 19, 2019, 2:46pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/2 "2019-08-19T14:46:54Z")

</div>

Hey @abhilash,

Do you know if your Cloud Recording settings are [password protected](https://support.zoom.us/hc/en-us/articles/203741855-Cloud-Recording#h_48ac2f31-187a-4051-95a6-ef35fae2562c) or private?

Check out my post here if so,

> [@BUG downloading cloud recordings with access token set results in an invalid response](https://devforum.zoom.us/t/bug-downloading-cloud-recordings-with-access-token-set-results-in-an-invalid-response/4292/25):
>
> @patricio.giacomino, @matt, @ryan As of now to download a private or password protected cloud recording you must use a [Zoom JWT App Type](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-jwt-app). Use the download\_url from the [Get Recordings Endpoint](https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingslist) or the download\_url from the [Recording Completed Webhook](https://marketplace.zoom.us/docs/api-reference/webhook-reference/recording-events/recording-completed) and add the access\_token query param to the end of the url with your JSON Web Token as the value. Example: https://api.zoom.us/recording/download/{{ Download Path }}?access\_token={{ JWT Token }} [19%20PM] The only way to use OAuth to download a …

Let me know if this helps!

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![abhilash](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/abhilash/32/1285_2.png) [@abhilash](https://devforum.zoom.us/u/abhilash)\
**Post date:** [August 19, 2019, 4:31pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/3 "2019-08-19T16:31:16Z")

</div>

![My_Settings_-_Zoom](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/f/fb854c31cac793bc6089afff57d5237507c7d1c7.png)

It’s already set to off.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [August 19, 2019, 4:33pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/4 "2019-08-19T16:33:10Z")

</div>

Thanks @abhilash,

What app type are you using: OAuth or JWT?

---

<div class="post-metadata">

**Author:** ![abhilash](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/abhilash/32/1285_2.png) [@abhilash](https://devforum.zoom.us/u/abhilash)\
**Post date:** [August 19, 2019, 5:34pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/5 "2019-08-19T17:34:51Z")

</div>

I’m using OAuth…

---

<div class="post-metadata">

**Author:** ![ryan](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ryan/32/37137_2.png) [@ryan](https://devforum.zoom.us/u/ryan)\
**Post date:** [August 19, 2019, 5:49pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/6 "2019-08-19T17:49:14Z")

</div>

We’ve started seeing 403s on all of our recording download requests as of yesterday. Something must have changed.

---

<div class="post-metadata">

**Author:** ![abhilash](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/abhilash/32/1285_2.png) [@abhilash](https://devforum.zoom.us/u/abhilash)\
**Post date:** [August 19, 2019, 6:02pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/7 "2019-08-19T18:02:15Z")

</div>

Oh, ok. So, what’s next? Any ETA until this problem is resolved?

---

<div class="post-metadata">

**Author:** ![ryan](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ryan/32/37137_2.png) [@ryan](https://devforum.zoom.us/u/ryan)\
**Post date:** [August 19, 2019, 6:05pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/8 "2019-08-19T18:05:37Z")

</div>

This was not correct, see below

~~Doing some more investigating… We previously used the `download_token` in the `recording.completed` webhook payload as an `access_token` param on the recording download url… now it appears that omitting the `access_token` param returns a 200 but adding it returns the 403…~~

---

<div class="post-metadata">

**Author:** ![abhilash](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/abhilash/32/1285_2.png) [@abhilash](https://devforum.zoom.us/u/abhilash)\
**Post date:** [August 19, 2019, 6:06pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/9 "2019-08-19T18:06:14Z")

</div>

Meanwhile, @tommy and @ryan Thanks a ton for replying so fast! I really appreciate your responsiveness. 🙌👍

---

<div class="post-metadata">

**Author:** ![ryan](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ryan/32/37137_2.png) [@ryan](https://devforum.zoom.us/u/ryan)\
**Post date:** [August 19, 2019, 6:33pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/10 "2019-08-19T18:33:22Z")

</div>

I’m fast because my customers are complaining about not being able to access their recordings! 😰

---

<div class="post-metadata">

**Author:** ![ryan](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ryan/32/37137_2.png) [@ryan](https://devforum.zoom.us/u/ryan)\
**Post date:** [August 19, 2019, 7:11pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/11 "2019-08-19T19:11:34Z")

</div>

I was wrong about `download_token`… some user agents (httpie, browsers) are able to fetch the recordings with the download token i.e. `https://zoom.us/recording/download/<recording path>?access_token=<download_token>`. But others are not (curl). Still investigating…

---

<div class="post-metadata">

**Author:** ![ryan](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ryan/32/37137_2.png) [@ryan](https://devforum.zoom.us/u/ryan)\
**Post date:** [August 19, 2019, 7:15pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/12 "2019-08-19T19:15:57Z")

</div>

Ok, that should have tipped it off! It’s cookies! The initial request returns a 302 and sets some cookies in the response. You must use those cookies when following the redirect.

---

<div class="post-metadata">

**Author:** ![TimZoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/timzoom/32/978_2.png) [@TimZoom](https://devforum.zoom.us/u/TimZoom)\
**Post date:** [August 19, 2019, 7:54pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/13 "2019-08-19T19:54:39Z")

</div>

Thanks for the info Ryan, we are escalating to our eng team and will be back with a response asap.

---

<div class="post-metadata">

**Author:** ![matt](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/matt/32/802_2.png) [@matt](https://devforum.zoom.us/u/matt)\
**Post date:** [August 19, 2019, 8:31pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/15 "2019-08-19T20:31:22Z")

</div>

Can the [status page](https://status.zoom.us/) be updated? This is a service disruption.

---

<div class="post-metadata">

**Author:** ![TimZoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/timzoom/32/978_2.png) [@TimZoom](https://devforum.zoom.us/u/TimZoom)\
**Post date:** [August 19, 2019, 8:34pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/16 "2019-08-19T20:34:15Z")

</div>

We don’t have a status page for the API/Developer tools yet. We plan to release one later this year though to be more transparent about these sorts of issues.

---

<div class="post-metadata">

**Author:** ![drosentrater](https://avatars.discourse-cdn.com/v4/letter/d/e0b2c6/32.png) [@drosentrater](https://devforum.zoom.us/u/drosentrater)\
**Post date:** [August 19, 2019, 8:52pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/17 "2019-08-19T20:52:13Z")

</div>

I’m having the same issues using a webhook only app. Download urls were working fine until Friday and then started sending back errors. Thanks for being on top of this!

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [August 19, 2019, 9:06pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/18 "2019-08-19T21:06:32Z")

</div>

Thanks for posting @drosentrater, our team is working on the issue and we will post back here with updates.

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![proveedores](https://avatars.discourse-cdn.com/v4/letter/p/48db29/32.png) [@proveedores](https://devforum.zoom.us/u/proveedores)\
**Post date:** [August 19, 2019, 11:35pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/20 "2019-08-19T23:35:59Z")

</div>

¿Se llegó a solucionar este problema ?  
Porque me sucede lo mismo con `download_url`

---

<div class="post-metadata">

**Author:** ![eric](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/eric/32/1490_2.png) [@eric](https://devforum.zoom.us/u/eric)\
**Post date:** [August 20, 2019, 3:52pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/21 "2019-08-20T15:52:55Z")

</div>

FYI, this is no longer working for me either in Java. I think you are correct about the cookies not being used on the redirect by the library I am using to download the recording.

---

<div class="post-metadata">

**Author:** ![michael\_p.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_p.zoom/32/18105_2.png) [@michael\_p.zoom](https://devforum.zoom.us/u/michael_p.zoom)\
**Post date:** [August 20, 2019, 6:02pm UTC](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558/22 "2019-08-20T18:02:02Z")

</div>

Hi Eric,

For updates, please refer to our this forum post - [Update: Recording download url 403 error](https://devforum.zoom.us/t/update-recording-download-url-403-error/5608). We’re working on resolving the issue asap.

[Next page](https://devforum.zoom.us/t/unable-to-get-recording-urls-filename-and-extension-using-python/5558.md?page=2)
