Docs
SillyTavern
SillyTavern's Custom (OpenAI-compatible) source needs a base URL and a key. Point it at Kunavo and Claude, GPT and Gemini all appear in the same model dropdown.
To connect SillyTavern to Kunavo, open API Connections, set API to Chat Completion and Chat Completion Source to Custom (OpenAI-compatible), then fill two fields: Custom Endpoint = https://api.kunavo.com/v1 and Custom API Key = your sk-kn-… key. Press Connect; SillyTavern calls GET /v1/models and fills the model dropdown from the reply.
| SillyTavern field | Value |
|---|---|
| API | Chat Completion |
| Chat Completion Source | Custom (OpenAI-compatible) |
| Custom Endpoint (Base URL) | https://api.kunavo.com/v1 |
| Custom API Key | sk-kn-… |
| Available Models | Populates itself after Connect — pick any id |
/v1 suffix belongs in this field. SillyTavern's custom source follows the OpenAI convention and appends only the route, so https://api.kunavo.com without /v1 produces a failed connect and an empty model list.Step by step
- Create a key at
/app/keysand copy it — it is shown once. - In SillyTavern, open the plug icon (API Connections) in the top bar.
- Set API → Chat Completion, then Chat Completion Source → Custom (OpenAI-compatible).
- Paste
https://api.kunavo.com/v1into Custom Endpoint and the key into Custom API Key. - Press Connect. A green status and a populated Available Models dropdown means it worked.
- Pick a model id from the dropdown and start a chat. Switching models later does not need a reconnect.
SillyTavern's own reference for this screen is the Chat Completions API connections page.
Verify before you debug the UI
One request settles whether a failure is the endpoint, the key, or SillyTavern. If this returns a JSON list of model ids, the same URL and key will populate the dropdown.
# Confirms the key and the endpoint before you touch SillyTavern.
# A JSON list of model ids means the same URL will populate the dropdown.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Which models to pick
Every text model on Kunavo is reachable from the same dropdown — the full list is on the models page and comes back live from GET /v1/models. Rates are USD per 1M tokens, input / output.
| Model id | Kunavo in / out | Where it fits |
|---|---|---|
claude-haiku-4-5 | $0.40 / $2.00 | Cheapest Claude — long sessions where cost per turn matters most |
claude-sonnet-4-6 | $1.20 / $6.00 | The default balance of quality and price |
claude-opus-5 | $2.00 / $10.00 | Highest-quality Claude tier |
claude-fable-5 | $7.00 / $35.00 | Frontier reasoning with a 1M-token context window — the pick when the chat history itself is the problem |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Connect fails, model list stays empty | /v1 missing from Custom Endpoint | Use https://api.kunavo.com/v1. Confirm with the curl above. |
| 401 / invalid key | Key pasted with whitespace, or revoked | Re-copy from /app/keys; see 401 and 403 |
| Replies arrive all at once, not streamed | A proxy in front of the connection is buffering server-sent events | Endpoint-side streaming is supported — streaming errors |
| Model id rejected | Id not served by this endpoint | Pick from the dropdown, or model_not_found |
| Errors only on long chats | History has outgrown the model's context window | Trim history or move to a longer-context model — context_length_exceeded |
Two honest notes
Not affiliated
SillyTavern is an independent open-source project and is not affiliated with Kunavo. This page documents a configuration that works because SillyTavern supports arbitrary OpenAI-compatible endpoints — nothing here is special-cased on either side.
Content policy still applies
Requests through Kunavo reach upstream providers, and each provider enforces its own usage policy on the content it is sent. A gateway does not remove those limits, and any page telling you otherwise is selling something. Kunavo's own terms are in the acceptable use policy.
FAQ
How do I connect SillyTavern to a custom API endpoint?
In SillyTavern, open the API Connections tab (the plug icon), set API to Chat Completion and Chat Completion Source to Custom (OpenAI-compatible). Put the gateway's OpenAI-compatible base URL in Custom Endpoint — for Kunavo that is https://api.kunavo.com/v1 — put the key in Custom API Key, and press Connect. SillyTavern then calls GET /v1/models on that endpoint and fills the model dropdown from the response.
Does SillyTavern work with Claude models through an OpenAI-compatible endpoint?
Yes. SillyTavern's Custom (OpenAI-compatible) source only needs an endpoint that implements POST /v1/chat/completions, so Claude models served in that format work without using SillyTavern's separate Anthropic source. On Kunavo the Claude, GPT and Gemini model ids all appear in the same dropdown behind one key, and switching between them does not require reconnecting.
Does streaming work in SillyTavern with a custom endpoint?
Streaming works as long as the endpoint implements server-sent events on /v1/chat/completions, which Kunavo does. If responses arrive only as a complete block, the usual cause is a proxy in front of the connection buffering the stream rather than the endpoint itself.
Why is the SillyTavern model list empty after connecting?
An empty model dropdown in SillyTavern means the GET /v1/models call failed, which is an endpoint or key problem rather than a SillyTavern one. The two usual causes are a base URL missing the /v1 suffix and a key that is not valid for that endpoint. Running curl against /v1/models with the same key reproduces the failure outside SillyTavern and tells you which of the two it is.