# Usage and billing

Rush meters the compute your runs use while they are awake. Every session records its tokens and cost, and limits answer with a typed code.

What a run costs comes from two places. Its **model calls** run on your own Claude or ChatGPT
subscription or API key by default, and your provider bills those. Its **compute**, the sandbox the
agent works in, is what Rush meters against your plan. [Pricing](/pricing) lists the plans and what
each includes.

Billing is per person, not per org. Runs you start, and runs started with an API key you created,
count against your own plan whichever org they run in.

_Figure: meter, on the page at /docs/concepts/usage-and-billing._
## What is metered

- **Compute.** Measured from the sandbox's vCPU-seconds and memory GiB-seconds while it is awake.
  A plan includes agent-hours for the month and a smaller allowance for the week, and neither carries
  over.
- **Parked time is free.** When a turn ends the sandbox parks and its meter stops. A follow-up starts
  it again. A session you keep for days between turns costs nothing while it waits.
- **Disk is not priced.**
- **Rush's models.** A run with `"strategy": "platform"`, or one with no account of yours connected,
  uses a one-time model trial Rush covers. Past it, such a run answers `402 TOKEN_LIMIT_REACHED`.
  See [Models](/docs/concepts/models).

Model calls on your own account are never counted toward Rush's model limits. The compute those
runs use always is.

## Where usage shows

Every session carries its own usage on [`GET /o/{org}/sessions/{session}`](/docs/api/get-session):
`input_tokens`, `output_tokens`, `cache_read_tokens`, `cache_write_tokens`, `reasoning_tokens`,
`total_tokens`, `total_cost_usd`, `tool_calls_count` and `turns_count`, summed across turns. The
webhook for each turn also carries `total_cost_usd`.

`total_cost_usd` is the model cost of the run. On your own account it is the cost the harness
reports, which your provider bills; it is not a Rush charge.

In the console, **Billing** shows your plan, the compute you have used this period, and the
spend limit.

## Limits and their codes

When a plan does not cover a run, starting it or sending a follow-up answers `402` with a typed
`code`, before any sandbox starts:

| `code` | Meaning |
| --- | --- |
| `COMPUTE_LIMIT_REACHED` | The month's included compute is used. |
| `WEEKLY_COMPUTE_LIMIT_REACHED` | The week's included compute is used. |
| `SPEND_CAP_REACHED` | Usage for the period reached the spend limit you set. |
| `PAYMENT_METHOD_REQUIRED` | A paid plan has no working payment method. |
| `TOKEN_LIMIT_REACHED` | The one-time model trial is used. Connect your own account. |

### Spend limit

An org admin sets a spend limit in the console under **Billing**. It caps what the period can be
charged, and once usage reaches it new runs answer `402 SPEND_CAP_REACHED`. Clear it to remove the
limit.

## Concurrency

Two limits decide how many runs can be in progress at once.

- **Per API key.** A key has `max_concurrent`, set when the key is created:
  4 by default, up to 100. Starting one more answers `429`. Wait for a run to end, or cancel one.
- **Per plan.** Your plan also sets how many of your runs can be active at once, across the
  console, the CLI and your keys.

A parked sandbox holds none of your plan's slots, so sessions waiting between turns do not count
against it.

A running session also queues at most 20 follow-ups from the console or the CLI; one more answers
`429 QUEUE_FULL`.

```bash
rush http POST /o/$ORG/api-keys -d '{"name": "ci-runner", "max_concurrent": 20}'
```

See [create an API key](/docs/api/create-api-key).
