Skip to main content
A limit comes from one of four places, and the place decides who can change it. A limit can refuse a request or truncate output. If a request fails, read its retry field and check its outcome before retrying; a refusal does not remove an existing sandbox. See Recover from Errors.

Fixed Request Limits

BoxRouter reads and discards up to 64 MiB of an oversized body so your client can finish sending and read the 413.

Volume Limits

See Volumes for how each limit behaves.

Limits Your Route Sets

Each sandbox reports the limits of the route it runs on. Read limits and lifetime.max_seconds before you size work. Enter the sandbox ID when prompted:
For files larger than file_transfer_bytes, use Volumes. Launch preparation and terminal time are in launch limits. A runner’s job time is in Actions runners.

Limits Your Workspace Shares

Every API key in a workspace draws on the same allowance, so a busy loop on one key can push the others into 429 rate_limited. Two limits apply:
  • Rate. By default, 32 requests per second.
  • Requests in progress. How many of your requests BoxRouter works on at once. One workspace can use at most a quarter of a server’s capacity, so no single workspace fills a server.
A command that waits on its provider keeps its place until it finishes, so slow commands use up your share faster than quick ones. The count depends on the server’s size. Past either limit, the call fails with 429 rate_limited and the message names the number that applied. The request did nothing, and the error says retry: safe: the SDKs and CLI wait retry_after_seconds and resend it with the same idempotency key, up to their max_retries. Over plain HTTP, you wait and resend it. Send fewer requests at once. If your steady load needs more, contact support.

Limits Your Provider Account Sets

Your provider can enforce plan limits on the account you connected, such as concurrent sandboxes, storage, or the longest lifetime. BoxRouter may learn a limit when the provider refuses a request. Check fix and any native_code or native_message the error includes. A quota refusal returns 429 provider_quota, for example with native_code: QUOTA_EXCEEDED, but the code and status depend on the provider and operation. Its retry is after_fix: free capacity or raise the limit in the provider account. If outcome is unknown, retry is check_outcome: check whether work started before retrying or choosing another route. When the image store is full, BoxRouter frees space only by deleting the image copies it created and recorded. Delete images or templates you no longer need in your provider account.

Next Steps

Recover from Errors

Recover after a refused or failed call.

Capabilities and Isolation

Transfer sizes per provider.

Set Workspace Routing

Choose providers and what pays first.