Router One

Keep the OpenAI SDK, reach every model

If your code already uses the official OpenAI SDK, the entire migration is two constructor arguments: base URL and key. Everything else — chat completions, streaming, tool calls — keeps working, and the same client object now reaches GPT, Claude, Gemini, and DeepSeek family models by model string, with a cost trace per request.

Configuration

Python and JS/TS both take the base URL in the client constructor:

openai-sdk-example.py
from openai import OpenAI

client = OpenAI(
    base_url="https://api.router.one/v1",
    api_key="sk-your-router-one-key",
)

resp = client.chat.completions.create(
    model="<model-id-from-/models>",
    messages=[{"role": "user", "content": "Hello!"}],
)
# JS/TS: new OpenAI({ baseURL, apiKey }) — same two arguments

Pick a model

Copy the exact model ID from the /models page — IDs are case-sensitive, and the page lists each model's context window, capabilities, and current per-token rates. Create a dedicated API key per tool with its own maxSpend cap, so one runaway tool can't affect other workloads.

Verify and observe

After your first request, open Dashboard → Logs to see its full trace: model, tokens, cost, latency, and status code. From here every OpenAI SDK call has a ledger and a trail instead of being a black box.

FAQ

Do I need to change any request code?
No — requests, streaming, and tool calls use the standard Chat Completions interface. Only the client constructor changes: base URL and API key. Model switching is just the model string.
Which models can OpenAI SDK use through the gateway?
Any chat-capable model in the catalog — GPT, Claude, Gemini, DeepSeek, and Mistral families. The /models page is the source of truth for model IDs and per-token rates.
Does this work from Mainland China?
Yes. The gateway is reachable from Mainland China without a VPN, and the configuration is identical to the global setup.
How do I debug a 401/403/429?
Open Dashboard → Logs first to see whether requests reached the gateway and with what status, then walk the error-codes reference to check env vars, key status, and limits.