> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sentivue.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenRouter

> Connect OpenRouter to SentiVue Talk

OpenRouter is a single API in front of many model vendors, so one key reaches models from all of them. In SentiVue Talk it drives the **language model**.

## What you need

| Field   | Required |
| ------- | -------- |
| API key | Yes      |

One key covers both services.

## Getting your API key

1. Sign in at [openrouter.ai/keys](https://openrouter.ai/keys).
2. Create a new key.
3. Copy it immediately — the key is shown once, and afterwards only a truncated hint.

Keys begin with `sk-or-v1-`.

<Warning>
  A key can carry a **spending limit**, optionally resetting on a schedule. When the limit or the account balance runs out, OpenRouter returns `402 Payment Required` and every request fails — including requests to free models. A limit set once and forgotten is a common cause of an agent that worked all month and stops mid-month.
</Warning>

## Adding the connection

1. Go to **Connections** and choose **OpenRouter**.
2. Paste the API key.
3. Save.

SentiVue Talk validates the key with OpenRouter as you save, so a bad or expired key is caught immediately rather than on a live call.

## What you can select afterwards

Choose your models on [Model Configurations](/talk/configurations/inference-providers).

**Language model** — OpenRouter identifies models as `vendor/model`, for example `openai/gpt-5-mini`. The vendor prefix is part of the name and the request fails without it. Browse the identifiers on OpenRouter's [models page](https://openrouter.ai/models).

## Custom hosts

The base URL defaults to `https://openrouter.ai/api/v1`. Set it if you reach OpenRouter through a proxy or gateway.

## How routing affects your calls

OpenRouter picks a provider for the model you named and load-balances across the providers serving it. If one returns a 5xx or rate-limits you, it fails over to another automatically. That is what keeps a call alive when a single vendor degrades, but it also means two calls on the same model can be served by different backends and respond at different speeds. Test on real calls rather than a single request.

## Completing the pipeline

OpenRouter has no voice and no transcription. You also need:

* A [voice provider](/talk/configurations/voice) to speak the responses
* A [transcriber](/talk/configurations/transcriber) to turn caller speech into text

Each is a separate [connection](/talk/configurations/connections).

## Troubleshooting

<AccordionGroup>
  <Accordion title="The key is rejected when I save">
    Confirm you copied the whole key including the `sk-or-v1-` prefix, and that it has not been deleted or rotated in the OpenRouter dashboard.
  </Accordion>

  <Accordion title="Calls worked, then started failing with a payment error">
    A `402` means the key's spending limit is used up or the account balance has gone negative. Check the key's remaining limit and its reset schedule in the OpenRouter dashboard, and top up or raise the cap. Free models fail on a negative balance too, so switching model will not work around it.
  </Accordion>

  <Accordion title="A model I entered is not found">
    Check the identifier is the full `vendor/model` slug and not the vendor's own short name. Also confirm your account can reach it — some models require credit or a prior purchase before they become available. Validate against OpenRouter's [models page](https://openrouter.ai/models).
  </Accordion>

  <Accordion title="The agent feels slow to reply">
    Move to a smaller model. If the model is already small, the delay is likely the provider OpenRouter routed to — response times vary between the backends serving the same model. Watch it across several calls rather than judging on one, and compare against a direct [OpenAI](/talk/configurations/providers/openai) or [Anthropic](/talk/configurations/providers/anthropic) connection, which skips the routing hop.
  </Accordion>
</AccordionGroup>
