The KoboldAI Classic API is the request shape the original KoboldAI server exposed and KoboldCpp still serves: a raw prompt to /api/v1/generate, text back in results[0].text. SillyTavern, Kobold Lite and a lot of Python scripts speak it to a server on your own GPU. This guide explains what it is, shows that this API is OpenAI format rather than Kobold format, and gives the exact settings that put the same front-ends on an uncensored build with no GPU. Sources were read on 27 October 2026.
If you only want Kobold Lite connected, the Kobold Lite custom API guide is the shorter path.
What the KoboldAI Classic API is
"KoboldAI Classic" is the name front-ends give the original KoboldAI server and the HTTP API it exposed. The KoboldAI-Client README calls the program "a browser-based front-end for AI-assisted writing with multiple local & remote AI models" and says "KoboldAI has a REST API that can be accessed by adding /api to the URL that Kobold provides you." The same README, read on 27 October 2026, now carries a warning: "This old legacy KoboldAI product is currently not maintained, if you want to use the latest models please switch to KoboldCpp."
The API outlived the program. KoboldCpp, its successor, serves the same endpoints and documents them in its API reference (version 2026.10.11 on 27 October 2026) under the heading "KoboldAI United compatible API core endpoints". So when SillyTavern, Kobold Lite or a Python script talks "KoboldAI Classic", it is sending this shape to a server at http://localhost:5001, KoboldCpp's default port.
SillyTavern's connection docs list the original as "KoboldAI Classic (deprecated, abandoned)" with "Models limited to 2k context" and "No streaming", and list KoboldCpp separately as an "Easy-to-use API with CPU offloading (helpful for low VRAM users) and streaming". Both are Text Completion backends. Both run on your own hardware.
The KoboldAI Classic API URL and endpoints
The reference lists five core endpoints. The URL is the server's host plus the path; on a local KoboldCpp that host is http://localhost:5001.
- POST /api/v1/generate
- Generate text with a specified prompt
- GET /api/v1/model
- Retrieve the current model string.
- GET /api/v1/info/version
- Current KoboldAI United API version
- GET /api/v1/config/max_context_length
- Retrieve the current max context length setting value that public backends see
- GET /api/v1/config/max_length
- Retrieve the current max length (amount to generate) setting value
The generate body is a raw prompt, not a message list. Its documented fields include prompt ("This is the submission."), max_length ("Number of tokens to generate."), max_context_length ("Maximum number of tokens to send to the model."), temperature, top_p, top_k, min_p, rep_pen ("Base repetition penalty value."), rep_pen_range, sampler_order and stop_sequence. The reply is results[0].text.
POST http://localhost:5001/api/v1/generate{ "prompt": "The lighthouse door slammed behind her.", "max_length": 200, "max_context_length": 4096, "temperature": 0.8, "top_p": 0.9, "rep_pen": 1.1, "stop_sequence": ["\nYou:"]} 200 OK{"results": [{"text": " Rain sheeted off her oilskin..."}]}There is no API key by default. KoboldCpp's wiki says "You can add a password with the --password launch flag, which will require the user to request generations using an API key"; without the flag, anyone who can reach the port can generate. A "Kobold API key" is that password, nothing more.
This API is OpenAI format, not Kobold format
https://api.uncensoredllm.ai/v1 does not serve /api/v1/generate. Every model here answers POST /v1/chat/completions in the OpenAI shape: a model id, a messages list, max_tokens instead of max_length, stop instead of stop_sequence, and a key in the Authorization header. The same request as above, translated:
POST https://api.uncensoredllm.ai/v1/chat/completionsAuthorization: Bearer sk-ullm-live-…{ "model": "cydonia-24b-v4.3", "messages": [ {"role": "system", "content": "You are the narrator of a storm-bound lighthouse story."}, {"role": "user", "content": "The lighthouse door slammed behind her."} ], "max_tokens": 200, "temperature": 0.8, "top_p": 0.9, "stop": ["\nYou:"]}KoboldCpp itself made the same move: its reference puts "OpenAI Compatible and Anthropic APIs. Recommended for beginners." at the top, with /v1/chat/completions and /v1/completions served from the same port. A client that can speak OpenAI format to a local KoboldCpp can speak it here, with the host and the key changed. The repetition penalty, sampler order and the Kobold-only samplers do not cross over; temperature, top_p and stop sequences do.
The practical consequence: pick the Chat Completion or OpenAI-compatible option in your front-end, not "KoboldAI Classic", and the front-end sends the right shape.
The same front-ends on an uncensored model, no GPU
SillyTavern
Set API to Chat Completion, Chat Completion Source to Custom (OpenAI-compatible), Custom Endpoint to https://api.uncensoredllm.ai/v1, paste the key, Connect, and pick a model id from the list it loads. Text Completion with KoboldAI Classic or KoboldCpp selected will not reach this API. The SillyTavern guide has every field and the errors.
KoboldAI Lite
In the AI popup choose OpenAI Compatible API as the provider, URL https://api.uncensoredllm.ai/v1, your key, tick Chat-Completions API, leave the CORS proxy off. The Kobold Lite custom API guide walks through that popup field by field.
Python
A script that called /api/v1/generate becomes one OpenAI SDK call. The function below keeps the Kobold-style signature so the rest of a script does not change:
from openai import OpenAI client = OpenAI(base_url="https://api.uncensoredllm.ai/v1", api_key="sk-ullm-live-…") def generate(prompt: str, max_length: int = 200) -> str: """The shape of a Kobold /api/v1/generate call, on the OpenAI endpoint.""" reply = client.chat.completions.create( model="cydonia-24b-v4.3", messages=[{"role": "user", "content": prompt}], max_tokens=max_length, temperature=0.8, ) return reply.choices[0].message.content print(generate("The lighthouse door slammed behind her."))Create the key in the console; it starts with sk-ullm- and is shown once. The balance is prepaid from $10. Nothing downloads and no GPU is involved on your side.
Which uncensored build to pick
Kobold users mostly want story and roleplay tunes. The four below carry the roleplay tag in the catalog; MythoMax is the classic 13B many Kobold guides still name. Prices and windows are read from the live catalog when the page renders.
| Wire formats | |||||
|---|---|---|---|---|---|
| MythoMax L2 13B | Roleplay | $0.404 | $0.404 | 4K | |
| Stheno 8B v3.2 | Roleplay | $0.7035 | $0.7035 | 16K | |
| Cydonia 24B v4.3 | Roleplay | $0.484 | $0.60 | 131K | |
| Magidonia 24B v4.3 | Roleplay | $0.3535 | $0.4235 | 33K |
| Model | 150 generations at 2,000 context |
|---|---|
| MythoMax L2 13B | $0.13 |
| Stheno 8B v3.2 | $0.23 |
| Cydonia 24B v4.3 | $0.16 |
| Magidonia 24B v4.3 | $0.12 |
A local KoboldCpp costs a GPU and electricity; this costs the table. The whole catalog is on the models page and every rate on the pricing page. The daily check sends each model a fixed prompt every day so the id serves the model on its label.
Check the key first
The OpenAI-format equivalent of GET /api/v1/model: list the ids your key can reach. A 200 with a list means the URL and the key are right.
curl https://api.uncensoredllm.ai/v1/models \ -H "Authorization: Bearer sk-ullm-live-…"A 401 is the key: "No API key was sent." or "The API key is not valid." A 404 on a chat request is the model id or a Kobold path sent to an OpenAI endpoint. A 402 is an empty balance, not charged. The docs page lists the settings for every other client.
Questions
It is the address of the KoboldAI or KoboldCpp server you run, plus /api: on a local KoboldCpp, http://localhost:5001/api/v1/generate. For a hosted uncensored model there is no Kobold URL; use the OpenAI-compatible base URL with the Chat Completion option in your client. See base URL and key per client.
Not by default. KoboldCpp's wiki says the --password flag adds one, "which will require the user to request generations using an API key". This API always needs a key; it starts with sk-ullm- and is created in the console.
Against a local server, POST JSON with prompt and max_length to /api/v1/generate and read results[0].text. Against this API, use the OpenAI SDK with base_url set to the endpoint; the snippet above keeps the Kobold-style function signature.
No. KoboldAI Classic is the original server, which its README calls "not maintained" (read 27 October 2026). KoboldCpp is the current program, serving the same /api/v1 endpoints plus OpenAI-compatible ones.
Yes. Pick Chat Completion with Custom (OpenAI-compatible), set the endpoint and key, and the model runs on the API. KoboldAI Classic and KoboldCpp in SillyTavern are for servers on your own machine. See the SillyTavern guide.
Nothing to download. The Colab notebooks ran KoboldAI on a borrowed GPU; here the model is already running, and the client needs only the base URL, the key and a model id.
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.