Skip to main content

CLI First

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.05 USD.

Fixed-Price Operations

OperationCreditsCharging
Email send10Immediately on success
Web search10Immediately on success
URL read5Immediately on success
Research (quick)30Immediately on success
Research (thorough)50On job completion
Research (exhaustive)80On job completion
CEO run (pre-check)5Pre-check on run start (downstream LLM/tools billed separately)
SEO keywords / on-page10Immediately on success
SEO Labs / backlinks (bulk)20–50Immediately on success
AEO endpoints20–30Immediately on success
app-data / business-data10–20Immediately on success
ecommerce20Immediately on success
Clips (submagic): create / edit40 / 30On completion
Social post10Immediately on success
SMS send (phone)provider cost × 2Immediately on success
Phone number provisionprovider cost × 2On success (irreversible, approval-gated)
Stock photo search0Free
Browser session open0Free (time floor billed at close)
Browser navigate / act / extract / observe / screenshot10 eachImmediately per action
Browser autonomous signup40On success (approval-gated)
Browser autonomous login30On success
Browser session time floor10–30At close, by elapsed time (≤5 / ≤15 / ≤30 min)
SEO / AEO / queue are additionally metered against your plan quota (a separate per-primitive counter surfaced at GET /v1/users/:id/billing/usage) on top of the credit charge above.

Infrastructure (duration-metered)

Anything that runs a server you keep alive is billed by time, not per call — metered continuously by a background scheduler (~every 2 minutes) and debited via the same idempotent ledger. Scale-to-zero means an idle/stopped resource accrues nothing.
ResourceAction typeRate (default)What’s billed
Compute (compute primitive — your managed compute tasks & services)compute_usage20 credits / vCPU-hour + 2.5 credits / GB-hourWhile a run is running or a service has desiredCount > 0
Hosted runtime (a Naïve-hosted agent profile agent / runtime.start)runtime_usage20 credits / vCPU-hour + 2.5 credits / GB-hourWhile your agent profile’s Hermes container is running
  • The hosted-runtime container is 1 vCPU / 2 GB by default, so a continuously-running hosted agent costs ≈ 20 + (2 × 2.5) = 25 credits/hour (~1.25/hrat1.25/hr at 0.05/credit).
  • Only claimed containers (your agent profile’s) are billed. The shared warm pool that keeps start-up latency low is platform overhead and is never charged to you.
  • Bring-your-own-runtime (you run the agent in your own harness with agentProfile.tools()) incurs no runtime_usage — you only pay for the API primitives the agent calls.
  • A claimed hosted container bills the same whether busy or idle (the task is up), so tear agent profiles down with revoke() when done — revoke releases the slot immediately.
Path A infrastructure is credit-gated. Provisioning via naive up (managed Postgres, object storage buckets, web hosting) is blocked when your credits are exhausted, and when you run out, running infra is shut down (web disabled, runtime/compute stopped). Database and bucket data persists — top up to resume; new provisioning unblocks immediately.

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.
ModelInput (per 1M tokens)Output (per 1M tokens)
Claude Opus 4.5125 credits625 credits
Claude Opus 4375 credits1875 credits
Claude Sonnet 4 / 4.575 credits375 credits
Claude Haiku 4.525 credits125 credits
Claude Haiku 3.520 credits100 credits
GPT-4o62.5 credits250 credits
GPT-4o Mini3.75 credits15 credits
Gemini 2.0 Flash1.875 credits7.5 credits
Gemini 2.5 Pro31.25 credits250 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:
Response:

Two different “budgets” — don’t confuse them

Naïve has two independent ledgers. Keep them straight:
Platform creditsAgentProfile budget
Question it answers”What do I owe Naïve for usage?""How much real-world money may this agent spend?”
UnitCredits ($0.05 each)USD cents
Ledgercredit_transactions (company-wide)tenant_spend_events (per agent profile)
CoversLLM, search, email, images, compute, hosted runtime, …Card limits, card top-ups, trading notional
Set byYour plan + top-upsAn agent profile template’s policy.budget
Enforced bycheckCredits (402 insufficient_credits)The governance gateway (403 budget_exceeded / approval)
An agent profile’s budget.cap is a combined cost ceiling: it caps the agent profile’s real-world spend (cards/trading) plus the platform credits it burns (LLM, search, compute, hosted runtime — counted at $0.05/credit) against one number. It is still distinct from your company-wide Naïve credit balance (the budget is per agent profile, in USD). A hard cap denies over-budget actions (and auto-stops the agent profile’s hosted runtime); a soft cap routes them to approval. See IaC policy and the Governance Gateway.

Running out of credits

When a company’s credit balance is exhausted, new API calls return 402 insufficient_credits and hosted-runtime containers are automatically stopped by the meter (a runtime.stopped event with reason: out_of_credits) — so a non-paying account stops incurring cloud cost. Top up or upgrade to resume.

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):
  1. On submission: pre-check that balance ≥ estimated cost (returns 402 if not)
  2. Job runs in background
  3. On success: credits deducted and transaction recorded
  4. 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

Returns transaction history with action type, amount, and reference IDs. Every charge type appears here keyed by action_type — e.g. llm_call, web_search, email_send, job_completion, compute_usage, runtime_usage, subscription_renewal, credit_topup. The dashboard’s GET /v1/dashboard/usage-summary groups the same ledger by action_type so you can see exactly where credits went (including infrastructure time).

Credit Responses

Every operation that costs credits includes the charge in its response:
For async jobs, the estimated cost is shown on submission:

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 (-100 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:
Or upgrade your plan for more monthly credits:
See Billing & Credits for full details on plans and pricing.

Configuration reference (rates & metering)

The credit value and the duration-meter rates are deployment configuration. On the managed cloud these use the defaults below; self-hosters can override them via environment variables.
SettingEnv varDefaultNotes
Credit value$0.05 / creditRetail value used across the rate tables.
Compute vCPU rateNAIVE_COMPUTE_CREDITS_PER_VCPU_HOUR20compute primitive duration meter.
Compute GB rateNAIVE_COMPUTE_CREDITS_PER_GB_HOUR2.5compute primitive duration meter.
Runtime vCPU rateNAIVE_RUNTIME_CREDITS_PER_VCPU_HOUR20Hosted-runtime (Hermes) duration meter.
Runtime GB rateNAIVE_RUNTIME_CREDITS_PER_GB_HOUR2.5Hosted-runtime (Hermes) duration meter.
Hosted task sizeORCH_TASK_CPU / ORCH_TASK_MEMORY1024 / 2048vCPU-millis / MB of the orchestration task; used to compute runtime vCPU/GB-hours.
LLM markup×1.25Applied to OpenRouter’s returned USD cost.
Image/Video margin×1.5Applied to the live fal.ai price.
Both duration meters tick every ~2 minutes, key each charge to a time window (<resource_id>:<windowStart>) so a double-tick can’t double-charge, and cap a single tick’s back-charge at 3 intervals if the scheduler was paused. Compute is gated on NAIVE_COMPUTE_*; hosted-runtime metering is gated on ORCH_CLUSTER (hosted runtime being enabled at all).