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

# Limits and errors

> Every Boat limit per plan: sandboxes at once, starts per minute, hour and day, trial caps, command and output caps. The 402, 403, 429 and 503 error codes, how to retry, and how to raise a limit.

The start rate is the limit that most accounts hit first. Create, fork and resume each count as one start.

## Limits per plan

| Plan | Sandboxes at once | Starts per minute / hour / day | Included time per month |
| - | - | - | - |
| [Free trial](/free-trial) | 2 | 5 / 25 / 75 | 25 h in total, for the whole trial |
| \$20 | 100 | 12 / 60 / 200 | \$20 (555 h of `default`) |
| \$100 | 300 | 30 / 210 / 840 | \$100 (2,777 h of `default`) |
| \$500 | 1,000 | 65 / 420 / 1,680 | \$500 (13,888 h of `default`) |
| \$2000 | 2,000 | 90 / 600 / 2,400 | \$2000 (55,555 h of `default`) |

* The start windows roll. Boat counts the starts of the last 60 seconds, the last hour and the last 24 hours.
* Nothing resets at midnight. A start stops counting 24 hours after it happened. Boat does not show when the next start becomes free.
* An organization multiplies every number in this table by its seats. Read [Seats, limits and caps](/organizations/seats-and-limits).
* A stopped sandbox does not count against "at once".
* Check what you have left with `boat limits`, or `GET /limits`.

## Other limits

| Limit | Value |
| - | - |
| Auto-stop | Default 1 hour. Maximum 30 days, or off. Trial: 2 hours maximum. |
| Sizes | `xlarge` needs the \$100 plan or higher. The trial has no `large` or `xlarge`. |
| Disk of a stopped sandbox | Kept 14 days after the stop, then deleted. Email on day 11. |
| Named snapshots | 10 free per account or organization. Each one more costs \$1.70 a month. No maximum. They never expire. |
| Command that waits for its result | Default timeout 30 s, maximum 600 s. For longer work, run it detached. |
| Output of a waiting command | 8 MiB per stream |
| Command output kept per account | 10 MiB compressed per hour (about 50 MiB of text) |
| Output of other processes | 64 KiB/s per process, plus 10 MiB compressed per hour per account |
| Prompt attachments | 12 files, 25 MB per file, 64 MB in total |
| Webhooks | 10 per account |
| API keys | Lifetime 90 days by default, 365 days maximum |
| API requests | 1,000 per minute from one IP address |

For the command limits, read [Background commands](/long-running-tasks/background-commands) and [Command history and logs](/long-running-tasks/command-history).

## Errors and what to do

| Status | Code | Cause | What to do |
| - | - | - | - |
| `429` | `rate_limited` | Too many starts in one window. The body names the `window` (`minute`, `hour` or `day`) and the `limit`. | Wait until that window rolls. Then retry. |
| `429` | `limit_reached` | The plan's "at once" limit is full. | Stop a sandbox, or raise the plan. |
| `429` | `member_limit_reached` | The organization owner capped how many sandboxes you run at once. | Stop one, or ask the owner to raise your cap. |
| `429` | `trial_compute_limit_reached` | The trial used its 25 hours. | [End the trial](/free-trial#end-the-trial-early). |
| `429` | `IP_RATE_LIMIT_EXCEEDED` (in `code`) | More than 1,000 requests per minute from one IP address. | Wait the `retryAfter` seconds in the body. |
| `402` | `billing_required` | The balance is empty, or the account or organization has no plan. | Open the `billingUrl` in the body. Buy time, or start a plan. |
| `402` | `team_member_cap_reached` | You used your per-member usage cap in the organization. | Ask the owner to raise it. It resets with the billing month. |
| `403` | `trial_machine_class_not_allowed` | `large` during the trial. | Use `default`, or end the trial. |
| `400` | `trial_auto_stop_required` | No auto-stop, or more than 2 hours, during the trial. | Set an auto-stop of 2 hours or less. |
| `409` | `snapshot_data_expired` | The sandbox stayed stopped for 14 days. Boat deleted its data. | You cannot resume it. Next time, save a [named snapshot](/snapshots/stop#keep-a-stopped-sandbox-longer-than-14-days) before day 14. |
| `503` | `no_ready_machine` | You asked to [fail fast](/machines/fail-fast) and no machine is ready. Nothing started or counted. | Retry after `retryAfterSeconds` (5). |
| `503` | `out_of_capacity` | Boat is out of machines for a short time. Running sandboxes are not affected. | Retry after `retryAfterSeconds` (120). |

### Retry rules

* **The API sends no `Retry-After` header.** Read the wait from the body: `retryAfterSeconds` on a `503`, `retryAfter` on an IP limit, and `window` on `rate_limited`.
* For `rate_limited` with `window: "minute"`, wait 60 seconds. For `hour` and `day`, pace your starts. A retry loop does not help.
* A start refused with `rate_limited` does not count as a start.
* Send an `Idempotency-Key` header on create and fork. A retry with the same key then never makes a second sandbox, and it does not spend a start.
* The CLI does not retry for you. It prints the limit message and exits with an error.

## Raise a limit

| You need | Do this |
| - | - |
| More starts or more sandboxes at once | Move to a bigger plan: `boat billing plan 100`, or [Dashboard > Billing](https://boat.dev/dashboard?tab=billing). The change applies at once. |
| More of everything, for a team | Buy seats on an [organization](/organizations/seats-and-limits). Each seat adds the plan's limits and included time. |
| More time, same limits | Buy a credit pack (`boat billing credits`) or turn on auto-refill. Read [Plans, credits and running out](/billing). |
| More than the \$2000 plan gives | [Contact support](/support). Boat raises limits for committed accounts. |
| Trial limits gone | Pay the first plan. Read [Free trial](/free-trial). |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.