> ## Documentation Index
> Fetch the complete documentation index at: https://vetta.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Pricing

> What you pay, and how the completion window changes it.

Vetta charges for what your agents actually consume, in real dollars — no per-seat fee. The one recurring charge is the [plan](/docs/cli/billing#the-plan): \*\*$20 per month** per organization, and each paid month grants $20 of credit toward that consumption.

## What you pay for

| Component            | How it's priced                                                                                                                                                                                                                                             |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Plan**             | $20 per month, per organization. Includes $20 of credit each month. Every route outside billing needs one — see [`vetta plan`](/docs/cli/billing#the-plan).                                                                                                      |
| **Model inference**  | Per token across a five-tier ledger, at the request's [completion window](/docs/concepts/completion-window) tariff. See [Model router](/docs/concepts/model-router).                                                                                                  |
| **Computer**         | Per-second vCPU + memory while running. **No creation fee**; nothing at all while paused.                                                                                                                                                                   |
| **Web tools**        | [`web_search` and `web_fetch`](/docs/capabilities/tools#web-tools), per call — [rates below](#priced-tools).                                                                                                                                                     |
| **Media generation** | [`generate_image`, `generate_video` and `clip_video`](/docs/capabilities/tools#generation-tools), [`transcribe_audio` and `generate_speech`](/docs/capabilities/tools#audio-tools), and the [Clips API](/docs/api/clips), per finished job — [rates below](#priced-tools). |
| **Browser**          | The [managed browser](/docs/computer/browser), per session minute open to close plus a fixed price per model-driven action — [rates below](#priced-tools).                                                                                                       |
| **Email**            | Each outbound [email](/docs/identity/email) an identity sends, `$0.0008` per send however many recipients it has. Booked after the provider accepts it; a send the balance cannot cover is refused with `402 insufficient_credits`.                              |
| **Storage**          | A fullstack app's [object storage](/docs/api/storage), per bucket per day — **no rate is published yet, so nothing is booked**.                                                                                                                                  |

<Note>
  Every rate published here and on [Limits & billing](/docs/computer/limits-and-billing) is **the price you pay** — the number the [ledger](/docs/platform/billing) books and the number your spend breakdown reports. There is no separate fee, no seat charge and no minimum on top of it.
</Note>

## Priced tools

Three tool families have a price of their own, on top of the tokens the model spends calling them. Each appears on `GET /v1/agents/{id}/spend?by=component` under its own component name. An app's [database](/docs/api/database) is not one of them: `/v1/apps/{id}/db/*` calls and the `apps` tool's `db_*` actions carry no price of their own.

**They are all booked after the fact.** A web call is priced from what the provider charged for it, so the debit lands **after** the call: an agent already at its cap can still make one. Media is the same — nothing is reserved before a render (see below), so `max_task_micro_usd` does **not** bound one. Watch the `search` and `media` components to see what each is costing, and treat the agent's `cap_micro_usd` and the organization's balance as the real limits.

### Web tools — per call, `search` component

| Call                                       | Price       |
| ------------------------------------------ | ----------- |
| `web_search` — one query, up to 10 results | `$0.002158` |
| `web_fetch` — one page read as text        | `$0.001079` |

A search whose results are all filtered out by the agent's [domain policy](/docs/capabilities/tools#web-tools) still costs the call — the query ran. A `web_fetch` refused by that policy is stopped **before** the page is requested and costs nothing; a page that *redirected* somewhere the policy forbids is withheld after the fetch, and that one is billed, because the fetch happened.

### Media generation — per finished job, `media` component

You are billed **what the finished job actually cost**, once per job.

There is no per-model price table here, and that is deliberate rather than an omission. A generation job's cost depends on the model, the duration and the size, and it is published by nobody until the job has finished — so any table on this page would be a number we invented. What can be listed is which models exist: [`GET /v1/media/models`](/docs/api/media), read live from the provider. The [audio](/docs/api/audio) routes and tools are on this component too: a transcription costs what the provider charged for the recording, speech what it charged for the characters spoken.

**Nothing is reserved for an image or a video before it renders.** Nobody can price a render before it runs — video models publish no price at all — and a ceiling is not a price, so no hold is taken against the agent's [budget](/docs/concepts/budgets) and no balance floor is checked, from a session or over REST. The real cost is booked once, when the job lands, on the render's own idempotency key; a render costs cents, and a balance may go negative by one rather than turn the request away. A job that fails or never finishes is not billed at all.

**A clipping job submitted over REST has no agent, so no reservation.** [`POST /v1/media/clips`](/docs/api/clips#pricing) is admitted while the prepaid balance is above zero (`402 insufficient_credits` otherwise), and what it can cost is bounded server-side instead: the input is capped at 90 minutes of video and every metered actual the job reports is clamped before it is priced. The debit lands once, on completion; a failed job bills nothing.

### Browser — per session minute and per hosted action, `browser` component

| Line                                                                           | Price                                     |
| ------------------------------------------------------------------------------ | ----------------------------------------- |
| Session minutes, `opened_at` → `closed_at`, rounded up, **minimum one minute** | `$0.002167` per minute (`$0.13` per hour) |
| One model-driven action — `act`, `extract` with an instruction, `observe`      | `$0.013`                                  |

The minutes are one debit when the session closes; there is no up-front hold, because a session's cost is knowable only at close. A session is capped at **360 minutes** (`timeout_minutes`); one that hits its timeout bills up to it and no further. The deterministic actions (`goto`, `click`, `type`, `screenshot`, `links`, …) cost nothing beyond the minutes they run in. The whole model is on [Limits & billing](/docs/computer/limits-and-billing#the-browser).

### Storage — per bucket-day, `storage` component

Storage on a fullstack app is metered per bucket per UTC day it exists, on its own `storage` line — and **no rate is published for it today, so no line is booked**. The tier exists on the [ledger](/docs/api/credits) so a rate can be set without a schema change; until one is, buckets and objects carry no charge beyond the computer time an agent spends using them.

### The model proxy

[`POST /v1/proxy/anthropic/v1/messages`](/docs/api/proxy) is priced exactly like a session's model call — same catalogue, same per-window tariff, same five tiers, same balance. The proxy adds no charge of its own.

## The completion window is the biggest lever

The same model at a different [window](/docs/concepts/completion-window) is a different price. The window is a single field with three wire values — `immediate`, `priority`, and `loose`.

<img src="https://mintcdn.com/vetta/rjfQyQrWaQ5bFTTq/images/completion-window.svg?fit=max&auto=format&n=rjfQyQrWaQ5bFTTq&q=85&s=b5a7b5f5210feebb2312ab5d20678c29" alt="One model, three completion window lanes — immediate, priority, loose — with latency increasing and tariff decreasing, chosen per request" width="900" height="360" data-path="images/completion-window.svg" />

| Window      | Latency            | Relative model tariff |
| ----------- | ------------------ | --------------------- |
| `immediate` | Answers now        | Highest               |
| `priority`  | Answers soon       | Lower                 |
| `loose`     | Answers eventually | Lowest                |

You choose the window **per request** — pay the interactive tariff only when a person is waiting; overnight work runs on `loose` for materially less.

On `immediate`, the [router](/docs/concepts/model-router) picks the fastest provider hosting the model rather than the cheapest, because that window exists for the case where a person is waiting. The same model can therefore cost a little more on one call than another — you are billed from what the call actually cost, and the ledger records which provider served it.

## Budgets keep it predictable

Every [agent has a budget](/docs/concepts/budgets): set `cap_micro_usd`, `max_task_micro_usd`, and a `period`. Model calls are quoted before they run, so one that would breach those ceilings is refused rather than discovered on an invoice. Media renders, compute and the web tools are metered from what they actually used and booked afterwards, so a period's spend can finish past its cap — and, where a funded organization exhausts its balance mid-turn, the balance itself can go negative. It is on the ledger either way, never silent.

## Measured, not modelled

All figures are corrected against vendor invoice brackets — list-price rate cards over-state real cost by 1.017x–4.176x. Methodology in [Benchmarks](https://usenaive.ai/benchmarks).

<Card title="See the numbers" icon="chart-column" href="https://usenaive.ai/benchmarks">
  Cost per completed task across 15 measured cells.
</Card>
