---
title: "n8n OpenAI-compatible API: run an uncensored model"
canonical: https://uncensoredllm.ai/guides/n8n
generated: 2026-10-27T08:19:14.928Z
source: https://uncensoredllm.ai/guides/n8n
base_url: https://api.uncensoredllm.ai/v1
---

# n8n with an uncensored model over the OpenAI-compatible API

n8n OpenAI-compatible API setup for an uncensored model: an OpenAI credential with a custom Base URL, the OpenAI Chat Model under an AI Agent, the id typed in.

Steps checked October 25, 2026 · prices as of October 27, 2026

n8n talks to any OpenAI-compatible API through its OpenAI credential. This guide points that credential at an uncensored model: the Base URL, the OpenAI Chat Model sub-node under an AI Agent, the model id typed in, and the errors people hit on the way. The field names come from n8n's source, read on 25 October 2026.

If builds with the refusals edited out are new to you, start with [abliterated vs uncensored](https://uncensoredllm.ai/blog/abliterated-vs-uncensored), then come back here to wire one in.

## Which way round this n8n guide goes

"n8n OpenAI-compatible API" means two opposite things, and the search results mix them. One is calling an outside model from inside a workflow. The other is exposing a workflow as an OpenAI-style endpoint for other apps. This guide covers the first only: an uncensored build as the model behind n8n's AI nodes.

Labels come from the n8n source on GitHub, read on 25 October 2026, when the latest release was n8n@2.44.6. The docs pages for these nodes do not list the Base URL field yet; the source does.

## The OpenAI credential with a custom Base URL

n8n's [OpenAI credential](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/credentials/OpenAiApi.credentials.ts) has four fields. Fill them like this:

- API Key: sk-ullm-live-… Created in the console, shown once
- Organization ID (optional): (empty) Not used by this API
- Base URL: https://api.uncensoredllm.ai/v1 Replaces the default https://api.openai.com/v1
- Add Custom Header: off Not needed

When you save, n8n tests the credential with a GET to `/models` under the Base URL. That call is free on this API, and it is the same one the curl further down makes. Since node version 1.1 the OpenAI Chat Model takes its Base URL from this credential, not from a node option.

## Connect n8n to the OpenAI-compatible API

1. Create a key in the [console](https://app.uncensoredllm.ai/console). It starts with `sk-ullm-`. The balance is prepaid from $10.
2. Add a trigger, for example a chat trigger to test with, then an **AI Agent** node after it.
3. On the agent's **Chat Model** connector, add the **OpenAI Chat Model** sub-node.
4. In its credential field, create a new OpenAI credential with the values above and save it. The test should pass.
5. Under **Model**, switch the mode from **From List** to **ID** and paste an id, for example `glm-5.3-flash-uncensored`.
6. Turn **Use Responses API** off.
7. Optional: under **Options**, set **Maximum Number of Tokens** and **Sampling Temperature**.
8. Back on the agent, put your instructions in the **System Message** option and run the workflow.

The two steps people miss are the ID mode and the Responses switch. The next two sections say why each matters.

## Type the model id instead of picking it

With the default OpenAI URL, n8n trims the From List dropdown to OpenAI's chat models. With any other Base URL, the [node's model search](https://github.com/n8n-io/n8n/blob/master/packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/methods/loadModels.ts) lists every id `/models` returns. On this API that is every id the key can reach, the 129 uncensored builds among them. The list is searchable, but the ID mode is quicker and leaves nothing to misclick.

Setting the model by ID is also the fix a [community thread](https://community.n8n.io/t/how-to-connect-an-openai-compatible-model-to-ai-agent/162897) on this exact setup landed on. To shorten the list instead, open the key's settings in the console and fill **Models** with the ids you use. `/models` then returns only those, and the key cannot call anything else.

## Turn off Use Responses API

In node version 1.3 of the [OpenAI Chat Model](https://github.com/n8n-io/n8n/blob/master/packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.ts), **Use Responses API** is on by default. With it on, n8n sends OpenAI's Responses format instead of Chat Completions.

Turn it off. The daily model check calls every build on this API at `/v1/chat/completions`, so Chat Completions is the path known to answer. The Built-in Tools that sit under that switch (web search, file search, code interpreter) run on OpenAI's side and are not part of this setup either.

## The AI Agent, tools and the Basic LLM Chain

In the current AI Agent (node version 3.1 in the source), the Chat Model connector is the only required one. Memory and Tool are optional, so an agent with no tools runs as a plain chat step. The [AI Agent docs page](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) still says to connect at least one tool. If your n8n version enforces that, the Basic LLM Chain takes the same OpenAI Chat Model sub-node with no tools at all.

Tools work only if the build handles tool calls well. The node itself shows a notice when the Base URL is overridden: not every non-OpenAI model supports tool calling or JSON response format. Test a tool on the build you chose before a workflow depends on it.

One error you will not see here is "Tools Agent requires Chat Model which supports Tools calling". In the source it fires only when the connected sub-node has no tool binding at all, and the OpenAI Chat Model always has one.

## Which uncensored build to run in n8n

Workflows run unattended and often, so price per run matters more than in a chat window. Three builds, with the figures the catalog gave when this page rendered and today's verdict from [the daily real-model check](https://uncensoredllm.ai/proof), which sends a fixed prompt to every model each day:

| Model | Build | Input $/M | Output $/M | Context | Wire formats |
| --- | --- | --- | --- | --- | --- |
| [GLM-5.3 Flash Uncensored](https://uncensoredllm.ai/models/glm-5.3-flash-uncensored) glm-5.3-flash-uncensored | Uncensored | $0.1086 | $0.3802 |  | openai |
| [GLM-5.3 Uncensored](https://uncensoredllm.ai/models/glm-5.3-uncensored) glm-5.3-uncensored | Uncensored | $0.282 | $0.846 |  | openai |
| [DeepSeek V4.1 Flash Abliterated](https://uncensoredllm.ai/models/deepseek-v4.1-flash-abliterated) deepseek-v4.1-flash-abliterated | Abliterated | $0.8488 | $1.6975 |  | openai |

Prices per million tokens, read from the live catalog on 2026-10-27.

| Model id | Daily check | Context window |
| --- | --- | --- |
| [`glm-5.3-flash-uncensored`](https://uncensoredllm.ai/models/glm-5.3-flash-uncensored) | Steady since Oct 12 | not published |
| [`glm-5.3-uncensored`](https://uncensoredllm.ai/models/glm-5.3-uncensored) | Steady since Oct 12 | not published |
| [`deepseek-v4.1-flash-abliterated`](https://uncensoredllm.ai/models/deepseek-v4.1-flash-abliterated) | Steady since Oct 19 | not published |

Windows from the live catalog on 2026-10-27; verdicts from /proof at render.

Start high-volume steps on the flash build, and move a step to the full build if its output falls short. Changing builds is one field: the id in the sub-node. The whole family is on the [uncensored GLM page](https://uncensoredllm.ai/uncensored/glm).

## What 1,000 workflow runs cost

The worked example: 1,000 runs, each sending about 1,500 tokens of instructions and trigger data and getting a 400-token reply.

| Model | 1,000 runs | 30,000 runs |
| --- | --- | --- |
| [GLM-5.3 Flash Uncensored](https://uncensoredllm.ai/models/glm-5.3-flash-uncensored) | $0.32 | $9.45 |
| [GLM-5.3 Uncensored](https://uncensoredllm.ai/models/glm-5.3-uncensored) | $0.76 | $22.84 |
| [DeepSeek V4.1 Flash Abliterated](https://uncensoredllm.ai/models/deepseek-v4.1-flash-abliterated) | $1.95 | $58.56 |

Computed at render from the catalog prices on 2026-10-27: runs × 1,500 × input price, plus runs × 400 × output price.

An agent that calls tools makes more than one model request per run, and each one resends the conversation. Multiply by the number of steps your agent takes. Every per-token rate is on the [pricing page](https://uncensoredllm.ai/pricing).

## Check the credential outside n8n

This is the request n8n's credential test makes. It is free; run it from a terminal, or from an HTTP Request node with the same URL and header.

```bash
curl https://api.uncensoredllm.ai/v1/models \
  -H "Authorization: Bearer sk-ullm-live-…"
```

A 200 with a list of ids means the key and Base URL are right. A 401 says which way the key is wrong:

```
HTTP 401
{"error":{"message":"No API key was sent.","type":"authentication_error","param":null,"code":"invalid_api_key"}}
```

```
HTTP 401
{"error":{"message":"The API key is not valid.","type":"authentication_error","param":null,"code":"invalid_api_key"}}
```

Both bodies as the API returned them on 25 October 2026.

## Troubleshooting n8n OpenAI credential errors

### The credential test fails

Check the Base URL first: `https://api.uncensoredllm.ai/v1`, ending in `/v1`. Then the key: one from this console, not from another provider. That mix-up was the first answer in the community thread above.

### The model list says No results

The list is built from `/models` under the Base URL. A URL without `/v1` breaks it. Use the ID mode and the list stops mattering.

### 404 model_not_found

The id in the Model field is not in the catalog. Copy it from the curl output above or from the [models page](https://uncensoredllm.ai/models).

```
HTTP 404
{"error":{"message":"No such model: glm-5.3-flash-uncensord.","type":"not_found_error","param":null,"code":"model_not_found"}}
```

### 402 insufficient_balance

The prepaid balance is at zero. Top up in the console; a refused request is not charged.

```
HTTP 402
{"error":{"message":"The prepaid balance does not cover this request. Top up at … to continue.","type":"insufficient_quota","param":null,"code":"insufficient_balance"}}
```

### "Bad request - please check your parameters"

n8n shows this when it cannot read the error. Its [common issues page](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/common-issues/) suggests running the same call in an HTTP Request node to see the full body. Base URL, key and model id for other clients are on the [docs page](https://uncensoredllm.ai/docs).

## Questions

### Where is the Base URL in n8n’s OpenAI setup?

On the OpenAI credential, below API Key and Organization ID. It defaults to https://api.openai.com/v1; replace it with https://api.uncensoredllm.ai/v1.

### Can the n8n OpenAI node use a model that is not from OpenAI?

Yes, through the credential’s Base URL. With a non-OpenAI Base URL, the OpenAI Chat Model lists every id the endpoint returns and accepts any id in ID mode. See the uncensored model list.

### Is there an n8n alternative to OpenAI for the AI Agent?

Any OpenAI-compatible API can sit behind the OpenAI Chat Model sub-node. This one serves abliterated and uncensored builds, billed per token from a prepaid balance. See per-token prices.

### Does n8n need tools on the AI Agent for this to work?

Not in the current AI Agent: only the Chat Model connector is required in n8n’s source. If your version asks for a tool, use the Basic LLM Chain with the same sub-node.

### What is n8n-openai-bridge?

A community project for the opposite direction: it exposes n8n workflows as an OpenAI-compatible API. This guide is about calling a model from n8n.

[Get a key](https://app.uncensoredllm.ai/console) Prepaid 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.
