2026-01-18 14:49:19 +00:00
---
summary: "Audit what can spend money, which keys are used, and how to view usage"
read_when:
- You want to understand which features may call paid APIs
- You need to audit keys, costs, and usage visibility
- You’ re explaining /status or /usage cost reporting
2026-01-31 16:04:03 -05:00
title: "API Usage and Costs"
2026-01-18 14:49:19 +00:00
---
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
# API usage & costs
This doc lists **features that can invoke API keys ** and where their costs show up. It focuses on
2026-01-30 03:15:10 +01:00
OpenClaw features that can generate provider usage or paid API calls.
2026-01-18 14:49:19 +00:00
## Where costs show up (chat + CLI)
**Per-session cost snapshot **
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
- `/status` shows the current session model, context usage, and last response tokens.
- If the model uses **API-key auth ** , `/status` also shows **estimated cost ** for the last reply.
2026-04-04 12:42:42 +01:00
- If live session metadata is sparse, `/status` can recover token/cache
counters and the active runtime model label from the latest transcript usage
entry. Existing nonzero live values still take precedence, and prompt-sized
transcript totals can win when stored totals are missing or smaller.
2026-01-18 14:49:19 +00:00
**Per-message cost footer **
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
- `/usage full` appends a usage footer to every reply, including **estimated cost ** (API-key only).
2026-04-04 22:09:07 +01:00
- `/usage tokens` shows tokens only; subscription-style OAuth/token and CLI flows hide dollar cost.
2026-04-04 12:30:48 +01:00
- Gemini CLI note: when the CLI returns JSON output, OpenClaw reads usage from
`stats` , normalizes `stats.cached` into `cacheRead` , and derives input tokens
from `stats.input_tokens - stats.cached` when needed.
2026-04-04 09:31:58 +09:00
2026-04-06 14:20:51 +01:00
Anthropic note: Anthropic staff told us OpenClaw-style Claude CLI usage is
allowed again, so OpenClaw treats Claude CLI reuse and `claude -p` usage as
sanctioned for this integration unless Anthropic publishes a new policy.
Anthropic still does not expose a per-message dollar estimate that OpenClaw can
show in `/usage full` .
2026-01-18 14:49:19 +00:00
**CLI usage windows (provider quotas) **
2026-01-31 21:13:13 +09:00
2026-01-30 03:15:10 +01:00
- `openclaw status --usage` and `openclaw channels list` show provider **usage windows **
2026-01-18 14:49:19 +00:00
(quota snapshots, not per-message costs).
2026-04-04 11:25:39 +01:00
- Human output is normalized to `X% left` across providers.
2026-04-04 12:40:55 +01:00
- Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI,
OpenAI Codex, MiniMax, Xiaomi, and z.ai.
2026-04-04 11:25:39 +01:00
- MiniMax note: its raw `usage_percent` / `usagePercent` fields mean remaining
quota, so OpenClaw inverts them before display. Count-based fields still win
2026-04-04 12:35:59 +01:00
when present. If the provider returns `model_remains` , OpenClaw prefers the
chat-model entry, derives the window label from timestamps when needed, and
includes the model name in the plan label.
2026-04-04 12:40:55 +01:00
- Usage auth for those quota windows comes from provider-specific hooks when
available; otherwise OpenClaw falls back to matching OAuth/API-key
credentials from auth profiles, env, or config.
2026-01-18 14:49:19 +00:00
2026-02-07 15:40:35 -05:00
See [Token use & costs ](/reference/token-use ) for details and examples.
2026-01-18 14:49:19 +00:00
## How keys are discovered
2026-01-30 03:15:10 +01:00
OpenClaw can pick up credentials from:
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
- **Auth profiles** (per-agent, stored in `auth-profiles.json` ).
- **Environment variables** (e.g. `OPENAI_API_KEY` , `BRAVE_API_KEY` , `FIRECRAWL_API_KEY` ).
2026-04-04 20:21:16 +01:00
- **Config** (`models.providers.*.apiKey` , `plugins.entries.*.config.webSearch.apiKey` ,
`plugins.entries.firecrawl.config.webFetch.apiKey` , `memorySearch.*` ,
`talk.providers.*.apiKey` ).
2026-01-18 14:49:19 +00:00
- **Skills** (`skills.entries.<name>.apiKey` ) which may export keys to the skill process env.
## Features that can spend keys
### 1) Core model responses (chat + tools)
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
Every reply or tool call uses the **current model provider ** (OpenAI, Anthropic, etc). This is the
primary source of usage and cost.
2026-04-04 09:31:58 +09:00
This also includes subscription-style hosted providers that still bill outside
2026-04-05 04:31:25 +09:00
OpenClaw's local UI, such as **OpenAI Codex ** , **Alibaba Cloud Model Studio
Coding Plan**, **MiniMax Coding Plan ** , **Z.AI / GLM Coding Plan ** , and
Anthropic's OpenClaw Claude-login path with **Extra Usage ** enabled.
2026-04-04 09:31:58 +09:00
2026-02-07 15:40:35 -05:00
See [Models ](/providers/models ) for pricing config and [Token use & costs ](/reference/token-use ) for display.
2026-01-18 14:49:19 +00:00
### 2) Media understanding (audio/image/video)
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
Inbound media can be summarized/transcribed before the reply runs. This uses model/provider APIs.
2026-04-04 19:42:13 +01:00
- Audio: OpenAI / Groq / Deepgram / Google / Mistral.
- Image: OpenAI / OpenRouter / Anthropic / Google / MiniMax / Moonshot / Qwen / Z.AI.
- Video: Google / Qwen / Moonshot.
2026-01-18 14:49:19 +00:00
See [Media understanding ](/nodes/media-understanding ).
2026-04-04 19:56:54 +01:00
### 3) Image and video generation
Shared generation capabilities can also spend provider keys:
- Image generation: OpenAI / Google / fal / MiniMax
- Video generation: Qwen
Image generation can infer an auth-backed provider default when
`agents.defaults.imageGenerationModel` is unset. Video generation currently
requires an explicit `agents.defaults.videoGenerationModel` such as
`qwen/wan2.6-t2v` .
See [Image generation ](/tools/image-generation ), [Qwen Cloud ](/providers/qwen ),
and [Models ](/concepts/models ).
### 4) Memory embeddings + semantic search
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
Semantic memory search uses **embedding APIs ** when configured for remote providers:
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
- `memorySearch.provider = "openai"` → OpenAI embeddings
- `memorySearch.provider = "gemini"` → Gemini embeddings
2026-02-06 15:51:47 -06:00
- `memorySearch.provider = "voyage"` → Voyage embeddings
2026-02-22 19:03:56 -05:00
- `memorySearch.provider = "mistral"` → Mistral embeddings
2026-03-03 02:56:40 +01:00
- `memorySearch.provider = "ollama"` → Ollama embeddings (local/self-hosted; typically no hosted API billing)
2026-02-06 15:51:47 -06:00
- Optional fallback to a remote provider if local embeddings fail
2026-01-18 14:49:19 +00:00
You can keep it local with `memorySearch.provider = "local"` (no API usage).
See [Memory ](/concepts/memory ).
2026-04-04 19:56:54 +01:00
### 5) Web search tool
2026-01-31 21:13:13 +09:00
2026-04-03 13:41:24 -07:00
`web_search` may incur usage charges depending on your provider:
2026-01-18 14:49:19 +00:00
2026-03-17 23:59:17 -05:00
- **Brave Search API**: `BRAVE_API_KEY` or `plugins.entries.brave.config.webSearch.apiKey`
2026-04-03 13:41:24 -07:00
- **Exa**: `EXA_API_KEY` or `plugins.entries.exa.config.webSearch.apiKey`
- **Firecrawl**: `FIRECRAWL_API_KEY` or `plugins.entries.firecrawl.config.webSearch.apiKey`
2026-03-17 23:59:17 -05:00
- **Gemini (Google Search)**: `GEMINI_API_KEY` or `plugins.entries.google.config.webSearch.apiKey`
- **Grok (xAI)**: `XAI_API_KEY` or `plugins.entries.xai.config.webSearch.apiKey`
- **Kimi (Moonshot)**: `KIMI_API_KEY` , `MOONSHOT_API_KEY` , or `plugins.entries.moonshot.config.webSearch.apiKey`
2026-04-04 12:00:46 +01:00
- **MiniMax Search**: `MINIMAX_CODE_PLAN_KEY` , `MINIMAX_CODING_API_KEY` , `MINIMAX_API_KEY` , or `plugins.entries.minimax.config.webSearch.apiKey`
2026-04-04 10:16:02 +01:00
- **Ollama Web Search**: key-free by default, but requires a reachable Ollama host plus `ollama signin` ; can also reuse normal Ollama provider bearer auth when the host requires it
2026-03-17 23:59:17 -05:00
- **Perplexity Search API**: `PERPLEXITY_API_KEY` , `OPENROUTER_API_KEY` , or `plugins.entries.perplexity.config.webSearch.apiKey`
2026-04-03 13:41:24 -07:00
- **Tavily**: `TAVILY_API_KEY` or `plugins.entries.tavily.config.webSearch.apiKey`
- **DuckDuckGo**: key-free fallback (no API billing, but unofficial and HTML-based)
2026-04-04 12:00:46 +01:00
- **SearXNG**: `SEARXNG_BASE_URL` or `plugins.entries.searxng.config.webSearch.baseUrl` (key-free/self-hosted; no hosted API billing)
2026-03-17 23:59:17 -05:00
Legacy `tools.web.search.*` provider paths still load through the temporary compatibility shim, but they are no longer the recommended config surface.
2026-03-08 19:06:21 +01:00
2026-03-13 18:37:39 +00:00
**Brave Search free credit: ** Each Brave plan includes \$5/month in renewing
free credit. The Search plan costs \$5 per 1,000 requests, so the credit covers
2026-03-08 19:06:21 +01:00
1,000 requests/month at no charge. Set your usage limit in the Brave dashboard
to avoid unexpected charges.
2026-01-18 14:49:19 +00:00
See [Web tools ](/tools/web ).
### 5) Web fetch tool (Firecrawl)
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
`web_fetch` can call **Firecrawl ** when an API key is present:
2026-01-31 21:13:13 +09:00
2026-04-04 20:21:16 +01:00
- `FIRECRAWL_API_KEY` or `plugins.entries.firecrawl.config.webFetch.apiKey`
2026-01-18 14:49:19 +00:00
If Firecrawl isn’ t configured, the tool falls back to direct fetch + readability (no paid API).
See [Web tools ](/tools/web ).
### 6) Provider usage snapshots (status/health)
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
Some status commands call **provider usage endpoints ** to display quota windows or auth health.
These are typically low-volume calls but still hit provider APIs:
2026-01-31 21:13:13 +09:00
2026-01-30 03:15:10 +01:00
- `openclaw status --usage`
- `openclaw models status --json`
2026-01-18 14:49:19 +00:00
See [Models CLI ](/cli/models ).
### 7) Compaction safeguard summarization
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
The compaction safeguard can summarize session history using the **current model ** , which
invokes provider APIs when it runs.
See [Session management + compaction ](/reference/session-management-compaction ).
### 8) Model scan / probe
2026-01-31 21:13:13 +09:00
2026-01-30 03:15:10 +01:00
`openclaw models scan` can probe OpenRouter models and uses `OPENROUTER_API_KEY` when
2026-01-18 14:49:19 +00:00
probing is enabled.
See [Models CLI ](/cli/models ).
### 9) Talk (speech)
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
Talk mode can invoke **ElevenLabs ** when configured:
2026-01-31 21:13:13 +09:00
2026-04-04 15:22:41 +09:00
- `ELEVENLABS_API_KEY` or `talk.providers.elevenlabs.apiKey`
2026-01-18 14:49:19 +00:00
See [Talk mode ](/nodes/talk ).
### 10) Skills (third-party APIs)
2026-01-31 21:13:13 +09:00
2026-01-18 14:49:19 +00:00
Skills can store `apiKey` in `skills.entries.<name>.apiKey` . If a skill uses that key for external
APIs, it can incur costs according to the skill’ s provider.
See [Skills ](/tools/skills ).