[GH-ISSUE #13557] issue: openai image generation not working anymore #120261

Closed
opened 2026-05-20 21:51:36 -05:00 by GiteaMirror · 8 comments
Owner

Originally created by @Naurandir on GitHub (May 6, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/13557

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Docker

Open WebUI Version

0.6.6

Ollama Version (if applicable)

0.6.2

Operating System

Ubuntu 24.04.1 LTS

Browser (if applicable)

No response

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have listed steps to reproduce the bug in detail.

Expected Behavior

Create image via Button in input or creating image after generated text should create an image.

Actual Behavior

Frontend says:
An error occurred while generating an image

Backend Log Error (url a bit anonymized for security reason in the logs here):
requests.exceptions.HTTPError: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxx/user-xxx/img-xxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx 2025-05-06 10:34:56.725 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.60.101:65431 - "POST /api/v1/images/generations HTTP/1.1" 400 - {} 2025-05-06 10:34:56.712 | ERROR | open_webui.routers.images:load_url_image_data:449 - Error saving image: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxx/user-xxxx/img-xxxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx
(full error in error log section)

  • i can still open the url if i want and can see the generated image in browser

Is there something with that blob storage or is there something off with open-webui now?

Tested with:

  • two different upgraded 0.6.6 instances
  • separate local docker image fresh pulled and started

Steps to Reproduce

  1. setup open ai image generation in administration
  2. create a new chat
  3. click on the button for image generation
  4. type in text and press enter
    error occurs

alternative:

  1. setup open ai image generation in administration
  2. create a new chat
  3. type in some text, press enter and let the bot create a response
  4. click on the small image icon for chat resposne to generate image based on that text
    error occurs

Logs & Screenshots

2025-05-06 10:34:56.712 | ERROR | open_webui.routers.images:load_url_image_data:449 - Error saving image: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxx/user-xxx/img-xxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx - {}
Traceback (most recent call last):

File "/usr/local/bin/uvicorn", line 10, in
sys.exit(main())
│ │ └
│ └
└ <module 'sys' (built-in)>
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1161, in call
return self.main(args, **kwargs)
│ │ │ └ {}
│ │ └ ()
│ └ <function BaseCommand.main at 0x765a07c05e40>

File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1082, in main
rv = self.invoke(ctx)
│ │ └ <click.core.Context object at 0x765a088e4410>
│ └ <function Command.invoke at 0x765a07c06a20>

File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1443, in invoke
return ctx.invoke(self.callback, **ctx.params)
│ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '
', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
│ │ │ │ └ <click.core.Context object at 0x765a088e4410>
│ │ │ └ <function main at 0x765a07801580>
│ │ └
│ └ <function Context.invoke at 0x765a07c053a0>
└ <click.core.Context object at 0x765a088e4410>
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 788, in invoke
return __callback(args, **kwargs)
│ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '
', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
└ ()
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 412, in main
run(
└ <function run at 0x765a07b27ec0>
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 579, in run
server.run()
│ └ <function Server.run at 0x765a07a71300>
└ <uvicorn.server.Server object at 0x765a07a96b90>
File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run
return asyncio.run(self.serve(sockets=sockets))
│ │ │ │ └ None
│ │ │ └ <function Server.serve at 0x765a07a713a0>
│ │ └ <uvicorn.server.Server object at 0x765a07a96b90>
│ └ <function run at 0x765a07f94b80>
└ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/init.py'>
File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
│ │ └ <coroutine object Server.serve at 0x765a079ba7a0>
│ └ <function Runner.run at 0x765a07ddc720>
└ <asyncio.runners.Runner object at 0x765a07e429d0>
File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
│ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai...
│ │ └ <cyfunction Loop.run_until_complete at 0x765a07841220>
│ └ <uvloop.Loop running=True closed=False debug=False>
└ <asyncio.runners.Runner object at 0x765a07e429d0>
File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
│ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..send_no_error at 0x7659b11bb1a0>
│ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
│ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7659b9d48e50>
└ <open_webui.main.RedirectMiddleware object at 0x7659b1e45990>
File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
│ │ │ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..send_no_error at 0x7659b11bb1a0>
│ │ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
│ │ │ └ <starlette.requests.Request object at 0x7659b11ab510>
│ │ └ <fastapi.routing.APIRouter object at 0x7659b231bf10>
│ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7659b9d48e50>
└ <function wrap_app_handling_exceptions at 0x765a04d087c0>
File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
│ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7659b11a5bc0>
│ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
└ <fastapi.routing.APIRouter object at 0x7659b231bf10>
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in call
await self.middleware_stack(scope, receive, send)
│ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7659b11a5bc0>
│ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
│ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7659b231bf10>>
└ <fastapi.routing.APIRouter object at 0x7659b231bf10>
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
│ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7659b11a5bc0>
│ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
│ └ <function Route.handle at 0x765a04d09e40>
└ APIRoute(path='/api/v1/images/generations', name='image_generations', methods=['POST'])
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
│ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7659b11a5bc0>
│ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
│ └ <function request_response..app at 0x7659b23bcc20>
└ APIRoute(path='/api/v1/images/generations', name='image_generations', methods=['POST'])
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
│ │ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7659b11a5bc0>
│ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
│ │ └ <starlette.requests.Request object at 0x7659b11e21d0>
│ └ <function request_response..app..app at 0x7659b11a5800>
└ <function wrap_app_handling_exceptions at 0x765a04d087c0>
File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
│ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7659b11a51c0>
│ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7659b11b8ea0>
│ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c...
└ <function request_response..app..app at 0x7659b11a5800>
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
│ └ <starlette.requests.Request object at 0x7659b11e21d0>
└ <function get_request_handler..app at 0x7659b23bcb80>
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
raw_response = await run_endpoint_function(
└ <function run_endpoint_function at 0x765a04d0bc40>
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
return await dependant.call(**values)
│ │ └ {'user': UserModel(id='b6e93592-6eb4-4888-90f5-fa9ea8d6cc1b', name='admin', email='admin@local...
│ └ <function image_generations at 0x7659b8a239c0>
└ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant...

File "/app/backend/open_webui/routers/images.py", line 525, in image_generations
image_data, content_type = load_url_image_data(image_url, headers)
│ │ └ {'Authorization': 'Bearer xxxxxxxx...
│ └ 'https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxx/user-xxxx/img-Scw...
└ <function load_url_image_data at 0x7659b8a23920>

File "/app/backend/open_webui/routers/images.py", line 440, in load_url_image_data
r.raise_for_status()
│ └ <function Response.raise_for_status at 0x765a0529a660>
└ <Response [403]>

File "/usr/local/lib/python3.11/site-packages/requests/models.py", line 1024, in raise_for_status
raise HTTPError(http_error_msg, response=self)
│ │ └ <Response [403]>
│ └ '403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly...
└ <class 'requests.exceptions.HTTPError'>

requests.exceptions.HTTPError: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxx/user-xxx/img-xxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx
2025-05-06 10:34:56.725 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.60.101:65431 - "POST /api/v1/images/generations HTTP/1.1" 400 - {}

Additional Information

I checked the payment at open ai plattform and i can see it was paid, so the setup itself to connect to open ai worked without issues.

tested with dall-e-2 and dall-e-3

Originally created by @Naurandir on GitHub (May 6, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/13557 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version 0.6.6 ### Ollama Version (if applicable) 0.6.2 ### Operating System Ubuntu 24.04.1 LTS ### Browser (if applicable) _No response_ ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have listed steps to reproduce the bug in detail. ### Expected Behavior Create image via Button in input or creating image after generated text should create an image. ### Actual Behavior Frontend says: An error occurred while generating an image Backend Log Error (url a bit anonymized for security reason in the logs here): `requests.exceptions.HTTPError: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxx/user-xxx/img-xxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx 2025-05-06 10:34:56.725 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.60.101:65431 - "POST /api/v1/images/generations HTTP/1.1" 400 - {} 2025-05-06 10:34:56.712 | ERROR | open_webui.routers.images:load_url_image_data:449 - Error saving image: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxx/user-xxxx/img-xxxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx ` (full error in error log section) * i can still open the url if i want and can see the generated image in browser Is there something with that blob storage or is there something off with open-webui now? Tested with: * two different upgraded 0.6.6 instances * separate local docker image fresh pulled and started ### Steps to Reproduce 1. setup open ai image generation in administration 2. create a new chat 3. click on the button for image generation 4. type in text and press enter error occurs alternative: 1. setup open ai image generation in administration 2. create a new chat 3. type in some text, press enter and let the bot create a response 4. click on the small image icon for chat resposne to generate image based on that text error occurs ### Logs & Screenshots 2025-05-06 10:34:56.712 | ERROR | open_webui.routers.images:load_url_image_data:449 - Error saving image: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxx/user-xxx/img-xxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx - {} Traceback (most recent call last): File "/usr/local/bin/uvicorn", line 10, in <module> sys.exit(main()) │ │ └ <Command main> │ └ <built-in function exit> └ <module 'sys' (built-in)> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1161, in __call__ return self.main(*args, **kwargs) │ │ │ └ {} │ │ └ () │ └ <function BaseCommand.main at 0x765a07c05e40> └ <Command main> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1082, in main rv = self.invoke(ctx) │ │ └ <click.core.Context object at 0x765a088e4410> │ └ <function Command.invoke at 0x765a07c06a20> └ <Command main> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1443, in invoke return ctx.invoke(self.callback, **ctx.params) │ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... │ │ │ │ └ <click.core.Context object at 0x765a088e4410> │ │ │ └ <function main at 0x765a07801580> │ │ └ <Command main> │ └ <function Context.invoke at 0x765a07c053a0> └ <click.core.Context object at 0x765a088e4410> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 788, in invoke return __callback(*args, **kwargs) │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... └ () File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 412, in main run( └ <function run at 0x765a07b27ec0> File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 579, in run server.run() │ └ <function Server.run at 0x765a07a71300> └ <uvicorn.server.Server object at 0x765a07a96b90> File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run return asyncio.run(self.serve(sockets=sockets)) │ │ │ │ └ None │ │ │ └ <function Server.serve at 0x765a07a713a0> │ │ └ <uvicorn.server.Server object at 0x765a07a96b90> │ └ <function run at 0x765a07f94b80> └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/__init__.py'> File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run return runner.run(main) │ │ └ <coroutine object Server.serve at 0x765a079ba7a0> │ └ <function Runner.run at 0x765a07ddc720> └ <asyncio.runners.Runner object at 0x765a07e429d0> File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai... │ │ └ <cyfunction Loop.run_until_complete at 0x765a07841220> │ └ <uvloop.Loop running=True closed=False debug=False> └ <asyncio.runners.Runner object at 0x765a07e429d0> File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7659b11bb1a0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7659b9d48e50> └ <open_webui.main.RedirectMiddleware object at 0x7659b1e45990> File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) │ │ │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7659b11bb1a0> │ │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... │ │ │ └ <starlette.requests.Request object at 0x7659b11ab510> │ │ └ <fastapi.routing.APIRouter object at 0x7659b231bf10> │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7659b9d48e50> └ <function wrap_app_handling_exceptions at 0x765a04d087c0> File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7659b11a5bc0> │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... └ <fastapi.routing.APIRouter object at 0x7659b231bf10> File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ await self.middleware_stack(scope, receive, send) │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7659b11a5bc0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... │ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7659b231bf10>> └ <fastapi.routing.APIRouter object at 0x7659b231bf10> File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7659b11a5bc0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... │ └ <function Route.handle at 0x765a04d09e40> └ APIRoute(path='/api/v1/images/generations', name='image_generations', methods=['POST']) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7659b11a5bc0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... │ └ <function request_response.<locals>.app at 0x7659b23bcc20> └ APIRoute(path='/api/v1/images/generations', name='image_generations', methods=['POST']) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) │ │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7659b11a5bc0> │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... │ │ └ <starlette.requests.Request object at 0x7659b11e21d0> │ └ <function request_response.<locals>.app.<locals>.app at 0x7659b11a5800> └ <function wrap_app_handling_exceptions at 0x765a04d087c0> File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7659b11a51c0> │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7659b11b8ea0> │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.18.0.4', 8080), 'c... └ <function request_response.<locals>.app.<locals>.app at 0x7659b11a5800> File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app response = await f(request) │ └ <starlette.requests.Request object at 0x7659b11e21d0> └ <function get_request_handler.<locals>.app at 0x7659b23bcb80> File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app raw_response = await run_endpoint_function( └ <function run_endpoint_function at 0x765a04d0bc40> File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function return await dependant.call(**values) │ │ └ {'user': UserModel(id='b6e93592-6eb4-4888-90f5-fa9ea8d6cc1b', name='admin', email='admin@local... │ └ <function image_generations at 0x7659b8a239c0> └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant... File "/app/backend/open_webui/routers/images.py", line 525, in image_generations image_data, content_type = load_url_image_data(image_url, headers) │ │ └ {'Authorization': 'Bearer xxxxxxxx... │ └ 'https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxx/user-xxxx/img-Scw... └ <function load_url_image_data at 0x7659b8a23920> > File "/app/backend/open_webui/routers/images.py", line 440, in load_url_image_data r.raise_for_status() │ └ <function Response.raise_for_status at 0x765a0529a660> └ <Response [403]> File "/usr/local/lib/python3.11/site-packages/requests/models.py", line 1024, in raise_for_status raise HTTPError(http_error_msg, response=self) │ │ └ <Response [403]> │ └ '403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly... └ <class 'requests.exceptions.HTTPError'> requests.exceptions.HTTPError: 403 Client Error: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. for url: https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxx/user-xxx/img-xxx.png?st=xxx&sp=r&sv=xxx&sr=b&rscd=inline&rsct=image/png&skoid=xxx&skt=xxx&ske=xxx&sks=b&skv=xxx&sig=xxx 2025-05-06 10:34:56.725 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.60.101:65431 - "POST /api/v1/images/generations HTTP/1.1" 400 - {} ### Additional Information I checked the payment at open ai plattform and i can see it was paid, so the setup itself to connect to open ai worked without issues. tested with dall-e-2 and dall-e-3
GiteaMirror added the bug label 2026-05-20 21:51:36 -05:00
Author
Owner

@adambrakhane commented on GitHub (May 6, 2025):

I'm seeing this too. Looks to be a regression where the Authorization header is being sent w/ the request errornously. Azure sees both methods & defaults to the header key (which fails). Headers need to be excluded from the request to get the image.

<!-- gh-comment-id:2855183961 --> @adambrakhane commented on GitHub (May 6, 2025): I'm seeing this too. Looks to be a regression where the Authorization header is being sent w/ the request errornously. Azure sees both methods & defaults to the header key (which fails). Headers need to be excluded from the request to get the image.
Author
Owner

@tjbck commented on GitHub (May 6, 2025):

Is this also the case in dev? could anyone confirm?

<!-- gh-comment-id:2855934730 --> @tjbck commented on GitHub (May 6, 2025): Is this also the case in dev? could anyone confirm?
Author
Owner

@0xGitGuy commented on GitHub (May 12, 2025):

I'm also having this problem. Was this included in the latest v0.6.9?

https://generativelanguage.googleapis.com/v1beta/openai/
imagen-3-0-generate-002

<!-- gh-comment-id:2873328056 --> @0xGitGuy commented on GitHub (May 12, 2025): I'm also having this problem. Was this included in the latest v0.6.9? https://generativelanguage.googleapis.com/v1beta/openai/ imagen-3-0-generate-002
Author
Owner

@haudamekki commented on GitHub (May 13, 2025):

I have the same Problem with Version 0.6.9

<!-- gh-comment-id:2877716745 --> @haudamekki commented on GitHub (May 13, 2025): I have the same Problem with Version 0.6.9
Author
Owner

@johnygke commented on GitHub (Jun 30, 2025):

has anyone found a way to resolve this issue? My workflow can't complete.

<!-- gh-comment-id:3020930254 --> @johnygke commented on GitHub (Jun 30, 2025): has anyone found a way to resolve this issue? My workflow can't complete.
Author
Owner

@johnwjm commented on GitHub (Nov 16, 2025):

I ended up reverting back to 0.6.33. Nothing I tried worked on the later releases.

<!-- gh-comment-id:3539450310 --> @johnwjm commented on GitHub (Nov 16, 2025): I ended up reverting back to 0.6.33. Nothing I tried worked on the later releases.
Author
Owner

@tolidano commented on GitHub (Jan 18, 2026):

This was (apparently) working and now it's not working anymore. https://www.reddit.com/r/OpenWebUI/comments/1oy60jr/image_generation_issues/

<!-- gh-comment-id:3765620400 --> @tolidano commented on GitHub (Jan 18, 2026): This was (apparently) working and now it's not working anymore. https://www.reddit.com/r/OpenWebUI/comments/1oy60jr/image_generation_issues/
Author
Owner

@Classic298 commented on GitHub (Jan 18, 2026):

@tolidano not working for you? share your setup. working fine for me

<!-- gh-comment-id:3765621567 --> @Classic298 commented on GitHub (Jan 18, 2026): @tolidano not working for you? share your setup. working fine for me
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#120261