Chub AI API key setup: proxy URL, model id, settings

Put an uncensored model behind Chub AI: the reverse proxy URL and key in Secrets, the model id, the generation settings we start from, and what 100 messages cost.

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

What you will have at the end

A Chub AI chat that sends every message to an uncensored model on your own prepaid key instead of to one of Chub's built-in APIs. The connection is three values, entered in Chub's panels: Secrets for the URL and the key, and a model field that the walkthroughs ranking for this query place under Configuration with the generation settings.

Secrets, API
OpenAI, reverse proxy
Proxy URL
https://api.uncensoredllm.ai/v1
Base URL ending in /v1; https://api.uncensoredllm.ai/v1/chat/completions if the check answers 404 route_not_found
Proxy key
sk-ullm-live-…
Created in the console, shown once
Model field
uncensored-ai-roleplay
Any id from the Models page, typed exactly

Your characters, personas, lorebooks and chats stay on Chub. What changes is the model that writes the replies and where the bill lands: a balance that settles per token, not a Chub subscription tier. The same three values drive every client on the docs page; the SillyTavern, Janitor AI, RisuAI and Agnai guides use them too, and the best uncensored LLM leaderboard picks the model id.

Prerequisites

  • A Chub AI account. The Secrets and Configuration panels are in the chat page's options menu; Chub's docs place that menu under the hamburger button at the top right of the chat page.
  • A key. Create one in the console. The first top-up is $10, there is no subscription, and bonus credit is added on larger top-ups (+5% at $200, +10% at $500, +15% at $1,000; these are the tiers the console applies). The key starts with sk-ullm- and is shown once, so copy it before you close the dialog.
  • A model id from the Models page. Every entry there is the exact string Chub's model field needs. Four starting points are priced below.
  • A character opened in a chat, so the connection check has a definition to answer from.

Secrets: the proxy URL and the key

