Roo Code: a five-minute setup

Roo Code is a Cline fork with nearly identical provider settings. Here is the shortest path from installing the extension to a working first request.

4 min · · Updated · IDE

Roo Code is a Cline fork, and its provider settings work almost the same way. The menu labels differ slightly, but the logic — which base URL goes where — is identical. Here are five steps, no detours.

Step 1. Get a key

Go to https://zukko.pro/app/api-keys and create a key. It's shown once, in the fetch_... format — copy it immediately, it won't be shown again.

Step 2. Open the provider settings

In the Roo Code panel, open Settings (gear icon) → Providers. Pick one of two API Provider options depending on which models you need:

  • Anthropic — for Claude models over /v1/messages.
  • OpenAI Compatible — for GPT, GLM, or Claude again, over /v1/chat/completions.

Step 3. Base URL — the step that actually matters

This is where most time gets wasted. The base URL depends on the provider you picked:

  • Anthropic: https://api.zukko.pro — no /v1, Roo Code appends the path itself.
  • OpenAI Compatible: https://api.zukko.pro/v1 — with the suffix.

A mixed-up suffix is the most common cause of a 404 on first connection: the key gets accepted, but every request goes nowhere.

Step 4. Enter the key and pick a model

API Key: paste fetch_... with no leading or trailing spaces.

Model:

  • Via the Anthropic provider — claude-opus-5-5 (Claude Opus 5.5, 1,000,000-token context) or claude-sonnet-5.
  • Via OpenAI Compatible — gpt-5.6-sol, gpt-5.6-luna, glm-5.3, glm-5.3-flash, or the same Claude models.

Current model list, no key required:

bash
curl https://api.zukko.pro/v1/models

Step 5. Confirm it works

Ask Roo Code a simple question in chat. If it answers, you're done. If not, test the key separately from the extension:

bash
curl https://api.zukko.pro/v1/chat/completions \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"ping"}]}'

If curl answers but Roo Code doesn't, the issue is in the extension's config. If curl doesn't answer either, the error body tells you exactly what's wrong.

Common errors on first run

  • 401 — key rejected: {"error":{"message":"Invalid API key. Use Authorization: Bearer fetch_*","type":"authentication_error"}}. Usually a typo or a key truncated during copy-paste.
  • 402 — empty balance: {"error":{"message":"Недостаточно средств на балансе","code":"insufficient_balance"}}. The check happens before the request reaches the model, so a failed attempt is free.
  • 404 model_not_found — the model doesn't match the catalog; case and version dots matter.
  • 400 model_retired — the model has been retired, and the error text names its replacement.
  • 503 model_disabled — the model is disabled in the catalog; pick another one from /v1/models.
  • 403 model_not_allowed_for_key — this key has an allowed-models list set in the dashboard, and the requested model isn't on it.
  • 429 — from Zukko this only means a per-key limit (key_daily_limit_reached, which resets at 00:00 UTC, or key_monthly_limit_reached); the gateway has no general rate limit, and any other 429 comes from the model provider.

Worth turning on right away

If Roo Code fires off many fully identical requests in agent mode — repeated checks of the same file, for example — turn on caching: the X-Zukko-Cache: true header (temperature: 0 also enables it, but only on models that accept it — Claude models may reject a temperature other than 1). Requests from the same user with a fully matching body are cached for up to 7 days for chat (similar but not identical ones aren't), the repeat answer comes back instantly and free, and the response carries X-Zukko-Cache: hit.

If your network is flaky and Roo Code occasionally resends a request after a dropped connection, add an Idempotency-Key header with a unique value per logical request (kept the same across its retries) — replaying the same key within 24 hours returns the same response without charging twice.

Limits and money

On a key's page in the dashboard you can set a daily or monthly spend cap in dollars and restrict the list of allowed models — useful if the key is shared across a team project. The server sends X-Zukko-Cost-Micros (the cost of that request in micro-dollars, 1,000,000 = $1) and X-Fetch-Balance-Cents (the remaining balance after the charge, also in microdollars) only on regular JSON responses, and Roo Code receives responses as a stream — streaming responses don't carry these headers. For Roo Code, check spend in the dashboard, via GET /v1/usage, or GET /v1/balance.

Top up via SBP, a card through PayPear, crypto, or a foreign Mastercard EU card through Fride (about 13% fee, amounts $2–$594); the minimum is $1. A one-time $0.50 bonus comes from subscribing to @zukkopro: link Telegram in the dashboard, subscribe, press "Check"; once per Telegram account. There's no starting balance for a plain signup anymore.

Free token counting before you run anything

Roo Code in agent mode can pack several project files into a single request, and it helps to know the token cost beforehand. The /v1/messages/count_tokens endpoint counts tokens without running the request and without charging anything:

bash
curl https://api.zukko.pro/v1/messages/count_tokens \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"the task text"}]}'

Full spending history

GET /v1/usage returns the charge history for the whole account (all keys together, no per-key filter) with cursor pagination — useful for seeing which Roo Code run burned the most tokens when several ran back to back. If the key is shared across a team, set limits on the key's dashboard page up front rather than sorting out who spent what afterward.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

Roo Code setup with a custom API key in 5 minutes · Zukko