Skip to content

# API usage & costs

This doc lists features that can invoke API keys and where their costs show up. It focuses on OpenSoul features that can generate provider usage or paid API calls.

# Where costs show up (chat + CLI)

Per-session cost snapshot

  • /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.

Per-message cost footer

  • /usage full appends a usage footer to every reply, including estimated cost (API-key only).
  • /usage tokens shows tokens only; OAuth flows hide dollar cost.

CLI usage windows (provider quotas)

  • opensoul status --usage and opensoul channels list show provider usage windows (quota snapshots, not per-message costs).

See Token use & costs for details and examples.

# How keys are discovered

OpenSoul can pick up credentials from:

  • Auth profiles (per-agent, stored in auth-profiles.json).
  • Environment variables (e.g. OPENAI_API_KEY, BRAVE_API_KEY, FIRECRAWL_API_KEY).
  • Config (models.providers.*.apiKey, tools.web.search.*, tools.web.fetch.firecrawl.*, memorySearch.*, talk.apiKey).
  • 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)

Every reply or tool call uses the current model provider (OpenAI, Anthropic, etc). This is the primary source of usage and cost.

See Models for pricing config and Token use & costs for display.

# 2) Media understanding (audio/image/video)

Inbound media can be summarized/transcribed before the reply runs. This uses model/provider APIs.

  • Audio: OpenAI / Groq / Deepgram (now auto-enabled when keys exist).
  • Image: OpenAI / Anthropic / Google.
  • Video: Google.

See Media understanding.

Semantic memory search uses embedding APIs when configured for remote providers:

  • memorySearch.provider = "openai" → OpenAI embeddings
  • memorySearch.provider = "gemini" → Gemini embeddings
  • memorySearch.provider = "voyage" → Voyage embeddings
  • Optional fallback to a remote provider if local embeddings fail

You can keep it local with memorySearch.provider = "local" (no API usage).

See Memory.

# 4) Web search tool (Brave / Perplexity via OpenRouter)

web_search uses API keys and may incur usage charges:

  • Brave Search API: BRAVE_API_KEY or tools.web.search.apiKey
  • Perplexity (via OpenRouter): PERPLEXITY_API_KEY or OPENROUTER_API_KEY

Brave free tier (generous):

  • 2,000 requests/month
  • 1 request/second
  • Credit card required for verification (no charge unless you upgrade)

See Web tools.

# 5) Web fetch tool (Firecrawl)

web_fetch can call Firecrawl when an API key is present:

  • FIRECRAWL_API_KEY or tools.web.fetch.firecrawl.apiKey

If Firecrawl isn’t configured, the tool falls back to direct fetch + readability (no paid API).

See Web tools.

# 6) Provider usage snapshots (status/health)

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:

  • opensoul status --usage
  • opensoul models status --json

See Models CLI.

# 7) Compaction safeguard summarization

The compaction safeguard can summarize session history using the current model, which invokes provider APIs when it runs.

See Session management + compaction.

# 8) Model scan / probe

opensoul models scan can probe OpenRouter models and uses OPENROUTER_API_KEY when probing is enabled.

See Models CLI.

# 9) Talk (speech)

Talk mode can invoke ElevenLabs when configured:

  • ELEVENLABS_API_KEY or talk.apiKey

See Talk mode.

# 10) Skills (third-party APIs)

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.

Released under the MIT License.