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

SettingValue
Provider typeOpenAI Compatible (sometimes “Custom OpenAI” or “OpenAI API”)
Base URLhttps://api.lowrouter.ai/v1
API Keyyour 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

  1. Open Settings → Model Provider.
  2. Click Add custom provider.
  3. 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
  4. 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

  1. Open Settings → Model Providers and click Add Provider.
  2. Choose the OpenAI-compatible API format.
  3. Fill in:
    • Provider name: LowRouter
    • Base URL: https://api.lowrouter.ai/v1. The /v1 must be included, or every request 404s.
    • API key: your sk-lr-... token
  4. 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:

YAML
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:

  • titleModel names the model LibreChat uses to title conversations. It defaults to gpt-3.5-turbo, which is not a LowRouter model ID, so without it every new conversation’s title request fails.
  • fetch: true fills the model picker from GET /v1/models. The default list is what the picker shows if that fetch fails; with fetch: false it 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:

  1. 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.
  2. 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.

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 with curl from the curl page using the same key.
  • 404 / Not Found: the base URL must end in /v1 and the path must be /chat/completions. Some Chatbox versions default the API Path to /v1/chat/completions, which becomes https://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.