mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-24 11:58:31 -05:00
[GH-ISSUE #13557] issue: openai image generation not working anymore #103945
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Naurandir on GitHub (May 6, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/13557
Check Existing Issues
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
README.md.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)
Is there something with that blob storage or is there something off with open-webui now?
Tested with:
Steps to Reproduce
error occurs
alternative:
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 "/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
@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.
@tjbck commented on GitHub (May 6, 2025):
Is this also the case in dev? could anyone confirm?
@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
@haudamekki commented on GitHub (May 13, 2025):
I have the same Problem with Version 0.6.9
@johnygke commented on GitHub (Jun 30, 2025):
has anyone found a way to resolve this issue? My workflow can't complete.
@johnwjm commented on GitHub (Nov 16, 2025):
I ended up reverting back to 0.6.33. Nothing I tried worked on the later releases.
@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/
@Classic298 commented on GitHub (Jan 18, 2026):
@tolidano not working for you? share your setup. working fine for me