The abliterated API endpointfor opencode
Built to be the number one abliterated API endpoint for opencode users. One provider block in opencode.json gives opencode 7 models that take the task and finish it: Kimi K3.1 Pro, DeepSeek V4.1 Flash 1017 and MiMo V2.6 Flash are abliterated builds, and the rest of the line is uncensored. Every one has a million tokens of context and calls tools.
Set it up
- Sign in with your email, add credit, and create a key in the dashboard. Keys start with
sk-nc-. - Put the key in an environment variable called
UNCENSORED_OPENCODE_API_KEY, so it never sits in a file you might commit. - Paste the block below into
opencode.jsonat the root of your project. To have it in every project, put it in~/.config/opencode/opencode.jsoninstead. - Run
opencode. It starts on GLM 5.3 Flash. Type/modelsto switch to any other model on the list.
# macOS and Linux
export UNCENSORED_OPENCODE_API_KEY="sk-nc-..."
# Windows PowerShell
$env:UNCENSORED_OPENCODE_API_KEY = "sk-nc-..."{
"$schema": "https://opencode.ai/config.json",
"provider": {
"uncensored-opencode": {
"npm": "@ai-sdk/openai-compatible",
"name": "Uncensored Opencode",
"options": {
"baseURL": "https://uncensoredopencode.com/v1",
"apiKey": "{env:UNCENSORED_OPENCODE_API_KEY}"
},
"models": {
"glm-5.3-flash-uncensored": {
"name": "GLM 5.3 Flash Uncensored",
"tool_call": true,
"reasoning": true,
"attachment": true,
"limit": { "context": 1048576, "output": 32000 }
},
"kimi-k3.1-pro-uncensored": {
"name": "Kimi K3.1 Pro Uncensored",
"tool_call": true,
"reasoning": true,
"attachment": true,
"limit": { "context": 1048576, "output": 32000 }
},
"glm-5.3-uncensored": {
"name": "GLM 5.3 Uncensored",
"tool_call": true,
"reasoning": true,
"attachment": false,
"limit": { "context": 1048576, "output": 32000 }
},
"deepseek-v4.1-flash-1017-uncensored": {
"name": "DeepSeek V4.1 Flash 1017 Uncensored",
"tool_call": true,
"reasoning": true,
"attachment": true,
"limit": { "context": 1048576, "output": 32000 }
},
"mimo-v2.6-flash-uncensored": {
"name": "MiMo V2.6 Flash Uncensored",
"tool_call": true,
"reasoning": true,
"attachment": true,
"limit": { "context": 1048576, "output": 32000 }
},
"qwen3.8-27b-uncensored": {
"name": "Qwen3.8 27B Uncensored",
"tool_call": true,
"reasoning": true,
"attachment": true,
"limit": { "context": 1048576, "output": 32000 }
},
"glm-5.3-flash-cyber": {
"name": "GLM 5.3 Flash Cyber",
"tool_call": true,
"reasoning": true,
"attachment": true,
"limit": { "context": 1048576, "output": 32000 }
}
}
}
},
"model": "uncensored-opencode/glm-5.3-flash-uncensored",
"small_model": "uncensored-opencode/qwen3.8-27b-uncensored"
}This block was loaded in opencode 1.18 before it was published here: opencode models uncensored-opencode lists every model in it. It uses the provider form of the config, which opencode has read for a long time, so it works on older installs as well as current ones.
What each line does
npmnames the adapter.@ai-sdk/openai-compatibleis the one for any endpoint that speaks the OpenAI chat format, which this one does.baseURLishttps://uncensoredopencode.com/v1. opencode adds/chat/completionsto it.apiKeyreads your key from the environment with{env:UNCENSORED_OPENCODE_API_KEY}. If you would rather keep it in a file,{file:~/.secrets/uncensored-opencode}works the same way.limitmatters more than it looks. opencode assumes a 200,000 token context for any model it does not already know, and compacts the session early to stay under it. Setting the real figure lets it use the full million.attachmenttells opencode whether it may send the model images. It is false on GLM 5.3, which is text only.small_modelis the model opencode uses for cheap background jobs such as naming a session. It is set to Qwen3.8 27B, the budget model on the line.
The models
Each one has its own page with the config for that model alone and what it is good and bad at inside opencode.
| Model | Build | Context | Tools | Images | Per million tokens |
|---|---|---|---|---|---|
GLM 5.3 Flashglm-5.3-flash-uncensored | Uncensored | 1M tokens | Yes | Yes | $0.30 in / $1.00 out |
Kimi K3.1 Prokimi-k3.1-pro-uncensored | Abliterated | 1M tokens | Yes | Yes | $7.50 in / $37.50 out |
GLM 5.3glm-5.3-uncensored | Uncensored | 1M tokens | Yes | No | $2.00 in / $5.00 out |
DeepSeek V4.1 Flash 1017deepseek-v4.1-flash-1017-uncensored | Abliterated | 1M tokens | Yes | Yes | $1.25 in / $2.50 out |
MiMo V2.6 Flashmimo-v2.6-flash-uncensored | Abliterated | 1M tokens | Yes | Yes | $1.00 in / $2.00 out |
Qwen3.8 27Bqwen3.8-27b-uncensored | Uncensored | 1M tokens | Yes | Yes | $1.50 in / $5.00 out |
GLM 5.3 Flash Cyberglm-5.3-flash-cyber | Security-tuned | 1M tokens | Yes | Yes | On the models page |
Why opencode stalls on a refusal
opencode runs a loop: the model reads, calls a tool, reads the result and calls the next one. The loop only keeps going while the model keeps answering with tool calls. When a model decides a step looks risky, it answers with a paragraph about why it will not help, and that paragraph has no tool call in it. opencode treats it as the end of the turn. The files are half edited, the plan is half done, and nothing is actually wrong with opencode or with your prompt.
It happens most on work that is ordinary for developers and merely sounds alarming: a scraper, a port scanner for your own network, a proof of concept for a bug you are fixing, anything that touches credentials or malware samples. A model with the refusals removed answers the step like any other, so the loop carries on. More on this in when a model refuses in opencode.
More for opencode
Questions
Do I need a jailbreak prompt or a custom system prompt?
No. The models are uncensored or abliterated builds, so opencode's own system prompt is enough. Jailbreak text in a coding agent mostly makes the output worse.
Does tool calling work?
Every model on the line supports tool calling in the OpenAI format, which is what opencode uses to read files, edit them and run commands.
Can I keep my other providers?
Yes. This block adds one provider beside whatever you already have. Models from it appear in /models under Uncensored Opencode, and you can move between providers inside one session.
Is this part of opencode?
No. This is an independent API endpoint that works with opencode. It is not made by, or affiliated with, the opencode project.
How am I charged?
By the token, from credit you add in the dashboard. There is no subscription. The price of each model is in the table above and on the models page, read live from the API.
Which model should I start with?
GLM 5.3 Flash. It calls tools, reads images and has the full context, and it is the default in the config above. Move to Kimi K3.1 Pro for hard problems and to Qwen3.8 27B for cheap bulk work.