# Pricing and limits

KeepBal bills in **integer micro-USD** (1 USD = 1,000,000). Prices below are Digidai catalog prices, not live vendor invoices. Availability depends on `GET https://keepbal.com/healthz` upstream_mode.

## Wallet basics

- Signup grants **$1 promotional credit** once.
- Extra credit is an **operator grant** from /admin. **No self-serve card or crypto payment.**
- Metered calls settle **asynchronously**. Balance can lag. Concurrent calls can pass the precheck — not a hard spend cap.
- `402 insufficient_credits` — wallet below the configured floor.
- `503 provider_unavailable` — no upstream for that route; **never billed**.
- `501 not_implemented` — `/apis/v2/*` x402 is not available.

## Models (per 1M tokens)

| Model | Owned by | Endpoint | Input µUSD / 1M | Output µUSD / 1M |
| --- | --- | --- | --- | --- |
| `gpt-5.4` | openai | chat/completions | 3000000 | 12000000 |
| `gpt-5.4-mini` | openai | chat/completions | 600000 | 2400000 |
| `claude-sonnet-4.5` | anthropic | chat/completions | 3600000 | 18000000 |
| `claude-haiku-4.5` | anthropic | chat/completions | 1200000 | 6000000 |
| `gemini-2.5-pro` | google | chat/completions | 1500000 | 12000000 |
| `gemini-2.5-flash` | google | chat/completions | 360000 | 3000000 |
| `deepseek-v3.2` | deepseek | chat/completions | 336000 | 504000 |
| `qwen3-max` | alibaba | chat/completions | 1440000 | 7200000 |
| `jina-embeddings-v3` | jina | embeddings | 60000 | 0 |

Unknown model ids may be forwarded in some temporary validation modes and billed at input 2400000 / output 9600000 micro-USD per 1M tokens. Availability depends on `/healthz` — see https://keepbal.com/llms.txt for mode notes. `direct` model routes currently return 503.

A 2xx model response with no extractable token usage costs 0. Image pricing and non-OpenAI streaming usage are not implemented.

## Tools (per successful 2xx call)

| Tool | Summary | µUSD / 2xx |
| --- | --- | --- |
| `POST /apis/v1/tavily/search` | Web search with extracted page text (Tavily) | 12000 |
| `POST /apis/v1/tavily/extract` | Extract content from known URLs (Tavily) | 6000 |
| `POST /apis/v1/exa/search` | Neural semantic web search (Exa) | 12000 |
| `POST /apis/v1/exa/contents` | Fetch full page contents (Exa) | 6000 |
| `POST /apis/v1/firecrawl/scrape` | Scrape a page to clean markdown (Firecrawl) | 6000 |
| `POST /apis/v1/firecrawl/search` | Web search returning scraped content (Firecrawl) | 12000 |
| `POST /apis/v1/scholar/search/scholar` | Academic paper search with citations (Scholar) | 12000 |
| `POST /apis/v1/scholar/search/web` | Research-oriented web search (Scholar) | 12000 |

A path not in this list is 15000 micro-USD on a 2xx response, except Digidai-facing discover/inspect/run routes when those are active (see https://keepbal.com/llms.txt).

When a temporary tools adapter is active, some static catalog paths may return 503 (not billed) while Digidai-facing discover/inspect/run settle per llms.txt.

## Machine-readable

https://keepbal.com/catalog.json · https://keepbal.com/llms.txt · https://keepbal.com/openapi.yaml
