CLI First
# Check usage and buy more credits
naive usage --days 30
naive billing packs
naive billing topup --pack medium
How Credits Work
Every company has a credit balance. Operations deduct credits on use. New accounts start with 20 free credits.
Credit Costs
Each credit is worth $0.50 USD.
Fixed-Price Operations
| Operation | Credits | Charging |
|---|
| Email send | 1 | Immediately on success |
| Web search | 1 | Immediately on success |
| URL read | 0.5 | Immediately on success |
| Research (quick) | 3 | Immediately on success |
| Research (thorough) | 5 | On job completion |
| Research (exhaustive) | 8 | On job completion |
| CEO run (pre-check) | 5 | Pre-check on run start |
| Stock photo search | 0 | Free |
| Browser session open | 0 | Free (time floor billed at close) |
| Browser navigate / act / extract / observe / screenshot | 1 each | Immediately per action |
| Browser autonomous signup | 4 | On success (approval-gated) |
| Browser autonomous login | 3 | On success |
| Browser session time floor | 1–3 | At close, by elapsed time (≤5 / ≤15 / ≤30 min) |
LLM Calls
There are two ways LLM usage is billed, both per-token and deducted after the call completes (after the final SSE event for streams):
- The
llm primitive & OpenRouter proxy (POST /v1/llm/chat/completions, naive.llm.chat(), and the /v1/proxy/openrouter/* drop-in). These route through OpenRouter, which returns the exact USD cost of each call. Naive bills that returned usage.cost × markup, converted to credits — so there’s no per-model rate table and pricing always tracks OpenRouter. See the LLM primitive.
- Orchestration LLM calls (CEO agent / employees). These flow through the Anthropic/OpenAI/Google proxies and are billed per-token using the rates below, with cache read tokens billed at a discount and cache creation at a premium.
| Model | Input (per 1M tokens) | Output (per 1M tokens) |
|---|
| Claude Opus 4.5 | 12.5 credits | 62.5 credits |
| Claude Opus 4 | 37.5 credits | 187.5 credits |
| Claude Sonnet 4 / 4.5 | 7.5 credits | 37.5 credits |
| Claude Haiku 4.5 | 2.5 credits | 12.5 credits |
| Claude Haiku 3.5 | 2 credits | 10 credits |
| GPT-4o | 6.25 credits | 25 credits |
| GPT-4o Mini | 0.375 credits | 1.5 credits |
| Gemini 2.0 Flash | 0.1875 credits | 0.75 credits |
| Gemini 2.5 Pro | 3.125 credits | 25 credits |
LLM costs are deducted automatically after each API call completes. For streaming responses, usage is extracted from the final SSE event and deducted post-stream. Built-in web search tool use is also billed when used.
Dynamic-Price Operations (Image/Video Generation)
Image and video generation costs are model-dependent and calculated dynamically. Use the pricing endpoints to preview costs before submitting:
GET /v1/images/pricing?model=fal-ai/flux/schnell&num_images=2
GET /v1/video/pricing?model=fal-ai/kling-video/v3/pro/text-to-video&duration=5
Response:
{
"model": "fal-ai/flux/schnell",
"estimated_credits": 0.12,
"unit_price_usd": 0.02,
"credit_value_usd": 0.50
}
Sync vs Async Charging
Synchronous operations (email, search, URL read, quick research):
- Credits deducted immediately when the operation succeeds
- If it fails, no credits are charged
Asynchronous operations (images, video, thorough research):
- On submission: pre-check that balance ≥ estimated cost (returns
402 if not)
- Job runs in background
- On success: credits deducted and transaction recorded
- On failure: no charge
Concurrent async jobs can temporarily exceed your balance since pre-checks pass independently. The balance may go slightly negative — subsequent submissions will be blocked once balance drops below threshold.
Checking Your Balance
Returns your current balance, tier, and resource counts.
Usage History
GET /v1/usage?days=30&limit=50
Returns transaction history with action type, amount, and reference IDs.
Credit Responses
Every operation that costs credits includes the charge in its response:
{
"credits_used": 1,
"credits_remaining": 99
}
For async jobs, the estimated cost is shown on submission:
{
"job_id": "uuid",
"estimated_credits": 2,
"hint": "Credits charged on completion only."
}
Credit Enforcement
All billable operations check your credit balance before executing. When your balance drops to zero or below:
- API primitives (email send, search, URL read) return
402 insufficient_credits
- CEO runs are blocked with a credit pre-check (5 credits)
- LLM proxy calls from the container are rejected, stopping agent work
- The balance has a small negative buffer (-10 credits) to avoid cutting off mid-stream responses
Credits are enforced at every layer — the API, the LLM proxy, and individual primitive endpoints.
Running Low on Credits?
When your balance hits zero, operations fail with an insufficient_credits error that includes available credit packs. You can buy more anytime:
# See available packs
naive billing packs
# Buy credits
naive billing topup --pack medium # 50 credits for $23
Or upgrade your plan for more monthly credits:
naive billing upgrade --plan pro # 200 credits/mo
See Billing & Credits for full details on plans and pricing.