Plans and limits

Three layers apply to every call: a limit per account from its plan, request buckets per key, and credit caps per key and per project. The lowest one that applies is the one you hit.

Limits per plan

Each account has a ceiling on batches that are active at once and on batches submitted per hour, set by its plan. The plan is read from the active subscription's plan name up to the first hyphen, so studio-monthly and studio-annual are both Max (its internal plan id is studio). An account with several active subscriptions gets the most generous one.

Account limits per plan
PlanActive batchesSubmits per hour
Max2030
Pro812
Creator312
Any other active plan312
No subscription (free account)012
Administrator accounts (Myrlin operations)2060

A canceled or failed submit still counts toward the hour. A repeat of the same Idempotency-Key does not. Batches the service creates itself, such as the parts of a split manifest and free fix batches, do not count as submits.

Request buckets per key

Per-key request buckets
BucketLimitUsed by
read240 a minuteGET routes
write60 a minutePUT and cancel, quote, lint, reviews, notifications writes
upload8 an hourInput and evidence ZIP uploads
submit12 an hourStarting a batch

A signed-in session is counted per user in the same buckets. Over a bucket, the answer is 429 rate_limited with a Retry-After header. A single key can submit at most 12 batches an hour even where the plan allows more; the plan limit and the key bucket both apply, and the lower one binds. GET /pricing reports both for your account.

Separately, 20 requests with unknown keys from one address within 10 minutes are answered 429 too_many_failed_auth.

Active batches

Active means queued, running, packaging, canceling. A new submit over the plan limit answers 429 active_batch_limit with a Retry-After of 60 seconds. The key's own maxActiveBatches (default 20, at most 20) answers the same code. A batch frees its slot when it ends, which no request can predict, so the retry time is a polite interval, not a promise.

Credit caps and project budgets

A priced quote is held against three ceilings when you submit. The quote response carries caps, which shows what would bind, so you can split a batch before you submit it.

Credit ceilings
CeilingWhere it is setRefusal
maxCredits on the submitYou, on every submit. The quote must fit under it.402 credit_ceiling_exceeded
Per-batch cap of the keyThe key's perBatchCreditCap, 0 if omitted402 key_batch_credit_cap
Daily cap of the keyThe key's dailyCreditCap, 0 if omitted. The day is a UTC day.402 key_daily_credit_cap
Project budgetDefault 500 credits per project. Set it with budgetCredits on PUT /projects/{slug}. Above 1,000 needs an administrator account.402 project_budget_exceeded

Credits held by a batch count against the budget and the daily cap until the batch ends. Deterministic work costs 0, so these ceilings only matter for priced lanes. See Pricing per lane.

Size and retention limits

Size and retention limits
WhatLimit
A manifest in one batch8 MB, 25,000 files, 4,000 compute units, 240 characters per path
A larger manifest where streamlining is on64 MB, 200,000 files, 32,000 compute units; it is split into at most 128 child batches
An input ZIP32 MB compressed, 256 MB expanded, 30,000 entries, 8 MB per entry
A PNG input16,384 pixels a side and 4,194,304 pixels in all
A result ZIP128 MB. Larger results answer 409 result_too_large; split the manifest.
Input sets are kept30 days
A batch expires14 days after it is created
A result ZIP is kept30 days. A download link from result-url lasts at most 15 minutes.

Handling a 429

These codes use 429. Each carries a Retry-After header in seconds. Wait that long, then repeat the same request.

429 codes
CodeCause
rate_limitedA key bucket is used up.
plan_submit_limitThe account used its plan's submits for the hour. The wait is until the oldest counted submit leaves the hour.
active_batch_limitThe account or the key has the most active batches it may have.
too_many_failed_authToo many requests with unknown keys from this address.