RouterOne

Quickstart

Last updated September 15, 2026

Create an API key, point base_url at RouterOne, and make your first request.

Making a first request usually takes two changes: the address and the key.

Four steps

  1. Sign in and decide which account is billed
  2. Add credit to that account
  3. Create an API key
  4. Make your first request

1. Sign in and confirm the account

Signing up creates a personal workspace that is ready to use. For team use, create an organization instead: balance, members, and permissions are managed at that level and stay fully separate from the personal workspace.

Balance belongs to an account — one for the personal account, one for each organization. They are independent and cannot be transferred between each other, so decide who is billed before adding credit. See accounts, organizations, and workspaces.

2. Add credit

Add credit on the console's billing page. Billing is prepaid credit drawn down by actual usage: inference settles at the provider's price with no platform markup.

Top-ups carry no processing fee — the credit you receive equals the amount you pay. See top-ups and auto top-up.

Subscription billing has not shipped.

3. Create a key

Create a key on the console's API keys page. A key can be viewed in full again on that page later; there is no need to regenerate it.

Keys are bound to a workspace, and charges are recorded against that workspace's account. Create separate keys per project or per purpose: usage, cost, and logs are all reported per key, and requests made with the same key cannot be separated afterwards.

Keys also carry spend limits, model allowlists, and their own routing configuration. See API keys.

4. Make your first request

RouterOne implements the OpenAI protocol natively, so the official SDK works directly:

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.routerone.ai/v1",
    api_key="your RouterOne key",
)

response = client.chat.completions.create(
    model="anthropic/claude-opus-5",
    messages=[{"role": "user", "content": "Explain what an API gateway is in one sentence"}],
)

print(response.choices[0].message.content)
curl https://gateway.routerone.ai/v1/chat/completions \
  -H "Authorization: Bearer $ROUTERONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-opus-5",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Use the canonical ID shown on the model detail page for model, in the form vendor/model. Bare names carried over from other environments (such as claude-haiku-4-5-20251001) usually work as well, since the platform maintains aliases for common models.

Supported protocols

All four text protocols are native implementations, not translations. Choose the address by the protocol your client speaks, not by the model you are targeting:

ProtocolEndpointAuth header
OpenAI Chat Completionshttps://gateway.routerone.ai/v1/chat/completionsAuthorization: Bearer
OpenAI Responseshttps://gateway.routerone.ai/v1/responsesAuthorization: Bearer
Anthropic Messageshttps://gateway.routerone.ai/v1/messagesx-api-key
Google Geminihttps://gateway.routerone.ai/v1beta/models/{model}:generateContentx-goog-api-key

This table covers the four text protocol entry points. For image, video, and asynchronous task endpoints, see the endpoint table in the API reference — that table is generated from code and is the authoritative source for endpoint addresses.

Protocol and model are independent dimensions. You can call Claude with the OpenAI SDK, or Gemini with the Anthropic SDK. Not every model supports every protocol, though; the model detail page lists the protocols actually available for it. For parameter differences across protocols, see protocol conversion compatibility.

Image, video, and other asynchronous generation tasks use their own endpoints. See the API reference for the full list.

Choosing a provider

The same model is usually offered by several providers, and price, context length, and supported protocols may differ. By default the platform routes among the available providers and switches to the next one on failure.

To pin a provider, append :<provider> to the model ID:

{ "model": "anthropic/claude-opus-5:anthropic" }

Once pinned, the request fails outright if that provider is unavailable; it will not switch to another.

To set the sorting strategy for a single request, append :@<strategy>:

{ "model": "anthropic/claude-opus-5:@price" }

The available strategies are @balanced (default), @price, @latency, @throughput, and @reliability.

⚠️ The colon is part of the suffix syntax; @ cannot be attached to the model name on its own. The two suffixes cannot be combined — once a provider is pinned there is only one candidate, so sorting is meaningless.

⚠️ Strategy suffixes are locked by the key by default. To let callers set a strategy per request, enable "allow request override" in the key's settings.

For sorting strategies, supply tiers, pinned providers, and how the three configuration layers combine, see routing and failover.

Check the charges

After a call completes, the console's usage and cost pages show spend, the provider that served it, and the distribution across token types. The logs page shows the full record and itemized charges for a single call.

Attempts that fail during routing retries are not billed. If the client disconnects midway, usage already produced is still billed — that content has already been generated upstream. For the full rules, see billing overview.

Next