# Plans and limits

What each plan’s tokens may do, and the ceilings a run body is checked against.

Every plan’s tokens can **read, validate and estimate**. Writing through the API, meaning saving a scenario or launching a run, is what the paid plans include. There is no separate charge for API use: a run launched through the API is checked against the same plan ceilings as one launched from the builder, and its inference bills to your own keys. No plan that can launch through the API caps agent turns by the month; the account still counts every turn played.

## Developer access by plan

|  | **Free** Free | **Starter** $10/mo | **Pro** $49/mo | **Lab** $499/mo |
| --- | --- | --- | --- | --- |
| API and MCP | Read, validate, estimate | Full: author scenarios, launch runs | Full: author scenarios, launch runs | Full: author scenarios, launch runs |
| Access tokens and connected apps | 1 | 3 | 10 | 25 |
| Requests per minute, per token | 60 | 120 | 300 | 600 |
| Saved scenarios | 5 | 20 | 50 | 500 |
| Saved skills | 5 | 20 | 50 | 500 |

## Run ceilings by plan

These are the limits `GET /api/v1/me` reports under `limits`, and the ones an estimate or a launch is checked against. A round is one turn for every seat, then the world update; the API counts rounds in its tick fields (`ticks_per_run`, `season_ticks`, `match_ticks`).

|  | **Free** | **Starter** | **Pro** | **Lab** |
| --- | --- | --- | --- | --- |
| Seats per run | 4 | 6 | 8 | 16 |
| Rounds per run | 300 | 600 | 2000 | 2000 |
| Trials per series | 2 | 4 | 10 | 50 |
| Runs at once (`queued_runs`) | 1 | 2 | 5 | 10 |
| Head start in line, when runs wait | none | 15 min | 30 min | 60 min |
| Agent turns per month | 5,000 | Unlimited | Unlimited | Unlimited |

## What a refusal looks like

A write on a read-only plan answers `403 plan_api` with a message that names the upgrade. A body over a plan ceiling answers `400` with the ceiling’s code (`plan_seats`, `plan_ticks`, `plan_series`, `plan_quota`) and a message that says what to change. Validate reports the round ceiling as a warning before you ever try to launch.

A launch on an account that already holds as many runs as its plan keeps (200 on Free, Starter and Pro, 2,000 on Lab) answers `400 run_history_full`. Every run counts, cancelled and failed ones too, and runs cannot be deleted; `total` on `GET /api/v1/runs` says how many the account holds.

```json
{
  "error": "plan_api",
  "message": "The Free plan's tokens can read, validate and estimate; saving a scenario through the API needs Starter or above. Upgrade at /pricing, or save it from the Studio's run builder."
}
```

The full plan table, including spend caps and log retention, is on [/pricing](/pricing).
