Skip to content

Levels and limits

Every CoAI Sandbox account has a level. A new account starts at A0 and moves up automatically after payments.

A0 A1 A2
Running at the same time 5 20 100
New sandboxes per second (burst) 1 (5) 5 (20) 20 (50)
New sandboxes per UTC day 300 no limit no limit
API requests per second per key 10 50 200
Longest timeout 30 minutes 6 hours 24 hours
Longest running time 30 minutes 6 hours 24 hours
Internet access allowlist only allowlist only (open internet access is planned) allowlist only (open internet access is planned)
Outbound speed per sandbox 10 Mbit/s 20 Mbit/s 20 Mbit/s
New outbound connections per second / open at once 10 / 64 30 / 256 30 / 256
Outbound traffic per UTC day 1 GiB 50 GiB 200 GiB
Ports reachable from the internet no yes yes
Daily spending limit of a new account — $20 a day for the first 7 days —

A0 → A1: one paid Add Funds deposit of at least $10 that was not refunded in full, or $10 of paid settlement invoices. A1 → A2: at least $50 of Add Funds deposits (less refunds) and paid settlement invoices together, the first payment at least 30 days old, and no high or critical abuse signal in the last 30 days.

  • Timeout and running time. The longest timeout is what Sandbox.create(timeout=…) and set_timeout accept; a larger one is refused with 400 timeout_too_long. The longest running time counts from when the sandbox started: extending the timeout or connecting again never takes a sandbox past it.
  • Creating too fast is answered with 429 create_rate_limited and a Retry-After: the SDK waits and retries by itself. Too many running sandboxes (429 sandbox_concurrency_limit) and the daily number of new sandboxes (429 daily_create_limit) are not retried.
  • Network. For now every level reaches only the allowlist of the network page: A1 and A2 have the same allowlist-only internet access as A0, with higher speed and connection limits. Open internet access for A1 and A2 is planned. Outbound e-mail ports are blocked at every level.
  • Public ports. At A0 the ports of a sandbox need its traffic access token. Asking for public access (allow_public_traffic=True, allowPublicTraffic: true) is not refused: the sandbox is created as without the option, with the token required. The Python SDK sends that option whenever you set network=, so the outbound lists work at A0 too. Send the token in the e2b-traffic-access-token header (sandbox.traffic_access_token, sandbox.trafficAccessToken).

Spending caps

In the console you can set a daily and a monthly spending cap. They count your usage per UTC day and per UTC calendar month. At A1 the daily limit of the first days in the table applies as well: your own cap can only be lower. When a cap is reached, new sandboxes are refused with 429 spend_cap_reached and running ones are stopped after the grace period of the pricing page.

Moving down and freezes

A refund of a payment can move an account back down. An account can also be frozen (403 account_frozen): after a disputed payment, an unpaid settlement invoice that was cancelled again, a negative balance, or under the Acceptable Use Policy. A frozen account cannot create sandboxes, and its running sandboxes are stopped; contact support.