Add an openai-compatible provider to your opencode config.
This guide connects OpenCode CLI to the platform so you can reach Claude, GPT, Gemini and others with a single token. Three values are all you need: endpoint, token, model name.
Create a token (starting with sk-) in the console first and make sure the account has credit. New here? Start with your first request in 5 minutes.
Edit your opencode config (usually ~/.config/opencode/opencode.json), add a provider and list the models you want.
| Field | Value |
|---|---|
| baseURL | https://api.router.ai/v1 |
| apiKey | your sk- token |
| Model key | claude-sonnet-5 |
{
"provider": {
"router": {
"npm": "@ai-sdk/openai-compatible",
"name": "Router AI",
"options": {
"baseURL": "https://api.router.ai/v1",
"apiKey": "sk-your-token"
},
"models": {
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"gpt-5.5": { "name": "GPT-5.5" }
}
}
}
}
Before running anything complex, just say hello and check you get a reply. To test the token on its own, call the API directly:
curl https://api.router.ai/v1/chat/completions \
-H "Authorization: Bearer sk-your-token" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"hello"}]}'
A JSON response containing choices means you are connected. The call shows up in your billing records shortly after.
Keys under models must be the platform's exact model names — they are sent to the API verbatim; name is only a display label. To keep the key off disk, reference an environment variable instead.
Wrong token, a stray space, or a copy that dropped the leading sk-. Copy it again in full.
Almost always the URL suffix. The OpenAI-compatible format needs a trailing /v1; the native Anthropic and Gemini formats must not have it. Check the table above.
The account is out of credit. See top-up methods.
Model names must match the catalog exactly, including case and hyphens. Copy the exact name from the models page.