Limits and usage
Your assigned plan and deployment limits both apply. Check credits, storage, bandwidth and per-request limits before processing files.
On this page
Find your assigned limits
Open your plan and limits. Public offers, when published, are shown on the pricing page; your effective assignment can include custom terms. Operation availability and remote URL input depend on your account’s active entitlement, not the plan name.
Owner-wide quotas apply across projects and to both bearer and API-key requests. They cover credits, transformations, stored bytes and bandwidth, as well as plan upload/pixel limits. The service can reserve capacity before starting work, so an output byte cap larger than your remaining allowance may be rejected even if the eventual image would be smaller.
Usage periods come from the server, with their own IDs and exact start/end times. Free and monthly paid allowances reset monthly from their activation anchors. Annual paid allowances are provided in full upfront and reset annually. Historical periods retain their own budgets; stored capacity carries across periods. Paid terms require manual payment confirmation and renewal; there is no automatic collection. Canceling at term end or undoing cancellation does not reset usage or extend the term.
System ceilings and configurable limits
| Constraint | Backend ceiling / behavior | Deployment distinction |
|---|---|---|
| Upload bytes | Hard maximum 104857600 bytes (100 MiB) | Configured and plan limits may be lower. |
| Decoded pixels | Hard maximum 25000000 aggregate pixels | All animation frames count; plan limits may be lower. |
| SVG bytes | Hard maximum 1048576 bytes (1 MiB) | Strict input validation also applies. |
| Output dimensions | Hard maximum 10000 per axis | Configured maximum and total pixel budget also apply. |
| Output bytes | Hard maximum 104857600 bytes; configured default 10485760 (10 MiB) | maxOutputBytes may lower, never raise, the configured cap. |
| Animation frames | Configurable, default 100, maximum 1000 | A system setting, not a promised plan allowance. |
| Cache lifetime | Configurable, default 86400 seconds, maximum 2592000 | Expiry prevents serving; physical cleanup is separate. |
| Remote fetch | Default deadline 10000 ms; default redirect ceiling 3 | Operator settings can differ; every destination must be allowed. |
What consumes usage
| Operation | Current accounting |
|---|---|
| Upload | Reserves original storage before receipt; actual stored bytes count. |
| Transformation miss | One transformation and one processing credit; reserves output bandwidth and, for stored modes, storage up to the output cap. |
| Remote fetch | One additional credit, including before a remote cache hit. |
| Stored cache hit | Output bandwidth; avoids repeating transformation processing. |
| Authenticated derivative 304 | Zero output bandwidth. |
| QR / barcode | One credit per generation; ephemeral output. |
| PDF info / extract | One credit per operation. |
| PDF render | One credit per selected page (minimum one). |
| PDF merge | Two credits per merge. |
| Media deletion | Refunds storage, not historical credits or bandwidth. |
Rate limits and capacity
The project limiter uses the account plan’s requests-per-minute value with a 60-second in-process window. It is distinct from owner-wide usage quotas, global request limits and processing concurrency. No fixed public request rate is promised here.
RATE_LIMIT_EXCEEDED is HTTP 429. Exhausted processing concurrency can return IMAGE_BUSY (503); quota or entitlement denial is generally PLAN_LIMIT_EXCEEDED (403). Use bounded retries only for temporary rate/capacity conditions. Lower maxOutputBytes when you deliberately need a smaller enforced output ceiling.
Use your own account metrics and request IDs to diagnose failures. Cache expiry does not immediately release storage, and downloaded bytes are charged on admission even if the client disconnects.
Documentation reviewed 2026-10-03 against development backend e298ec7. Verify your deployment’s API origin and limits before integrating.
