Chat apps
Any chat client that lets you set a base URL and an API key can use LowRouter as a custom OpenAI-compatible provider. This page gives the pattern once, then walks through two popular desktop clients — Chatbox and Jan — end to end. Coding tools have their own pages (OpenCode, Cline, Goose); libraries, SDKs, and other non-chat tools are on generic OpenAI-compatible clients.
The pattern
| Setting | Value |
|---|---|
| Provider type | OpenAI Compatible (sometimes “Custom OpenAI” or “OpenAI API”) |
| Base URL | https://api.lowrouter.ai/v1 |
| API Key | your sk-lr-... token |
| Path / endpoint | /chat/completions (most clients handle this automatically) |
Chat clients build their model picker from GET /v1/models on the
base URL. LowRouter’s listing draws on the same catalogue as the
model browser, so once the provider is saved the picker
fills itself with everything currently routable — no model IDs to
type.
Worked example: Chatbox
- Open Settings → Model Provider.
- Click Add custom provider.
- Fill in:
- Name:
LowRouter - API Mode:
OpenAI API Compatible - API Host:
https://api.lowrouter.ai/v1 - API Path:
/chat/completions - API Key: your
sk-lr-...token
- Name:
- Save.
Under Model, pick from the fetched list, or choose Custom model
name and enter any LowRouter model ID —
auto/mistralai/mistral-large-2512, openai/openai/gpt-4.1,
anthropic/anthropic/claude-sonnet-4.5, etc.
Worked example: Jan
- Open Settings → Model Providers and click Add Provider.
- Choose the OpenAI-compatible API format.
- Fill in:
- Provider name:
LowRouter - Base URL:
https://api.lowrouter.ai/v1— the/v1must be included, or every request 404s. - API key: your
sk-lr-...token
- Provider name:
- Save. Jan fetches the model list from the base URL and populates the provider’s Models section.
Two Jan quirks:
- No free-form model input. The chat picker only offers what is in the provider’s Models list — there is nowhere to type an arbitrary ID mid-chat. If an ID you want is missing from the fetched list, add it with the + button in the provider’s Models section, entering the ID exactly as LowRouter expects it.
- Capabilities are not auto-detected for custom providers. If you use vision or tools, enable those per model in the provider’s Models section.
Picking a model
The picker mirrors GET /v1/models and holds three kinds of ID:
- Explicit IDs —
<provider>/<creator>/<model>, e.g.anthropic/anthropic/claude-sonnet-4.5. You choose who serves the request; the region is picked for you. See available models. auto/<creator>/<model>— you name the model, the router picks the provider and region, preferring EU-sovereign routes. The right default for chat. See routing.alias/<name>— your account’s aliases, listed for the account behind the API key. An alias is a named pointer to one exact (provider, model, region) route that you can repoint from the dashboard at any time — the client keeps its configuration.
Targeting a region from a chat app
Picker entries are not region-pinned, and chat apps have no field
for a fourth /<locode> segment. To pin a region:
- In the dashboard, create an alias pointing at a region-pinned
route — from Dashboard → Aliases, or the Alias button on
any provider/region row in the model browser. Say
eu-chat→scaleway/mistralai/mistral-medium-3.5-128b/fr-par. - In the chat app’s picker, select
alias/eu-chat.
Every message now routes through that region. Change your mind
later — repoint the alias in the dashboard and the very next message
follows, with zero client reconfiguration. If alias/eu-chat is not
in the client’s fetched list, don’t wait for it to appear: add it in
Jan with the + button in the provider’s Models section, or enter
it in Chatbox as a custom model name. Aliases resolve at request
time whether or not the listing showed them.
Recommended setup
These apply to any chat app, not just the two above:
- Use a key dedicated to the app. A chat app’s key sits in a desktop config file, so treat it as leakable: give it its own name so its usage stays attributable, and revoke it on any doubt without touching the keys your other tools use. See API keys.
- Stream replies on. The desktop UX expects streaming and LowRouter supports it the same way OpenAI does.
- Check the client’s telemetry settings if you care about not exposing prompt content to the publisher’s analytics. The clients themselves do not see prompts in normal operation, but features like crash reporting can capture context.
Troubleshooting
- 401 / Unauthorized: confirm the API key starts with
sk-lr-and has not been revoked. Test withcurlfrom the curl page using the same key. - 404 / Not Found: the base URL must end in
/v1and the path must be/chat/completions. Some Chatbox versions default the API Path to/v1/chat/completions, which becomeshttps://api.lowrouter.ai/v1/v1/chat/completions— drop the leading/v1/. - Model not available: look up the exact model ID on the model browser. Auto-complete in these clients is not always accurate, and a stale fetched list is refreshed by re-saving the provider.
