Roo Code with an uncensored model

Set the OpenAI Compatible provider to the API: Base URL, API Key, Model, then the Model Configuration fields filled from the live catalog. One profile per mode, the cost per agent turn and the errors.

Steps checked November 2, 2026 · prices as of November 9, 2026

Roo Code takes a custom endpoint through its OpenAI Compatible provider: a Base URL, an API Key, a Model id, and a Model Configuration block it cannot fill for a model it does not know. This page fills that block from the live catalog, one profile per mode, and an uncensored build answers in Code, Ask, Architect and Debug with tool calls for edits and commands. The same ids work in Cursor and OpenCode, and through a router in Claude Code.

Where the settings are

Open the Roo Code panel in VS Code and click the gear icon at the top of it; the Providers tab opens. Everything on this page lives there: the API Provider dropdown, the fields under it, and the Model Configuration section for the custom model. Roo Code has no config file for providers. The Export button at the bottom of the settings writes roo-code-settings.json with the key in plaintext, so treat that file like the key itself.

The settings sit in a profile. The profile selector is at the top of the Providers tab, the same list shows as the API Configuration dropdown in the chat, and each mode (Code, Ask, Architect, Debug, Orchestrator) remembers the profile you last used in it. Orchestrator subtasks inherit the parent task's profile, and a task resumed from history keeps the profile it started with even after you switch the global selection.

Steps

  1. Create a key in the console.
  2. In the Providers tab, click + next to the profile selector and name the profile, for example UncensoredLLM Code.
  3. Set the four fields. The Model field is preset to an OpenAI id; replace it.
Roo Code settings
1API Provider OpenAI Compatible
2Base URL https://api.uncensoredllm.ai/v1
3API Key sk-ullm-live-…
4Model glm-5.3-uncensored
  1. Once Base URL and API Key are in, Roo Code reads the model list from the API, so the ids appear in the Model picker; typing one works too. Any id on the models page goes in, exactly as the page spells it. The three Roo Code users call most here:
model ids
1glm-5.3-uncensored
2glm-5.3-flash-uncensored
3deepseek-v4.1-flash-abliterated
  1. Fill Model Configuration for the id you chose. Roo Code knows nothing about a custom model, so these fields set the context it keeps, the output cap it sends and the cost it shows. The values below are read from the live catalog at render; copy the row for your id.
ModelContext Window SizeMax Output TokensInput PriceOutput PriceImage Support
glm-5.3-uncensoredmodel pagemodel page0.2820.846model page
glm-5.3-flash-uncensoredmodel pagemodel page0.10530.3685model page
deepseek-v4.1-flash-abliteratedmodel pagemodel page0.84881.6975model page

Prices in USD per million tokens, the unit Roo Code's price fields take, from the catalog on 2026-11-09.

  1. Leave the checkboxes at their defaults: Enable streaming on, Include max output tokens on, Use Azure off, Enable R1 model parameters off, Prompt Caching off, Enable Reasoning Effort off. Custom Headers stays empty; the API needs none.
  2. Close the settings and send a message in Code mode. The API Configuration dropdown under the chat input shows the profile; the mode selector to its left switches modes, as do /code, /ask, /architect and /debug at the start of a message.

One profile per mode is the usual setup: a strong build in a profile for Code and Debug, a fast one in a second profile for Ask and Architect. Make the second profile with + again, the same Base URL and API Key, another id and its Model Configuration row. Roo Code keeps the last profile used in each mode, and the Prompts tab pins one to a mode outright. A task resumed from history keeps the profile it started with.

What each setting does

API Provider
OpenAI Compatible
the provider type that takes a base URL; the plain OpenAI entry has no URL field
Base URL
https://api.uncensoredllm.ai/v1
where every request goes; the /v1 at the end matters, Roo Code appends /chat/completions and /models
API Key
the whole sk-ullm- key
sent as the bearer token; stored in VS Code Secret Storage, never shown again in the UI
Model
glm-5.3-uncensored
the id in every request; picked from the list the API returns or typed, exactly as the models page spells it
Context Window Size
from the table above
total tokens the model takes; Roo Code trims and condenses the task against this number
Max Output Tokens
from the table above
the cap Roo Code sends with Include max output tokens on; -1 lets the server set it
Input Price / Output Price
from the table above
USD per million tokens; only the cost estimate in the chat reads them, the bill is the console
Image Support
on or off per the table
whether Roo Code attaches screenshots and pasted images to requests
Computer Use
off
the browser tool; the docs list it under Model Configuration, leave it off for a text build
Prompt Caching
off
reveals Cache Reads Price and Cache Writes Price for the estimate; the console counts cached tokens either way
Enable streaming
on
tokens arrive as the model writes them; off, Roo Code waits for the whole answer
Enable R1 model parameters
off
the R1 message format for reasoning models of that family; none of the ids here need it
Use Azure
off
Azure URL and api-version handling; not this API
Custom Headers
none
extra headers on each request; the key already travels in Authorization
Rate Limit
0
minimum seconds between requests for this profile; 0 disables it

Picking a model

Roo Code sends OpenAI-format requests, and every build on the models page answers in that format. The agent loop runs on native tool calling only, with no XML fallback, so the build has to take tool calls; the last column says which do, and the model page says for the rest. A turn late in a task carries the conversation, the files Roo Code read and every tool result so far, so input tokens are most of the bill and a build with a low input price costs the least per turn.

