Quickstart
From zero to a working API call in about five minutes.
UnoRouter puts 200+ models from OpenAI, Anthropic, Google, DeepSeek, Qwen and 50+ other providers behind one OpenAI-compatible endpoint. Integrate once, then swap models by changing a single string. Many models are completely free, no credit card required.
You can also skip the API entirely: the built-in chat runs free models without signup, and your conversations stay in your browser.
Point any OpenAI-compatible client at these two values:
| Variable | Value |
|---|---|
BASE_URL | https://api.unorouter.com/v1 |
API_KEY | The key you create on the Tokens page |
Tools that speak a native wire protocol use the bare domain instead: Claude Code sets ANTHROPIC_BASE_URL and Gemini CLI sets GOOGLE_GEMINI_BASE_URL without the /v1 suffix. Each integration guide shows the exact value.
Sign up, then open the Tokens page and create a key. The key is shown once, store it safely.

Expiry dates, spending limits, model allowlists, IP restrictions and provider group pinning are covered in Account & Billing
Without a key you can still use the built-in chat as a guest on free models. API requests always need a key.
Replace YOUR_API_KEY with the key you just created (if you are logged in, it is already filled in below):
curl https://api.unorouter.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-oss-120b:free",
"messages": [{ "role": "user", "content": "Hello!" }]
}'Models with the :free suffix cost nothing. Pick any other model from the catalog to use your balance.
Any OpenAI SDK works unchanged, just set the base URL and your key:
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.unorouter.com/v1",
api_key="YOUR_API_KEY",
)
completion = client.chat.completions.create(
model="gpt-oss-120b:free",
messages=[{"role": "user", "content": "Hello!"}],
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.unorouter.com/v1",
apiKey: "YOUR_API_KEY",
});
const completion = await client.chat.completions.create({
model: "gpt-oss-120b:free",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(completion.choices[0].message.content);The Integrations tab has copy-paste setup for 30+ apps: SillyTavern, JanitorAI, Claude Code, Cline and more. The Chat tab documents the built-in roleplay chat.
For how pricing, discounts and availability work, read Models & Pricing
Before you ship, skim the status codes and rate limits in Errors & Rate Limits