---
title: Questions and answers
description: Short answers to what people trip over most, each with the page where it is worked through in full.
keywords: faq, questions, answers, base url, 401, 429, key, wallet, package, limits
group: resources
---

## Connecting {#start keywords="base url, models, max_tokens, sdk"}

### Which base URL do I use?

For an OpenAI-compatible client, `https://api.kumorouter.com/v1`. For a client written against Anthropic's native API, `https://api.kumorouter.com` — the **bare origin, with no path**: such a client composes the path itself, and a base URL carrying a prefix sends it somewhere nothing is served.

> [How the header is written →](/en/authentication) [Your first call →](/en/quickstart)

### Which models can I name?

The ones the gateway itself lists at `https://api.kumorouter.com/v1/models`, which are the ones in the price list. This documentation names no model on purpose: the examples carry a placeholder, and the current list belongs to the catalog rather than to a text.

> [The catalog and how to read it →](/en/models)

### Why is my request refused without `max_tokens`?

An output ceiling is required. On the Chat Completions surface that is `max_tokens` or `max_completion_tokens`; on the Messages surface it is `max_tokens`, and it has no default. The reason is money: a billable dimension with no finite ceiling cannot be reserved for before the upstream call.

> [Every request member →](/en/api-reference)

### Do I have to change my code for Kumo?

No: the surfaces answer in their own protocols rather than in a translation of somebody else's. What changes is the base URL and the key.

> [Ready-made recipes →](/en/integrations) [SDKs →](/en/sdks)

## Keys {#keys keywords="key, lost, rename, check"}

### I lost a key's secret. How do I see it?

You do not. The secret is shown once, at creation; after that the platform holds only its hash, and nothing can read it back — not a screen, not an operation, not support. The cure is a new key.

> [The life of a key →](/en/keys)

### Can a key be renamed?

No. The name is fixed at creation, and the key has no rename operation. What does change is the expiry, the project and the switch.

> [What changes after creation →](/en/keys)

### How do I check a key is alive without spending a call?

The identity echo answers about the key itself rather than with a model's output: its name, its display fragments, what it spends from, and its expiry. Right here on this site, from a browser.

> [Check a key →](/en/key-check)

### Why does `401` not say what exactly is wrong?

Because missing, malformed, unknown, revoked, switched-off and expired keys are answered identically — on purpose. Telling them apart would make the gateway an oracle on key material: with a list of guesses you could learn which of them exist.

> [One refusal, and only one →](/en/authentication)

## Refusals {#refusals keywords="429, 503, 402, stream, cut short"}

### `429` or `503` — what is the difference?

`429` is a ceiling you ended up above, and time cures it. `503` means nobody upstream can serve this call right now. Neither is cured by an immediate retry.

> [Every status →](/en/errors) [The ceilings →](/en/limits)

### My stream ended early — is the answer complete?

No. Treat a stream that ended **without its terminal frame** as a failed call rather than a short one: a failure after the stream started simply ends it, and nothing in the bytes you received will say the answer was truncated.

> [How to read a cut stream →](/en/streaming) [How a refusal behaves →](/en/errors)

### How do I raise my limits?

By talking to support. No ceiling is editable in the console, and no request member asks for a higher one.

> [What a key is issued with →](/en/limits) [How to write →](/en/support)

## Money {#money keywords="wallet, package, minimum, free, prices"}

### Wallet or package — which do I pick?

The wallet counts in dollars and is topped up by any amount; a package is a prepaid token limit, one per account, bought from 30 million tokens up and only topped up after that. Each key chooses what it spends from — the package or the balance — and the choice can be changed any time; a key on the package can carry on from the balance once the limit runs out.

> [Compared side by side →](/en/packages) [How the wallet counts →](/en/billing)

### Is there a minimum top-up?

Yes: $2, or the rouble equivalent at the checkout's own exchange rate the moment you pay. A package, meanwhile, is bought by a token volume — from 30 million up.

> [How a payment runs →](/en/billing)

### Can I try it without money?

No. A wallet with nothing on it refuses every call of the keys spending from the balance with a `402`: issuing a key is free, making a call is not.

> [When there is nothing to pay with →](/en/billing)

### Where is the price list?

On the [pricing page](https://kumorouter.com/en/pricing). There are no prices in the text of this documentation on purpose: the price list publishes them, and a page that repeated a figure would go stale in silence.

### Why is spend shown as two numbers rather than one?

Because they are two different units: the wallet's dollars and the package's tokens. The platform publishes no rate between them, so their sum would be a figure with no unit.

> [The units of spend →](/en/usage)

## Data and tools {#data keywords="privacy, prompt, logs, claude code, cursor"}

### Does Kumo store my prompts?

A call is recorded by its shape and not by its content: no prompt, no answer, no headers, no client address is in the history — they are not stored at all. The other side of that is the same: you cannot reconstruct from the log what a request was about either.

> [What the log holds →](/en/usage)

### How long is the money history kept?

Money movements for five years. One request reads a window of at most 366 days, so an older period is taken by moving the window back.

> [Money movements →](/en/billing)

### How do I connect Claude Code, Cursor or another tool?

With a ready-made recipe: the platform publishes them itself, together with a prompt that will configure the tool for you.

> [Every tool →](/en/integrations) [Claude Code →](/en/claude-code) [Cursor →](/en/cursor)

### I changed my password and was signed out everywhere. Is that right?

Yes. Changing the password ends every session, including the one it was changed from: if a password is changed because the old one leaked, somebody else's open tab has to stop working at once.

> [Signing in and the password →](/en/account)
