Docs
Open WebUI
Open WebUI treats any OpenAI-compatible endpoint as a connection. Add one in Admin Settings, or set two environment variables at container start — the two paths end at the same place.
One OpenAI connection under Admin Settings, or OPENAI_API_BASE_URL and OPENAI_API_KEY at container start — both end at the same /v1.
# Settings → Admin Settings → Connections → Manage OpenAI API Connections → +
URL https://api.kunavo.com/v1
API Key sk-kn-...
Model IDs (Filter) claude-sonnet-5, claude-opus-5, claude-haiku-4-5, gpt-5-4
# …or at container start, same thing:
docker run -d -p 3000:8080 \
-e OPENAI_API_BASE_URL=https://api.kunavo.com/v1 \
-e OPENAI_API_KEY=sk-kn-... \
-v open-webui:/app/backend/data \
--name open-webui ghcr.io/open-webui/open-webui:main/models route; Kunavo has one, so verification succeeds either way./v1. If Open WebUI runs in Docker and you are pointing it at something on the same host, replace localhost with host.docker.internal — that part does not apply to a hosted endpoint, but it is the failure people hit right after this one.Step by step
- Create a key at
/app/keysand copy it — it is shown once. - In Open WebUI go to Settings → Admin → Connections and find Manage OpenAI API Connections.
- Click ➕ Add Connection and enter the URL and API Key.
- Add the ids you want to Model IDs (Filter), then save and let the connection verify.
- Start a new chat — the models appear in the picker prefixed by the connection.
Checked against Open WebUI's OpenAI-compatible provider guide on September 6, 2026. Third-party settings move; if a field name here no longer matches what you see, that page is the authority, not this one.
Verify before you debug the client
One request settles whether a failure is the endpoint, the key, or the configuration file. If this returns JSON, the same base URL and key work in Open WebUI.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Which model id to put in the field
Every text model is reachable as a model id — the live list is GET /v1/models, and the catalog with prices is on the models page. Rates are USD per 1M tokens, input / output.
| Model id | Kunavo in / out | Where it fits in Open WebUI |
|---|---|---|
claude-sonnet-5 | $2.00 / $10.00 | the general chat default |
claude-opus-5 | $2.00 / $10.00 | long analytical threads |
claude-haiku-4-5 | $0.40 / $2.00 | fast, cheap, and fine for most turns |
gemini-3-1-pro | $0.70 / $4.20 | long documents pasted into the chat window |
FAQ
How do I connect Open WebUI to an OpenAI-compatible API?
Go to Settings → Admin → Connections, open "Manage OpenAI API Connections" and click Add Connection, then enter the endpoint URL — the /v1 root — and the API key. The same thing can be done at container start with the OPENAI_API_BASE_URL and OPENAI_API_KEY environment variables. Both routes create the same connection.
What is Model IDs (Filter) for in Open WebUI?
It restricts which model ids from that connection appear in the picker, and it is also the fallback for endpoints that do not implement a /models route — there you add ids by hand and verification fails while chat still works. On a gateway with a large multimodal catalog it is worth setting regardless, so the chat picker only lists models a chat window can actually call.
Does the Open WebUI base URL include /v1?
Yes. Open WebUI appends only the route to the URL you give it, so the connection URL is the /v1 root — https://api.example.com/v1. The documentation's own example endpoints carry the suffix. Without it, the connection saves but every request 404s.
Can Open WebUI use Claude and Gemini models?
Yes, when they are served over an OpenAI-compatible endpoint. Open WebUI sends the model id straight through to the connection URL, so ids from any vendor resolve at the endpoint rather than in Open WebUI. That also means one connection and one key can put Claude, Gemini and GPT ids in the same model picker.