# Connect Roo Code through an OpenAI-compatible provider

> Markdown mirror of https://router.one/integrations/roo-code for AI assistants and crawlers. Router One is an OpenAI-compatible LLM API gateway.
> Last updated: 2026-09-05

Roo Code is a popular open-source AI coding agent for VS Code (it began as a Cline fork) that bills through whatever API provider you plug in. Pointing its OpenAI-compatible provider at Router One unlocks GPT, Claude, Gemini, and Grok family models behind one key — and since agents burn tokens fast, the per-request cost trace shows exactly where each session's spend went.

## Configure Roo Code to use the Router One base URL

In Roo Code's settings, set the API Provider to "OpenAI Compatible" and fill in base URL, key, and a model ID from the /models page:

`roo-code-settings`

```text
# Roo Code → Settings → API Provider: OpenAI Compatible
Base URL:  https://api.router.one/v1
API Key:   sk-your-router-one-key
Model ID:  <copy the exact ID from /models>
```

## Which model ID should Roo Code send?

Copy the exact model ID from /models, preserving case, hyphens, and version suffixes; do not substitute a display name. Open its detail page and match the supported API endpoints, context window, and capabilities such as tool calling to the provider and features selected in Roo Code. A catalog listing does not mean the client can use every feature of that model. Give each tool a dedicated API key with a maxSpend cap.

## Which API protocol is Roo Code using?

OpenAI-compatible describes an interface format; it does not make Chat Completions (/v1/chat/completions), Responses (/v1/responses), and Anthropic Messages (/v1/messages) interchangeable. Check the installed client version, provider configuration, and actual request path against the model detail page and API compatibility fact sheet. A successful plain-text chat does not establish support for hosted tools, conversation state, or file-editing features.

## Verify the Roo Code call in your request trace

Send a simple text request from Roo Code, then match its trace in Dashboard → Logs by time, model, and request_id: tokens, cost, latency, and status. Next, test streaming, tool calls, and multi-turn history separately. For failures, retain the actual request path, full error message, and request_id. If there is no matching log, check client configuration and connectivity before attributing the error to the gateway or upstream.

## FAQ

### Is the setup the same as Cline?

Nearly — Roo Code keeps Cline's provider model: settings (gear icon) → API Provider → "OpenAI Compatible", then Base URL, API Key, and Model ID. Different modes can use different models.

### Which models can Roo Code use through the gateway?

Choose a current catalog model that supports both the endpoint and the features Roo Code uses. Check /models and the model detail page for the exact ID, current rates, and capabilities; a family name such as GPT or Claude is not a compatibility guarantee. Seeing a model in the picker confirms discovery, so verify an actual request too.

### Models are listed, but requests fail with 400 or 404. What should I check?

Record the actual request path and error message, then check the exact model ID. A 400 can indicate invalid parameters, unsupported tools, or a model/endpoint mismatch; a 404 can indicate an incorrect path or missing resource, so it does not by itself establish that a model was retired. If the error says must be called via, use the named endpoint or select a model supported on the current endpoint. Do not add or remove /v1 or /chat/completions across all clients indiscriminately.

### 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/402/403/429?

Match the request and error message in Dashboard → Logs. For 401, check whether the key was sent and is valid; for 402, check wallet balance and maxSpend; for 403, check key permissions and access restrictions. For 429, distinguish request/token limits from upstream throttling using the error details. Keep the request_id and follow the error-codes reference.

## See also

- All integration guides: https://router.one/integrations
- Debug API errors in Roo Code: https://router.one/llm-api-error-codes
- API compatibility: endpoints and supported features: https://router.one/facts/api-compatibility.md
- Responses API setup and limits: https://router.one/codex-responses-api
- OpenCode setup: https://router.one/integrations/opencode
- Kilo Code setup: https://router.one/integrations/kilo-code
- What the gateway layer does: https://router.one/llm-api-gateway
- OpenAI-compatible API: https://router.one/openai-compatible-api
- API docs: https://router.one/docs
- Canonical page: https://router.one/integrations/roo-code
- Models and per-model token rates: https://router.one/models (markdown: https://router.one/models.md)
- Pricing: https://router.one/pricing
- API docs (markdown): https://router.one/docs.md
- Company facts: https://router.one/facts/company.md
