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, and the self-hosted web app LibreChat. Coding tools have their own pages (OpenCode, Cline, Goose); libraries are on Frameworks, and other non-chat tools 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, and you do not need
to type model IDs. That includes an auto/<creator>/<model> entry for every
routable model, which lets LowRouter pick the provider and region for
you.
The picker can be long. To trim it to a short, relevant selection, see catalog curation.
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, such as
auto/mistralai/mistral-large-2512, openai/openai/gpt-4.1,
anthropic/anthropic/claude-sonnet-4.5, etc.
Chatbox reads model capabilities from the OpenRouter-style
architecture and supported_parameters fields LowRouter publishes
on every model row, aliases included. After re-fetching the model
list, a vision-capable model accepts images with no manual toggle.
Agent Mode (Work Mode) is the exception: current Chatbox releases
never derive tool use from any listing field, so if Agent Mode
is greyed out, enable Tool use on the model in the provider’s
model settings — the alias id works there too.
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:
- There is no free-form model input. The chat picker only offers what is in the provider’s Models list, and 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.
Worked example: LibreChat
LibreChat is configured by its administrator in librechat.yaml
(schema version 1.3.13, LibreChat 0.8.7). Add LowRouter as a custom
endpoint:
version: 1.3.13
endpoints:
custom:
- name: "LowRouter"
apiKey: "${LOWROUTER_API_KEY}"
baseURL: "https://api.lowrouter.ai/v1"
models:
default: ["auto/mistralai/mistral-large-2512"]
fetch: true
titleConvo: true
titleModel: "auto/mistralai/mistral-large-2512"
modelDisplayLabel: "LowRouter"Put the key in LibreChat’s .env as LOWROUTER_API_KEY=sk-lr-...,
or set apiKey: "user_provided" to have each user enter their own
key in the UI. Restart LibreChat after editing either file.
Two settings to check:
titleModelnames the model LibreChat uses to title conversations. It defaults togpt-3.5-turbo, which is not a LowRouter model ID, so without it every new conversation’s title request fails.fetch: truefills the model picker fromGET /v1/models. Thedefaultlist is what the picker shows if that fetch fails; withfetch: falseit is the whole list.
Picking a model
The picker mirrors GET /v1/models and holds three kinds of ID:
<provider>/<creator>/<model>, an explicit ID, 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, and the router picks the provider and region, preferring EU-sovereign routes. This is 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 while 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 the Aliases page or the Alias button on
any provider/region row in the model browser. For example,
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. If you change your mind
later, repoint the alias in the dashboard and the next message
follows it, with no change in the client. If alias/eu-chat is not
in the client’s fetched list, you do not have to wait for it: 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.
- Turn streaming 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.
