---
title: "KoboldAI Classic API explained, plus the no-GPU route"
canonical: https://uncensoredllm.ai/guides/koboldai-classic-api
generated: 2026-11-09T16:02:07.311Z
source: https://uncensoredllm.ai/guides/koboldai-classic-api
base_url: https://api.uncensoredllm.ai/v1
---

# KoboldAI Classic API: what it is, and the OpenAI-format route

The KoboldAI Classic API is the /api/v1/generate shape KoboldCpp and SillyTavern speak. What it is, how it differs from OpenAI format, and how to put the same front-ends on an uncensored model with no GPU.

Steps checked October 27, 2026 · prices as of November 9, 2026

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](https://uncensoredllm.ai/guides/koboldai-lite-custom-api) 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](https://github.com/KoboldAI/KoboldAI-Client) 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](https://lite.koboldai.net/koboldcpp_api) (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](https://docs.sillytavern.app/usage/api-connections/) 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

Summaries as KoboldCpp's reference states them on 27 October 2026.

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/completions
Authorization: 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](https://relayswitch.io/guides/sillytavern) 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](https://uncensoredllm.ai/guides/koboldai-lite-custom-api) 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:

```python
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](https://app.uncensoredllm.ai/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.

| Model | Build | Input $/M | Output $/M | Context | Wire formats |
| --- | --- | --- | --- | --- | --- |
| [MythoMax L2 13B](https://uncensoredllm.ai/models/mythomax-l2-13b) mythomax-l2-13b | Roleplay | $0.404 | $0.404 | 4K | openai |
| [Stheno 8B v3.2](https://uncensoredllm.ai/models/stheno-8b-v3.2) stheno-8b-v3.2 | Roleplay | $0.7035 | $0.7035 | 16K | openai |
| [Cydonia 24B v4.3](https://uncensoredllm.ai/models/cydonia-24b-v4.3) cydonia-24b-v4.3 | Roleplay | $0.484 | $0.60 | 131K | openai |
| [Magidonia 24B v4.3](https://uncensoredllm.ai/models/magidonia-24b-v4.3) magidonia-24b-v4.3 | Roleplay | $0.3535 | $0.4235 | 33K | openai |

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

| Model | 150 generations at 2,000 context |
| --- | --- |
| [MythoMax L2 13B](https://uncensoredllm.ai/models/mythomax-l2-13b) | $0.13 |
| [Stheno 8B v3.2](https://uncensoredllm.ai/models/stheno-8b-v3.2) | $0.23 |
| [Cydonia 24B v4.3](https://uncensoredllm.ai/models/cydonia-24b-v4.3) | $0.16 |
| [Magidonia 24B v4.3](https://uncensoredllm.ai/models/magidonia-24b-v4.3) | $0.12 |

Computed at render from the catalog prices on 2026-11-09: generations × 2,000 × input price, plus generations × 200 × output price. The equivalent of a Kobold session with max_length 200.

A local KoboldCpp costs a GPU and electricity; this costs the table. The whole catalog is on the [models page](https://uncensoredllm.ai/models) and every rate on the [pricing page](https://uncensoredllm.ai/pricing). The [daily check](https://uncensoredllm.ai/proof) 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.

```bash
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](https://uncensoredllm.ai/docs) lists the settings for every other client.

## Questions

### Where do I find the KoboldAI Classic API URL?

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.

### Does the KoboldAI Classic API need an API key?

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.

### How do I call the KoboldAI Classic API from Python?

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.

### Is KoboldAI Classic the same as KoboldCpp?

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.

### Can SillyTavern use an uncensored model without a GPU?

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.

### Is there a KoboldAI Colab or download for this?

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](https://uncensoredllm.ai/models) with its live price per million tokens. [Per-token pricing](https://uncensoredllm.ai/pricing) sets the whole catalog side by side, and the [family directory](https://uncensoredllm.ai/uncensored) groups the builds by base model.

[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.
