Docs

Limits and usage

Each run gets 512 MB of memory, 2 CPUs, 16 processes and up to 30 seconds, with no network. Your account has a monthly allowance and per-minute, pending and running limits set by its plan, and GET /api/usage/ shows where you stand.

Code and stdin must be UTF-8 strings without NUL characters; each is limited to 100,000 encoded bytes. Output floods exceeding 8 MB across both streams are stopped with exit code 153 (signal 25), while retained output stays capped at 64 KB per stream. HTTP 429 indicates account limits or execution capacity; retry with backoff. Timing and memory figures are informational and may be unavailable after a forced stop.

Memory512 MB per execution
CPU2 cores
Timeout30 seconds
Max Processes16 running at once; more stops the run with exit code 71
Writable Storage256 MB workspace + 128 MB temporary files, within the memory limit
Submission Rate30 per minute per account across API keys and widgets; higher on paid plans
Pending Submissions8 per account, queued or running; higher on paid plans
Runs at Once2 per account in a sandbox at the same moment; later runs wait their turn, and a synchronous request that finds them all busy gets 429; higher on paid plans
Monthly Submissions100,000 per account on Free, up to 4,000,000 on paid plans (see pricing), per calendar month in UTC; runs we could not start are not counted
Per-Key Monthly LimitOptional, set by you on each API key or widget key in the dashboard; stops that key only
NetworkDisabled (no outbound access)
Code Size100 KB max
Input Size100 KB max
OutputUp to 64 KB per stream; longer output is cut and truncated is true
Sync ConcurrencyLimited per server; returns 429 when at capacity
WebSocket Rate1 execution per second per connection

Check limits and usage

GET /api/limits/ the limits above as JSON; no key needed
GET /api/usage/ your account's runs this month, its limits, and the calling key's own count and limit; send your API key
GET /api/usage/
{
  "month": "2026-10",
  "submissions": 1520,
  "monthly_limit": 100000,
  "remaining": 98480,
  "resets_at": "2026-11-01T00:00:00Z",
  "submissions_per_minute": 30,
  "pending_submissions": 8,
  "running_submissions": 2,
  "key": {
    "submissions": 1200,
    "monthly_limit": 5000,
    "remaining": 3800
  }
}

Over the monthly limit, runs answer HTTP 429 until the allowance resets at the start of the next month (UTC). Requests rejected for a limit or a bad payload are not counted. The dashboard shows the same count.

Per-key limits and usage emails

  • Give any API key or widget key its own monthly limit on the API keys or Widgets page of the dashboard. Once the key reaches it, runs through that key answer HTTP 429 (or a codeoutput error in the widget) until the next month; your other keys keep running. Use it to cap an AI agent, a public widget or a customer's integration.
  • A key's limit works inside your account's allowance, never above it. Leave it empty for no limit of its own.
  • We email the account's address the first time in a month that usage reaches 80% and 100% of the account's allowance, and of each key's own limit.
  • In GET /api/usage/, key counts runs through the key you called with this month; its monthly_limit and remaining are null when the key has no limit. Calls through RapidAPI don't include key.

Questions

What happens when I reach a limit?
Requests over a limit get HTTP 429 and nothing runs, so nothing is billed. The monthly allowance resets at the start of the next month (UTC).
Can I limit a single API key?
Yes. Give any API key or widget key its own monthly limit in the dashboard. Once it's reached, that key gets 429 until the next month, and your other keys keep running.
Do paid plans raise the limits per run?
No. Every plan has the same 512 MB and 30-second limits per run; paid plans raise the runs a month, submissions a minute, runs at once and tests per request.