---
title: "Wyvern Chat custom API: uncensored model setup"
canonical: https://uncensoredllm.ai/guides/wyvern-chat-api
generated: 2026-11-09T16:02:06.927Z
source: https://uncensoredllm.ai/guides/wyvern-chat-api
base_url: https://api.uncensoredllm.ai/v1
---

# Wyvern Chat API setup: provider, connection, model id

Put an uncensored model behind WyvernChat on your own key: the Provider (API URL Type OpenAI, the URL, the stored key), the Connection with the model id, and what 100 messages cost.

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

## What you will have at the end

A WyvernChat connection that sends every message to an uncensored model on your own prepaid key instead of Wyvern's Free Queue or a paid plan. Wyvern splits the setup in two: a **Provider** (where the API lives and the key) and a **Connection** (which model on that provider, with what context length). The values:

- API URL Type: OpenAI
- API URL: https://api.uncensoredllm.ai/v1 Base URL ending in /v1; https://api.uncensoredllm.ai/v1/chat/completions if Fetch Models or the first message answers 404
- Stored API Key: sk-ullm-live-… Created in the console, shown once
- Model: uncensored-ai-roleplay Picked from Fetch Models, or typed exactly as the Models page prints it

Your characters, lorebooks, personas and chats stay on Wyvern. What changes is the model that writes the replies and where the bill lands: a balance that settles [per token](https://uncensoredllm.ai/pricing), not a Wyvern plan. The URL, the key and the model id drive every client on the [docs page](https://uncensoredllm.ai/docs); the [Chub AI](https://uncensoredllm.ai/guides/chub-ai), [RisuAI](https://uncensoredllm.ai/guides/risuai-custom-api) and [Agnai](https://uncensoredllm.ai/guides/agnai-proxy) guides use them too, and the [best uncensored LLM leaderboard](https://uncensoredllm.ai/blog/uncensored-llm-leaderboard) picks the model id.

## Prerequisites

- A WyvernChat account at [app.wyvern.chat](https://app.wyvern.chat). Its own [guide page](https://app.wyvern.chat/guide), read 2026-11-02, says to add a provider and a connection, then select it in chat, which is this page in three steps.
- A key. Create one in the [console](https://app.uncensoredllm.ai/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](https://uncensoredllm.ai/models). Every entry there is the exact string the Model field needs. Four starting points are priced below.
- A character opened in a chat, so the first message has a definition to answer from.

## Providers tab: the API URL and the key

Open **AI Connections**: the plug icon in the left toolbar, or your profile picture at the top right and then **AI Connections** (the page is `https://app.wyvern.chat/llm`). It has two tabs, **Providers** and **Connections**. Start on Providers.

1. Click **+ Create Provider**. A form opens.
2. **Provider Name**: `UncensoredLLM`. A label for your own list; nothing reads it. Landing Page URL and Description can stay empty.
3. **Chat Completion Only?**: on. The API answers the chat completions format; keep the switch on so the character goes as chat messages.
4. **No Key Required**: off. Every request needs the key.
5. **Stored API Key**: your key, the whole string starting `sk-ullm-`. No `Bearer` in front of it. If your release shows the key field only after saving, save first, then **Add API Key** on the provider's row.
6. **API URL Type**: **OpenAI**.
7. **API URL**: `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 **Fetch Models** in the next step, or the first message, 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.
8. **API Backend Type**: **OPENAI**. **Allowed Parameters**: leave empty.
9. Click **Add Provider** (or **Save**) and close the form.

The labels are the ones the [February 2026 walkthrough](https://rpwithai.com/use-lorebary-on-wyvernchat/) shows for this form, and the form may have changed since. When a label differs from what you see, match the field by what it asks for: a URL, a key, a type.

## Connections tab: the model and the context length

The labels in this tab and in the chat's Connection Settings also come from the [February 2026 walkthrough](https://rpwithai.com/use-lorebary-on-wyvernchat/).

1. Switch to **Connections** and click **+ New Connection**.
2. **Name**: the model you are about to pick, so a second connection for a second model stays apart. **Visibility**: Private.
3. **Force Chat Completion**: on. **Tool Call Enabled**, **Inline Image Support** and **Use Browser Request**: off.
4. Under **Model Configuration**, set **Provider** to the one you just made.
5. **Model**: click **Fetch Models**. The API answers `GET /v1/models` with your key, so the list includes every id on the [Models page](https://uncensoredllm.ai/models); pick one of those, for example `uncensored-ai-roleplay`. If the fetch fails, type the id exactly as the Models page prints it. A display name such as "Uncensored AI Roleplay" answers 404 `model_not_found`, because the API matches on the id.
6. **Context Length (tokens)**: the table under the price section gives a value per model. It is the number that sets the bill, so do not leave it at a round maximum.
7. Leave the **Instruct Templates** tab alone and pick the **Stable** preset under **Parameters**; the builds on this site answer in character without a jailbreak, so nothing needs to be added to the prompt. Click **Create**.

Then, in any chat: the cog icon on the right, **Connection Settings**, switch **Free Queue** off and pick your connection under **Mine**. The next message goes to the model you named. To switch models later, make a second connection on the same provider; the URL and key stay, and one key covers every id.

## Which model to put in the Model field

Your own connection serves the model you picked, with no prefill or jailbreak riding on each message. Four starting points, priced from the live catalog:

| Model | Build | Input $/M | Output $/M |
| --- | --- | --- | --- |
| [Uncensored AI Roleplay](https://uncensoredllm.ai/models/uncensored-ai-roleplay) uncensored-ai-roleplay | Roleplay | $0.60 | $2.34 |
| [GLM-5.3 Flash Uncensored](https://uncensoredllm.ai/models/glm-5.3-flash-uncensored) glm-5.3-flash-uncensored | Uncensored | $0.1053 | $0.3685 |
| [GLM-5.3 Uncensored](https://uncensoredllm.ai/models/glm-5.3-uncensored) glm-5.3-uncensored | Uncensored | $0.282 | $0.846 |
| [DeepSeek V4 Pro Uncensored](https://uncensoredllm.ai/models/deepseek-v4-pro-uncensored) deepseek-v4-pro-uncensored | Uncensored | $0.97 | $1.94 |

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

- [Uncensored AI Roleplay](https://uncensoredllm.ai/models/uncensored-ai-roleplay), `uncensored-ai-roleplay`: the roleplay-trained default, with a context window of 128,000 tokens; the first id we try on a new character.
- [GLM-5.3 Flash Uncensored](https://uncensoredllm.ai/models/glm-5.3-flash-uncensored), `glm-5.3-flash-uncensored`: the low-cost option for long sessions.
- [GLM-5.3 Uncensored](https://uncensoredllm.ai/models/glm-5.3-uncensored), `glm-5.3-uncensored`: the full-size GLM for long scenes, when the flash build reads thin.
- [DeepSeek V4 Pro Uncensored](https://uncensoredllm.ai/models/deepseek-v4-pro-uncensored), `deepseek-v4-pro-uncensored`: the biggest of the four, for plots that need it.

A 24B roleplay fine-tune is the other direction: `cydonia-24b-v4.3` lists at $0.60 per million output tokens today. The full list is on the [Models page](https://uncensoredllm.ai/models), abliterated and roleplay builds marked; the [uncensored hub](https://uncensoredllm.ai/uncensored) 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; the verdict for each of the four above is on its model page. The method and the day's verdicts are at [/proof](https://uncensoredllm.ai/proof).

## What 100 messages cost, and the Context Length to set

A Wyvern message carries more than the words you type. The character, your persona, matching lorebook entries and as much history as the Context Length 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.

| Model | One message | 100 messages | 100 messages, 16k context | Context Length to set |
| --- | --- | --- | --- | --- |
| `uncensored-ai-roleplay` | $0.0031 | $0.3102 | $1.0302 | 65536 |
| `glm-5.3-flash-uncensored` | $0.0005 | $0.0532 | $0.1795 | 32768 |
| `glm-5.3-uncensored` | $0.0014 | $0.1382 | $0.4766 | 32768 |
| `deepseek-v4-pro-uncensored` | $0.0045 | $0.4462 | $1.6102 | 32768 |

Context Length is 16K under the window the catalog states, capped at 64K; 32K where the developer publishes no window. Never above the window: a prompt past it is refused, not trimmed.

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. The [pricing page](https://uncensoredllm.ai/pricing) has the per-token price of every model and the bonus tiers.

## Check it works

**Fetch Models** is the check Wyvern gives you: a filled list means the URL and the key are both right. The same two checks from a terminal, so you can read the whole answer. The first lists the models your key can call; the second sends one message in the shape Wyvern sends. Replace the key and keep the rest.

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

```bash
curl -i https://api.uncensoredllm.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-ullm-live-…" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored-ai-roleplay",
    "max_tokens": 300,
    "temperature": 0.9,
    "messages": [
      {"role": "system", "content": "You are Ilse, the night warden of a border fort. Stay in character. Reply in two short sentences."},
      {"role": "user", "content": "Riders on the east road. Do we light the beacon?"}
    ]
  }'
```

A 200 comes back in the [chat completions format](https://platform.openai.com/docs/api-reference/chat); the `usage` block is what the request is billed on, and Wyvern's character, persona and history land in `prompt_tokens` the same way. 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 request that fails before the model answers is not charged.

## What the operator keeps

Every message goes to the URL in the provider, and whoever runs that URL sees it. What this one keeps, as the [privacy page](https://uncensoredllm.ai/privacy) 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, Wyvern on one and SillyTavern on another, so you can revoke one without touching the other.

## Troubleshooting

| What you see | Cause | Fix |
| --- | --- | --- |
| 401, `invalid_api_key` | The stored key is wrong, revoked, or from another account. | Edit the provider and paste the key again from the console. |
| 404, `route_not_found` | The API URL has no `/v1`. | Set the URL to `https://api.uncensoredllm.ai/v1`; if it still answers 404, use `https://api.uncensoredllm.ai/v1/chat/completions`. |
| 404, `model_not_found` | The Model field holds a display name or a typo. | Fetch Models again, or paste the id from the Models page. |
| 402, `insufficient_balance` | The prepaid balance does not cover the request. | Top up in the console; the response carries the link. |
| 429, `upstream_rate_limited` | The model's route is busy. | Send again after `retry-after`, or switch connections for a minute. |
| An empty reply | A reply cut inside a reasoning step. | Give a reasoning model 1,000 or more response tokens. |
| No request on the console's Usage page | The chat is not using your connection. | Connection Settings in the chat: Free Queue off, your connection under Mine. |

The bodies the API sends for the status codes above, with a stable `code` field you can match on. None of them costs anything.

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

HTTP 404, the API URL does not reach the chat completions route
{"error":{"message":"No such route.","type":"not_found_error","param":null,"code":"route_not_found"}}

HTTP 404, the Model field names an id that is not on the list
{"error":{"message":"No such model: gpt-4.","type":"not_found_error","param":null,"code":"model_not_found"}}

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

## Questions

### Does WyvernChat support a custom API?

Yes. AI Connections takes a Provider with an API URL Type of OpenAI, an API URL and a stored key, and a Connection that names the model on it. Any chat completions API fits, this one included.

### What is the Wyvern Chat API URL for this key?

https://api.uncensoredllm.ai/v1, with /v1 on the end. If your release posts to the address as typed instead of appending the chat completions path, use https://api.uncensoredllm.ai/v1/chat/completions.

### Is WyvernChat free?

The site is free with a Free Queue and paid plans from $10 a month (read on its plans page on 2026-11-02). A connection on your own key costs per token on the key’s balance and nothing on Wyvern.

### Why does Fetch Models return nothing in WyvernChat?

The URL is missing /v1, the key is wrong, or No Key Required is on. Fix the provider, save, and fetch again; typing the model id exactly also works. See the Models page.

### Which model is best for WyvernChat roleplay?

An uncensored or roleplay build stays in character without a jailbreak; uncensored-ai-roleplay is the roleplay-trained default, and the leaderboard ranks the rest by the daily check and price. See the uncensored LLM leaderboard.

### Can I use the same key in WyvernChat and SillyTavern?

Yes. Every key on an account draws on the same balance; make one key per app so you can revoke one without touching the other, and the Usage page shows each apart. See the SillyTavern setup.

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.
