Open WebUI

Connect a self-hosted ChatGPT-like UI to all 90+ platform models through an OpenAI API connection

Open WebUI is an open-source ChatGPT-like interface with self-hosting, multi-model support and a user system. Connect it over an OpenAI-compatible API connection and every model in our catalog (90+, growing) is immediately available.

Install (Docker)#

docker run -d \
  -p 3000:8080 \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

Open http://localhost:3000 and create the admin account on first run.

Setup#

  1. Settings → ⚙️ Connections
  2. In the OpenAI API section:
    • API Base URL: https://dianqi.zsopc.com/v1
    • API Key: your sk-gpushare-* key (sk-gpushare- plus 64 hex characters; create it on the console keys page, where the detail page can re-reveal it any time)
  3. Click Verify Connection
  4. Save

Note: Verify Connection calls GET /v1/models, and that endpoint doesn't check your balance — so verification succeeds even at zero balance, while every conversation then returns 402. See Troubleshooting below.

Choosing models#

Once the connection is saved, catalog models appear automatically in the model picker (pulled from GET /v1/models, so the list tracks the catalog — nothing to type by hand).

Turn off the non-chat SKUs first: /v1/models returns the whole catalog, and the image (doubao-seedream-*, grok-imagine-image*), video (doubao-seedance-*, grok-imagine-video*) and 3D SKUs use separate endpoints. Calling them from a chat UI only errors (400 invalid_request or 503 no_channel_available).

How:

  1. Settings → ⚙️ Models
  2. Toggle off the non-chat SKUs and anything you don't want exposed to users

Teams and multiple users#

Open WebUI has its own user system, and all of those users share the single platform key you configured — while on our side every key shares one account balance (one wallet, no per-key budget pool). We suggest:

  1. Create a dedicated key for Open WebUI — the value is usage attribution (per-key view on the usage page) and the allowed_models allowlist (restricting which models this key may call), not budget isolation
  2. When you need hard budget isolation, register a separate account for the team (balance is per account; top up at dflop.top/dashboard/billing, same SSO account as dianqi.zsopc.com)
  3. Use Open WebUI's own user permissions to control which models each user sees

RAG / embeddings#

The platform retired its embedding SKUs in July 2026, so POST /v1/embeddings currently has no available model. Use a local option for Open WebUI's RAG (knowledge base):

Settings → ⚙️ DocumentsEmbedding Model Engine:

  • the default SentenceTransformers (built in, offline), or Ollama + nomic-embed-text (local, free)

Streaming#

Open WebUI streams by default and is fully compatible with our protocol. See Streaming.

Tool calling#

Open WebUI's Functions system supports OpenAI function tools, and almost every chat model here supports them (go by the supports_tools flag on the model plaza / in Models; image, video and embedding SKUs don't). See Tool calling.

Open WebUI's own web search is a separate feature and does not use this gateway's web_search tool. The two can run side by side:

  • Open WebUI web search → uses whatever SearXNG / Google CSE / Brave API you configured
  • Models with a built-in web_search (GPT-5.x, some Claude models, the Gemini line — see the model plaza) → use the gateway's built-in tool. Note that tool is only available on streaming requests (Open WebUI streams by default, so this rarely matters)

Troubleshooting#

SymptomWhat to check
Empty model listAPI Base URL spelling — /v1 is required
401 invalid_api_keyWhether the key was copied in full (sk-gpushare- plus 64 hex characters, 76 total); re-reveal it on the key detail page
Verify Connection passes but chat returns 402 insufficient_quotaBalance exhausted (verification doesn't check balance). All keys share one balance so a new key won't help — top up at dflop.top/dashboard/billing
Certain models 400 / 503 the moment you click themNon-chat SKUs (image, video, embedding) can't be used from a chat UI — toggle them off, see Choosing models above
Streaming doesn't workWhether your reverse proxy buffers (Nginx needs proxy_buffering off)
Want to see what this key spentPer-key view on the usage page

Other clients#