Limits and usage
You control three kinds of limits: how much each workspace may render, how big one document may be, and how many requests one address may send. Every limit and its default is in limits.
Change a workspace’s allowances
Section titled “Change a workspace’s allowances”Only platform administrators can change allowances. Everyone else sees them read-only.
- In Studio, choose the workspace in the workspace switcher.
- Open Manage → Render limits.
- Change Maximum outstanding renders, Renders per minute, Documents per month, File storage (MB) or Test renders per day, then choose Save limits. Leave the last three empty for unlimited, which is the default.
The change applies to the next request, with no restart. Lowering a value lets renders already accepted finish, and refuses new ones until the workspace is below the new value. Each change is recorded in the workspace’s audit history. To change allowances over HTTP, see the endpoints under platform administrators.
Allowances decide what is accepted, not how fast it runs. If a workspace often gets 429, raise
its allowances. If renders wait long before they start, add workers.
Which requests count is in render allowances.
Test renders don’t use these allowances. Every workspace has a separate test allowance of 10 outstanding and 10 per minute, or its own allowance if lower. It can’t be raised.
Suspend a workspace
Section titled “Suspend a workspace”On the same page, turn on Suspended and choose Save limits. The workspace then renders nothing and refuses its API keys, while its members can still sign in, read and export its data. Turn it off to restore the workspace. Both are recorded in its audit history.
How workspaces share workers
Section titled “How workspaces share workers”Workers take turns between workspaces: every workspace’s first waiting render runs before any workspace’s second. A workspace with a long backlog does not make the others wait behind all of it. No capacity is reserved per workspace, so when the others are idle, one workspace can use every worker.
Change document limits
Section titled “Change document limits”These apply to every render in every workspace. A document over one fails with
LIMIT_EXCEEDED, except one that needs more than
RENDER_MAX_HEAP_BYTES, which fails with RENDER_FAILED.
| Setting | What you can do | Where |
|---|---|---|
RENDER_TIMEOUT_MS (render time) |
Set 1 second to 1 hour | .env |
RENDER_MAX_PAGES, RENDER_MAX_OUTPUT_BYTES, RENDER_MAX_INPUT_BYTES |
Only lower them | compose.override.yaml |
RENDER_MAX_WASM_BYTES, RENDER_MAX_HEAP_BYTES (memory for one render) |
Raise or lower them | compose.override.yaml |
How to use compose.override.yaml is in
advanced settings. Then run
docker compose up -d.
- If you raise
RENDER_TIMEOUT_MS, raise the worker’s shutdown grace periods with it; see what happens to work in flight. - If you raise the memory settings, raise
WORKER_MEMORY_LIMITin.envtoo; see worker settings.
Request rate limits
Section titled “Request rate limits”The limit on requests each client address may send to /v1/ is API_RATE_LIMIT_PER_MINUTE, set
in compose.override.yaml (see API settings). Raise it when
many clients share one address, such as servers behind one NAT gateway.
If a CDN or load balancer sits in front of the server, all clients appear to share its address
until you set TRUSTED_PROXY_RANGES.
The other request rates, such as sign-in, imports and template
previews, cannot be changed.
Each workspace has a daily usage record. It is kept after old renders are deleted, so it is the long-term history of how much a workspace rendered.
| Counter | Counts |
|---|---|
rendersSucceeded |
Renders that produced a PDF |
rendersFailed |
Renders that failed, including timeouts |
rendersCancelled |
Renders cancelled while queued or processing |
pages |
Pages in the PDFs of succeeded renders |
outputBytes |
Bytes of the PDFs of succeeded renders |
A render is counted once, on the UTC day it finishes, test renders included. XLSX reports and string renders create no render and are not counted.
Read a workspace’s usage
Section titled “Read a workspace’s usage”In Studio, open Manage → Render limits: This month’s usage shows the current month. Over
HTTP, call GET /v1/usage with an API key that has the usage:read scope:
curl "https://pdf.example.com/v1/usage?from=2026-09-01&to=2026-09-30" \ -H "x-api-key: $API_KEY"from and to are YYYY-MM-DD days, both included, and default to the current UTC month. A
range can span at most 366 days. The response has totals for the range and a days list that
leaves out days with no usage; see the API reference.
Read every workspace’s usage
Section titled “Read every workspace’s usage”Platform administrators can call GET /v1/platform/usage with their Studio session. It takes the
same from and to, and returns one page of workspaces with usage in the range, each with the
same counters. Paging is in the API reference.