Docs

Kilo Code

Kilo Code's custom provider is four fields. Fill them in and the extension is talking to Claude, GPT and Gemini through one key — it never learns which vendor is behind the endpoint.

Providers → Custom provider → OpenAI Compatible, base URL with /v1, and the Claude model id typed in — Kilo Code never learns which vendor is behind it.

Settings → Providers → Custom provider
Provider ID    kunavo
Display name   Kunavo
Provider API   OpenAI Compatible
Base URL       https://api.kunavo.com/v1
API key        sk-kn-...
Models         claude-sonnet-5
               claude-opus-5
               claude-haiku-4-5
The base URL keeps the /v1 suffix here — Kilo Code appends only the route, and its own documented example ends in /v1. This is the opposite of the Anthropic-style clients, which want the bare origin.
Provider API is a protocol selector, not a vendor one. Choosing OpenAI Compatible and then typing a Claude model id is the intended combination: the id is resolved at the endpoint, not in the extension.

Step by step

  1. Create a key at /app/keys and copy it — it is shown once.
  2. Open Kilo Code's settings (the gear icon), go to the Providers tab, scroll to the bottom and click Custom provider.
  3. Fill in Provider ID, Display name, Provider API = OpenAI Compatible, Base URL and API key as above.
  4. Under Models, either add ids by hand or take them from the auto-fetched list — Kunavo answers GET /v1/models, so the list populates itself.
  5. Select the provider in the chat mode selector and send a message. Pin a cheap model to the modes that run constantly and an expensive one to the modes that plan.

Checked against Kilo Code's OpenAI Compatible provider page on September 6, 2026. Third-party settings move; if a field name here no longer matches what you see, that page is the authority, not this one.

This is the short version. The full walkthrough — model choice, what a real session costs, and the failure modes — is in the Kilo Code + Claude walkthrough.

Verify before you debug the client

One request settles whether a failure is the endpoint, the key, or the configuration file. If this returns JSON, the same base URL and key work in Kilo Code.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

Which model id to put in the field

Every text model is reachable as a model id — the live list is GET /v1/models, and the catalog with prices is on the models page. Rates are USD per 1M tokens, input / output.

Model idKunavo in / outWhere it fits in Kilo Code
claude-sonnet-5$2.00 / $10.00Code and Architect modes — the default working model
claude-opus-5$2.00 / $10.00Architect mode on large refactors, where a wrong plan is expensive
claude-haiku-4-5$0.40 / $2.00Ask mode and quick file triage, where volume dominates
gpt-5-3-codex$0.70 / $5.60a second opinion from a different family, same key
Billing is per token from a prepaid balance with no monthly fee — see billing. On repeated context — which is most of what an editor or a chat client sends — prompt caching moves the bill more than the model choice does.

FAQ

How do I add a custom provider to Kilo Code?

Open Kilo Code's settings with the gear icon, go to the Providers tab, scroll to the bottom of the list and click "Custom provider". Fill in a Provider ID, a Display name, set Provider API to "OpenAI Compatible", paste the endpoint's base URL and API key, then add model ids either manually or from the auto-fetched list. The provider then appears in the mode selector like any built-in one.

Can Kilo Code use Claude models without an Anthropic account?

Yes. Kilo Code's "OpenAI Compatible" Provider API names the wire protocol, not the vendor, and it passes the model id straight through to the base URL you configured. A Claude id therefore resolves at that endpoint rather than in the extension, so the credentials you hold are the endpoint's, not Anthropic's.

Does the Kilo Code base URL need /v1 at the end?

Yes for an OpenAI-compatible endpoint. Kilo Code appends only the route — /chat/completions, /models — so the base URL has to be the /v1 root, for example https://api.kunavo.com/v1. Its own documented example carries the same suffix. A missing /v1 shows up as a 404 rather than an authentication error.

Why does Kilo Code show no models after I add a provider?

The model list is fetched from the endpoint's /v1/models route with the key you entered, so an empty list usually means the key or the base URL is wrong rather than that the provider has no models. Test the same pair with a plain curl against /v1/models: JSON back means the problem is in the extension's configuration, a 401 means the key, a 404 means the URL. Models can also always be typed in manually.