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 fieldValue
APIChat Completion
Chat Completion SourceCustom (OpenAI-compatible)
Custom Endpoint (Base URL)https://api.kunavo.com/v1
Custom API Keysk-kn-…
Available ModelsPopulates itself after Connect — pick any id
The /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

  1. Create a key at /app/keys and copy it — it is shown once.
  2. In SillyTavern, open the plug icon (API Connections) in the top bar.
  3. Set APIChat Completion, then Chat Completion Source Custom (OpenAI-compatible).
  4. Paste https://api.kunavo.com/v1 into Custom Endpoint and the key into Custom API Key.
  5. Press Connect. A green status and a populated Available Models dropdown means it worked.
  6. 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 idKunavo in / outWhere it fits
claude-haiku-4-5$0.40 / $2.00Cheapest Claude — long sessions where cost per turn matters most
claude-sonnet-4-6$1.20 / $6.00The default balance of quality and price
claude-opus-5$2.00 / $10.00Highest-quality Claude tier
claude-fable-5$7.00 / $35.00Frontier reasoning with a 1M-token context window — the pick when the chat history itself is the problem
Context length is the constraint that bites first in a long SillyTavern session: the whole history is re-sent every turn, so token spend grows with the conversation rather than staying flat. Kunavo bills per token from a prepaid balance with no monthly fee, so an idle month costs nothing — details in billing, and prompt caching is the lever that matters most on repeated context.

Troubleshooting

SymptomCauseFix
Connect fails, model list stays empty/v1 missing from Custom EndpointUse https://api.kunavo.com/v1. Confirm with the curl above.
401 / invalid keyKey pasted with whitespace, or revokedRe-copy from /app/keys; see 401 and 403
Replies arrive all at once, not streamedA proxy in front of the connection is buffering server-sent eventsEndpoint-side streaming is supported — streaming errors
Model id rejectedId not served by this endpointPick from the dropdown, or model_not_found
Errors only on long chatsHistory has outgrown the model's context windowTrim 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.