Roo Code with uttapen (discontinued extension)
Roo Code was discontinued in May 2026. If you still run version 3.54, here is the OpenAI Compatible setup that keeps it working with uttapen.
Updated: 22 Sep 2026
The Roo Code team shut the extension down on 15 May 2026 and archived the repository; 3.54.0 is the last release. If it is still installed, it works with uttapen, but it receives no fixes or updates. For new work install Cline or Kilo Code instead.
Setup in 3.54
- Roo Code panel → gear (Settings).
- Set API Provider to OpenAI Compatible — not OpenAI, which uses the Responses API that uttapen doesn't serve.
- Fill in:
| Field | Value |
|---|---|
| Base URL | https://api.uttapen.ir/v1 |
| API Key | your sk-up-… key from Dashboard → API keys |
| Model | pick from the list it fetches from GET /v1/models, or choose "Use custom" and type the exact id |
The output-token setting matters most
Roo Code sends the output ceiling as max_completion_tokens, and there are three cases:
- Include max output tokens unchecked: no ceiling is sent. uttapen holds a default estimate, and if the model writes more, the real charge is still deducted in full and the balance can dip negative (pricing).
- Checked, but Max Output Tokens left at its
-1default: uttapen no longer rejects this. It treats a zero or negative value as "no ceiling given" and holds on its own default estimate, same as the case above — so you get the same negative-balance risk, not a400. - Checked with a positive number (we suggest
8192): that value is sent, the hold stays predictable, and you avoid both risks above. Use this one.
Set Context Window Size to the model's real context as well; it defaults to 128,000 and every model's number is on the model list.
Choosing a model
Roo Code only works with models that support tool calling — it has no XML fallback. Good coding choices: anthropic/claude-sonnet-5, openai/gpt-5, qwen/qwen3-coder, deepseek/deepseek-v3.2.
There is no separate model for titles or summaries; the active profile does everything. If you keep several profiles, give each its own key with a monthly cap so their spend is separated in Dashboard → Usage.
The Export button in Settings writes roo-code-settings.json with your API key in plain text. Keep that file out of git and off shared storage.
Troubleshooting
| Error | Cause in Roo Code | Fix |
|---|---|---|
401 invalid_api_key | Wrong or revoked key | Create a new key |
404 model_not_found | A wrong hand-typed id | Pick from the list, or copy from /en/models (the 404 also lists the closest ids it guessed, in uttapen.suggestions) |
404 not_found | Provider still on OpenAI, hitting /v1/responses | Choose OpenAI Compatible |
402 insufficient_balance | Balance below the required hold | Top up, or lower the output ceiling |
429 | The key's rate or monthly limit (rate limits) | Wait, or raise the limit |
When the balance can't cover the whole output ceiling, uttapen lowers it to what the balance allows rather than refusing (floor: 1,024 tokens) and returns the granted value in the X-Uttapen-Max-Tokens header; the reply may then stop with finish_reason: "length". 402 is reserved for the case where even that floor doesn't fit.
The full tool list is in integrations, and error codes are in errors.
Sign up with a phone number, top up your wallet from 100,000 toman and create a key. Free models work without a top-up — up to 50 requests a day. Create an API key →