Chub's API Connections page lists OpenAI as usable "with either an API Key or the use of a reverse proxy". A reverse proxy, in Chub's sense, is any URL that answers the chat completions format; this API is one. The docs do not print the labels of the URL and key fields, so each step below names the field by what it asks for. Match on that if your release words it differently.

  1. Open a chat with any character and open the options menu (the hamburger button at the top right of the chat page, per Chub's chat page docs). Choose Secrets, which the docs describe as the place where you set up the API connection used to chat.
  2. Pick the OpenAI API and switch it from your own key to the reverse proxy option, the one that takes an address.
  3. In the proxy URL field, paste https://api.uncensoredllm.ai/v1, with the /v1 and nothing after it. That is right when the app appends the chat completions path itself. If the check in the next step answers 404 route_not_found, your release posts to the address exactly as typed: replace the value with https://api.uncensoredllm.ai/v1/chat/completions. The API serves both forms; only one of them matches what the app sends.
  4. In the proxy key field, paste your key, the whole string starting sk-ullm-. No Bearer in front of it.
  5. Save the Secrets panel before you leave it. If your release shows a check button for the proxy (the walkthroughs that rank for this query describe one; Chub's docs do not), press it: it sends one short chat completion to the URL with the key, and a pass means both are right. Without one, the first message in the chat is the check. Either way a failure carries a status code, and the table under Troubleshooting says which field to fix.

Chub's docs recommend official keys over third-party reverse proxies because a proxy operator "gain[s] access to your data and IP address". That is accurate for any URL you paste here, this one included; the retention section below says what this operator keeps, so you can judge it against a free proxy that publishes nothing.

Configuration: the model id and the prompt settings

Chub's chat page docs put the prompt structure and the generation parameters under Configuration, in the same options menu, and note that Presets save those settings. The docs do not place the model field; the walkthroughs that rank for this query put it in Configuration's prompt structure, next to a choice of API. Three things to set there.

  1. Where the panel asks which API the prompt is for, choose OpenAI, so the chat uses the reverse proxy you just saved.
  2. In the model field, enter a model id exactly as the Models page prints it, for example uncensored-ai-roleplay. The API matches on the id, so a display name such as "GLM-5.3 Flash Uncensored", or a name from another provider's list such as gpt-4, answers 404 model_not_found. If your release offers the model as a closed list with no way to type an id, the check will say so with that code; write to support with the request id and we will tell you what the current build does.
  3. Under the API Settings that Chub's docs list for every API, leave the System Prompt (the docs also call it the Jailbreak Prompt) free of any jailbreak text, and leave Post History Instructions empty unless a character needs a formatting rule. The builds on this site answer in character without a prefill. A pasted jailbreak rides on every message, and tokens are what you pay for.

Save the preset under a name you will recognise, one per model if you switch builds. The URL and key stay in Secrets; one key covers every id on the Models page.

Generation settings for an uncensored build

Chub's docs name five generation settings: Temperature, Presence Penalty, Frequency Penalty, Top K and Top P, with one rule, "You should either alter Temperature or Top P, but not both." An uncensored or abliterated build has no refusal text to steer around, so these only shape the prose. The values we start every Chub preset from, with Temperature as the one we move:

SettingStart valueWhy
Temperature0.91.0 is the model's own distribution. 0.9 keeps the variety and trims the odd word salad; drop to 0.7 if a build rambles.
Top P1.0Off, per Chub's own rule of moving one or the other. Move Temperature instead.
Top K00 is off. Narrowing the token set on top of Temperature flattens the writing.
Frequency Penalty0Raise to 0.1 or 0.2 only when a build repeats its pet phrases over a long chat. Higher makes it avoid its own character names.
Presence Penalty0Same reason. 0.2 at most, on a build that keeps restating the scene.

Chub's docs stop at those five. Two more values shape every request Chub sends, and the walkthroughs that rank for this query show both as settings; set them under whatever label your release gives them. The response length, in tokens: 300 is about one paragraph, and a model that reasons before it answers needs 1,000 or more, or the reply is cut inside the reasoning step and arrives empty.

The context limit is the value that changes the bill. Chub sends the character definition, your persona, lorebook entries and as much history as the limit allows on every message. Set it from the model's context_window in the catalog, with 16K of headroom and a 64K cap, and never above the window: a prompt past the window is refused, not trimmed. Chub's Chat Memory (a summary sent as context, per the docs) is the way to keep a long story in a short window.

ModelContext window in the catalogContext limit we set
Uncensored AI Roleplay128,000 tokens65536
GLM-5.3 Flash Uncensorednot published32768
GLM-5.3 Uncensorednot published32768
DeepSeek V4 Pro Uncensorednot published32768

Context windows read from the live catalog on 2026-11-09. "Not published" means the developer states no window; 32K is the safe start there.

Check it works

A reply in the chat proves the UI path. This proves the API path with the same shape Chub sends: a system message for the character, one user turn, the settings above. Replace the key and run it from a terminal.

curl
1curl -i https://api.uncensoredllm.ai/v1/chat/completions \
2 -H "Authorization: Bearer sk-ullm-live-…" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "uncensored-ai-roleplay",
6 "max_tokens": 300,
7 "temperature": 0.9,
8 "messages": [
9 {"role": "system", "content": "You are Tomas, the keeper of a mountain inn snowed in for the week. Stay in character. Reply in two short sentences."},
10 {"role": "user", "content": "The road is closed again. Is there a room left?"}
11 ]
12 }'

A 200 comes back in the chat completions format. The reply is in the first choice; the usage block is what the request is billed on, and Chub's definition, persona and history land in prompt_tokens the same way.

response
1HTTP/2 200
2content-type: application/json; charset=utf-8
3x-uplink-request-id: ul_…
4x-uplink-model: uncensored-ai-roleplay
5x-uplink-charge: 0.00…
6
7{
8 "id": "chatcmpl-…",
9 "object": "chat.completion",
10 "model": "uncensored-ai-roleplay",
11 "choices": [
12 {
13 "index": 0,
14 "message": { "role": "assistant", "content": "…" },
15 "finish_reason": "stop"
16 }
17 ],
18 "usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
19}

Two headers ride on every answer: x-uplink-request-id identifies the request if you write to support, and x-uplink-charge carries the settled charge for that call. A finish_reason of length means the response length cap cut the reply; on a model that reasons first, that is the empty-reply case in the troubleshooting table. A request that fails before the model answers is not charged.

Which model to put in the model field

The Chub walkthroughs that rank for "chub ai api key" pair a stock vendor model with a jailbreak in the System Prompt that rides along on every message. An uncensored build takes the model field with no prefill at all. Four starting points, priced from the live catalog:

Uncensored models and their prices per million tokens
Uncensored AI Roleplayuncensored-ai-roleplayRoleplay$0.60$2.34
GLM-5.3 Flash Uncensoredglm-5.3-flash-uncensoredUncensored$0.1053$0.3685
GLM-5.3 Uncensoredglm-5.3-uncensoredUncensored$0.282$0.846
DeepSeek V4 Pro Uncensoreddeepseek-v4-pro-uncensoredUncensored$0.97$1.94

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

  • Uncensored AI Roleplay, uncensored-ai-roleplay: the roleplay-trained default. It answers at once, with a context window of 128,000 tokens, and is the first id we try on a new character.
  • GLM-5.3 Flash Uncensored, glm-5.3-flash-uncensored: the low-cost option for long sessions, when the per-message number matters more than prose.
  • GLM-5.3 Uncensored, glm-5.3-uncensored: the full-size GLM for long scenes, when the flash build's replies read thin.
  • DeepSeek V4 Pro Uncensored, deepseek-v4-pro-uncensored: the biggest model of the four, for plots that need it. Give it a response length of 1,000 or more.

A 24B roleplay fine-tune is the other direction: cydonia-24b-v4.3 is trained on long-form character chat with a published context window and lists at $0.60 per million output tokens today. The full list is on the Models page, abliterated and roleplay builds marked; the uncensored hub explains the difference.

Each id is sent a fixed prompt every day and the answer is compared with the model's known answer. On 2026-11-09 the check covered 170 of the models listed on this site and 161 answered as the model named. All four models above were among them. The method and the day's verdicts are at /proof.

What 100 messages cost

A Chub message carries more than the words you type. The character definition, your persona, matching lorebook entries and as much history as the context limit allows go out with every turn. We cost one message at 4,000 tokens in and 300 out, and the same message late in a long chat at 16,000 tokens in. Prices per million tokens come from the live catalog on 2026-11-09; the arithmetic is tokens times price, nothing else.

ModelOne message100 messages100 messages, 16k context
uncensored-ai-roleplay$0.0031$0.3102$1.0302
glm-5.3-flash-uncensored$0.0005$0.0532$0.1795
glm-5.3-uncensored$0.0014$0.1382$0.4766
deepseek-v4-pro-uncensored$0.0045$0.4462$1.6102

Put another way, the smallest top-up of $10 buys about 3,223 messages of that size on uncensored-ai-roleplay at today's price. Prepaid credit does not expire, so an idle month costs nothing.

Two things move the number. The context limit matters more than reply length: the 16,000-token column is the same reply with a fuller history. And a jailbreak in the System Prompt is paid for on every message, which is the other reason to leave it empty on an uncensored build. The pricing page has the per-token price of every model and the bonus tiers.

What the operator keeps

Chub's warning about reverse proxies is correct: every message goes to the URL in Secrets, and whoever runs that URL sees it. So the question is who is behind the URL and what they keep. As the privacy page states it: one usage record per request (request id, model, token counts and the charge); SHA-256 fingerprints of each request and response, never the text, so a signed receipt can be checked against what was billed; and request bodies only when you turn replay on for a key, for 7 days. With replay off, prompts and replies pass through and are not written anywhere. The key itself is stored as a salted hash and shown once.

Two habits cost nothing. Set a monthly spend limit on the key in the console, so a key that leaks from a shared screenshot cannot drain the balance; the API then answers 402 monthly_limit_reached instead of spending on. And make a separate key per app, Chub on one and SillyTavern on another, so you can revoke one without touching the other.

Troubleshooting

When a generation fails, the status code behind it is the API's, and each one names a field.

CodeBody saysCauseFix
401invalid_api_keyThe proxy key field is wrong or has a space on the end.Re-copy the key from the console into Secrets and save. A revoked key answers the same way.
404route_not_foundThe URL Chub posts to is not the chat completions route.Switch the proxy URL between https://api.uncensoredllm.ai/v1 and https://api.uncensoredllm.ai/v1/chat/completions; one of them matches what your release appends.
404model_not_foundThe model field holds a display name, a name from another provider's list or a typo.Copy the id from the Models page as written. The body names the id it received.
402insufficient_balanceThe prepaid balance is empty.Top up in the console. monthly_limit_reached is the same code when the key's own monthly limit was hit; raise it or wait for the month.
403scope_deniedThe key is limited to a list of models and the model field names another.Add the model to the key in the console, or change the id.
429rate_limited or upstream_rate_limitedToo many requests on the key, or the model's route is busy.Regenerate after retry-after, or switch the model id for a minute.
502upstream_errorThe model's route failed or the answer was cut off before it reached you.Regenerate after retry-after. Nothing was charged.
200an empty replyThe response length cap was spent inside a reasoning step, so content came back empty with finish_reason length.Raise the response length to 1,000 or more, or switch to a build that answers without reasoning, such as uncensored-ai-roleplay.

The bodies below are the API's own wording for the common codes. The last line of each is what to search for in Chub's error text.

errors
1HTTP 401, the key is wrong
2{"error":{"message":"The API key is not valid.","type":"authentication_error","param":null,"code":"invalid_api_key"}}
3
4HTTP 404, the URL does not reach the chat completions route
5{"error":{"message":"No such route.","type":"not_found_error","param":null,"code":"route_not_found"}}
6
7HTTP 404, the model field names an id that is not on the list
8{"error":{"message":"No such model: gpt-4.","type":"not_found_error","param":null,"code":"model_not_found"}}
9
10HTTP 402, the balance is empty
11{"error":{"message":"The prepaid balance does not cover this request. Top up at … to continue.","type":"billing_error","param":null,"code":"insufficient_balance"}}

A 200 with a reply that ignores the character is a settings problem, not a connection problem: a System Prompt that fights the definition, or a Temperature far from 1, shows up that way. The same model id in SillyTavern with the samplers from that guide is the quick comparison.

Questions

In Secrets, which Chub’s docs describe as the place where you set up the API connection used to chat. Open a chat, open the options menu at the top right, choose Secrets, pick OpenAI, switch to the reverse proxy option and paste the URL and the key. The model id is a separate field; the walkthroughs that rank for this query place it under Configuration.

From the provider whose model you want to use. Here: create a key in the console, top up from $10, and paste the sk-ullm- string into Chub’s proxy key field. The key is shown once and works in Chub, SillyTavern and the SDKs at the same time. See the console.

Chub’s own docs warn that the operator of a reverse proxy sees your data and IP address. A prepaid key costs per token with no subscription; the cost table above puts 100 messages on four uncensored models in cents.

The one that lets you name the model, publish its price and state what it keeps. On this API the model field takes any id on the Models page; uncensored-ai-roleplay is the roleplay-trained default and glm-5.3-flash-uncensored the low-cost one. See the Models page.

The usual cause is the response length cap being spent inside a model’s reasoning step, so the content comes back empty with finish_reason length. Raise the cap to 1,000 or more, or use a build that answers without reasoning. A wrong model id is the other cause; that one comes back as 404 model_not_found rather than empty.

A generation error in the chat means the request to the proxy URL came back without a reply. The status code behind it is the API’s: 401 is the key, 404 is the URL or the model id, 402 is the balance, 429 is a rate limit. The troubleshooting table above maps each one to the field to fix.

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