ModelOne agent turnTool calls
GLM-5.3 Uncensored$0.01model page
GLM-5.3 Flash Uncensored$0.0047model page
DeepSeek V4.1 Flash Abliterated$0.04model page
DeepSeek V4 Pro Uncensored$0.04model page
GLM-5.3 Abliterated$0.09model page
GLM-5.3 Flash Code Uncensored$0.25model page

40,000 input and 1,200 output tokens at the catalog prices on 2026-11-09. Tool calls as the catalog publishes them; where it does not, the model page says.

Uncensored models and their prices per million tokens
GLM-5.3 Uncensoredglm-5.3-uncensoredUncensored$0.282$0.846
GLM-5.3 Flash Uncensoredglm-5.3-flash-uncensoredUncensored$0.1053$0.3685
DeepSeek V4.1 Flash Abliterateddeepseek-v4.1-flash-abliteratedAbliterated$0.8488$1.6975
DeepSeek V4 Pro Uncensoreddeepseek-v4-pro-uncensoredUncensored$0.97$1.94
GLM-5.3 Abliteratedglm-5.3-abliteratedAbliterated$2.1825$4.365
GLM-5.3 Flash Code Uncensoredglm-5.3-flash-code-uncensoredUncensored$6.00$6.00

Prices per million tokens, read from the live catalog on 2026-11-09.

By mode: Code and Debug send the most tool calls and the longest contexts, so they get the strong build. Ask reads and explains, and Architect writes a plan before any edit; both run well on the fast build, and the per-turn figure above is what each mode's profile costs when the task is deep. Orchestrator subtasks inherit the parent task's profile, so start an Orchestrator task on the profile you want the whole tree to bill to.

Roo Code's own cost figure next to each request is an estimate from the Input Price and Output Price you typed; the console's usage page is the charge. For the code builds side by side, the uncensored coding AI guide costs a full coding day on each.

Check it

List the models your key can call. This is the same request Roo Code makes to fill the Model picker, so the id you chose should be in the answer:

shell
1curl https://api.uncensoredllm.ai/v1/models -H "Authorization: Bearer sk-ullm-live-…"

Then send one request the way Roo Code does. -i prints the headers: x-uplink-request-id names the request, and on a non-streamed answer x-uplink-charge is what it cost in USD.

shell
1curl -i https://api.uncensoredllm.ai/v1/chat/completions \
2 -H "Authorization: Bearer sk-ullm-live-…" \
3 -H "Content-Type: application/json" \
4 -d '{"model": "glm-5.3-uncensored", "messages": [{"role": "user", "content": "Reply with the single word ok."}]}'

In Roo Code, send a message in Code mode with the profile selected. The request shows on the console's usage page with its tokens and its charge; the token counts in Roo Code's chat history should match.

Errors and fixes

  • 401 invalid_api_key (Roo Code's "Invalid API Key"): the key is wrong or revoked, or the profile in use is not the one you set up. Check the API Configuration dropdown under the chat, then copy the key again from the console.
  • 404 model_not_found (Roo Code's "Model Not Found"): the Model field still holds the preset OpenAI id, or the id is misspelled. Pick it from the list or paste it from the models page.
  • 402 insufficient_balance: the balance does not cover the request. Top up in the console. 402 monthly_limit_reached means the key hit the monthly spend limit you set on it.
  • 403 scope_denied: the key is limited to certain models and this is not one of them.
  • 429 rate_limited: the key hit its rate limit. The response carries retry-after; the profile's Rate Limit setting spaces Roo Code's requests by that many seconds.
  • Connection errors with no status code: the Base URL is wrong. It is https://api.uncensoredllm.ai/v1 with the /v1, nothing after it, and Use Azure is off.
  • Tool-calling errors, or Roo Code answering in prose where it should edit a file: the build does not take tool calls. Switch to one the table marks yes, or whose model page lists them; Roo Code has no XML fallback.
  • 400 on every request: Max Output Tokens is above what the model allows, and Include max output tokens sends it as the cap. Set the value from the table, or -1 to let the server choose. Enable R1 model parameters turned on for a model that is not of that family gives the same result; turn it off.
  • The Model picker is empty: Roo Code could not read the model list, usually because the key or URL was not saved yet. Reopen the settings after saving; the Refresh Models hint says the same.
  • Context trimmed too early or too late: Context Window Size is wrong for the model. Roo Code condenses the task at a share of this number, so copy it from the table.

Questions

Every model on the models page: all of them answer /v1/chat/completions in the OpenAI format with the same key, so any id there goes into the Model field as the page spells it. The ones marked yes under Tool calls also run the agent loop. See the models page.

The API takes the same request shape as OpenAI’s chat completions endpoint: the same paths, the same bearer key header, the same messages and tools fields, the same streamed chunks. Roo Code’s OpenAI Compatible provider sends that shape to whatever Base URL you give it, which is why one URL and one key are the whole setup.

In VS Code’s Secret Storage, per profile; the settings UI never shows it again. The Export button writes it in plaintext into roo-code-settings.json, so keep that file out of the repository, and Reset clears it with everything else.

No. Use Azure changes the URL and version handling for Azure endpoints, and Enable R1 model parameters switches to the message format of that reasoning family; neither applies here. The only boxes that matter are the defaults: streaming on, max output tokens included.

Every model above is on the uncensored model list with its live price per million tokens. Per-token pricing sets the whole catalog side by side, and the family directory groups the builds by base model.

Get a keyPrepaid from $10, no subscription.

New models and price changes, once a month.

New uncensored builds with their prices, price moves, and what the daily model check found.

Join on Telegram