02_production PermissionDenied Error

I also had the same problem with permission, due to wrong service added.

The easiest way to check if you have the right service is through this link:

There you can see:

  • what you have currently signed up to
  • your api keys
  • the expiry time of the service

below this section there is also a " You might also be interested in" section.
There you can find the image search if it is missing. Simply click the “add” button below option(s) of choice.

1 Like

This was generally helpful thank you. In case I’m not the only one with this issue even after thinking I went through all the above steps correctly, pointing me to the “You might also be interested in” section and showing all led me to fix it.

My problem was I had the Bing Search APIs, but there is apparently a difference between the regular Bing Search API, and Bing Search APIs v7. Adding the v7 one fixed it for me. Adding screenshot below for clarity.


I was trying to use Computer Vision, but using Search APIs v7 does work. Thanks!

I’m getting the PermissionDenied Error, too, and even Bing Search APIs v7 doesn’t help.

I think the issue is that Microsoft has changed the service from “Cognitive” to “Bing Services”, something along the lines. This started on 1/11/20.

Probably in the utils.py file the API url needs to be changed from https://api.cognitive.microsoft.com to https://api.bing.microsoft.com/v7.0/images/search? @jeremy

I tried the code in https://docs.microsoft.com/en-us/bing/search-apis/bing-image-search/quickstarts/rest/python and that worked for the API and that’s where I get the link from.


I tried change, but I got error: Operation returned an invalid status code ‘Resource Not Found’ and I have problem with PermissionDenied. I can’t solve it.

I solved this problem with code:

And now I have 450 imges bears


I tried the updated version from Microsoft that @Zmey56 tried, but I still get an Access Denied although all my keys are right. Any ideas?

I don’t think Access Denied is the same as Permission Denied, need more info posted on what you are doing.


As the response code from the request is not actually seen in the stack trace it would need to be found using debug. A fault is anything other than the code 200

Searching through the response codes at HTTP Response Codes there are no direct matchings for ‘PermissionDenied’ and ‘Access Denied’. They are perhaps AZURE specific. A search of the AZURE python code in


maybe fruitful.

Other than that take the advise given by the other posters in this post.

I believe Jeremy did not intend for AZURE to be the definitive image search but was left with it as a compromise. Also AZURE interface may be changed at any time, so expect new behaviour to occur.

It maybe that one relates to a good key value and some other security issue, or else a bad key and then a direct failure.

Azure status codes

This solves the Permission Denied error by building on Zmey56’s solution.
I created a local instance of the bing search function, that returns an L object.

 def search_images_bing(key, term, max_images: int = 100, **kwargs):    
     params = {'q':term, 'count':max_images}
     headers = {"Ocp-Apim-Subscription-Key":key}
     search_url = "https://api.bing.microsoft.com/v7.0/images/search"
     response = requests.get(search_url, headers=headers, params=params)
     search_results = response.json()    
     return L(search_results['value'])

But because the old code looks for the keyname content_url, you need to change it to ‘contentUrl’

results = search_images_bing(key, 'grizzly bear', min_sz=128)
ims = results.attrgot('contentUrl')

Then it works fine and fits in nicely into the jupyter workbooks


I have been having the same issue although I changed it in the utils.py file that is installed in my notebook. Still the same issue.
It appears though it is calling another the file from following path which I cannot find to alter the code:

Can anybody help?

Very much appreciate it!

1 Like

Nah apparently not the utils.py file from the jupyter nb is taken but another one you cannot change.
I recommend implementing retuso’s solution in a cell in your notebook! :slight_smile:

I can confirm this works wonderfully and I’m grateful for the solution.
(In my case, I preferred to give this function a new name, not overwrite the initial one.)
Also, it’s very easy to forget to change content_url to contentUrl, this might first thing to look at if errors.

1 Like

This code


uses the base class


to pass the error as is returned from the server.

it does work,thank you very much

This is what I did as well, still awaiting from Microsoft whether they plan to update documentation and code for the ImageSearchClient API.

I can confirm that this works as of Nov 9 2020. Thank you.

Many thanks retuso!!
It works beautifully

1 Like

These instructions no longer work - the Bing images search is no longer in Cognitive Services - the new endpoint is https://api.bing.microsoft.com/ . I got the key by going to BingImages > Keys and Endpoint but can’t get it to work with the Fast Ai api; I get a Permission Denied error. When I try out the key using example code from Microsoft I don’t get an error.

Found solution above. Thanks so much

Same here, clearly microsoft have changed the whole image search product, and not made it backwards compatible, i’ve wasted hours on this. :frowning:

Yep! That was it! Just missed the uppercase…

Thank you!