MintRender
All docs pages

Rate limits and plan limits

Size limits keep each render inside the memory of one Cloudflare Worker. Over a rate limit you get 429 with Retry-After. Over a size limit you get 400 or 413 with the limit in the message.

Limits by plan

FreeStarterProBusiness
Credits a month1002,0005,00025,000
API calls a minute, per key30120300600
Jobs running at once52050100
Templates550No limitNo limit
AI templates a month330100500
Members11310
Files kept30 days365 days365 days365 days

Rate limits

  • Each API key may make the plan's number of calls in each 60 seconds, on every route. An MCP connection has the same limit as a key.
  • Over the limit, the answer is 429 rate_limited with Retry-After: 60.
  • POST /v1/preview with a key counts toward the key's limit. Without a key it allows 30 a minute per IP address.
  • Signed link views are not counted per key.
  • In the editor, a signed-in person has a limit of their own: 300 requests a minute on every plan. API keys keep the plan's limit above.
  • Many renders of one workspace at the same moment can get 429 busy with Retry-After: 1.
HTTP/1.1 429 Too Many RequestsRetry-After: 60 {"error": {"code": "rate_limited", "message": "this key may make 30 requests a minute on the Free plan", "request_id": "req_…"}}

Running jobs

Jobs are async renders (queued or rendering) and batches (running or making their ZIP). A batch is one job, whatever its rows. Sync renders and signed links are not jobs. When the workspace has as many jobs as its plan allows, a new job answers 429 rate_limited with Retry-After: 10.

Request limits

LimitValueOver it
POST /v1/render body1 MB413 too_large
POST /v1/batch body12 MB413 too_large
Template routes body (a scene)2 MB413 too_large
POST /v1/preview body1 MB413 too_large
metadata of a render4,096 characters of JSON400 invalid_param
Sizes in one render or batch20400 invalid_request
Sync renderat most 5 sizes and, for a PDF, at most 10 pagesAnswered as a job (202)
Rows in a batch10,000400 invalid_request (JSON rows) or invalid_csv (a CSV)
One batch row32,768 characters of JSON400 invalid_param
Files in a batch ZIP65,535400 invalid_param
Pages of a PDF from a signed link10400 too_many_pages
A value in POST /v1/links2,048 characters400 invalid_request
Idempotency-Key255 visible ASCII characters400 invalid_request
webhook_url and webhook URLs2,048 characters400 invalid_request
Preview image600 px on its long sideMade smaller
AI description3 to 500 characters400 invalid_request

File and image limits

LimitValue
Uploaded image20 MB and 16 megapixels
Uploaded CSV5 MB
Image at a URL in data or a template20 MB and 16 megapixels; PNG, JPEG, GIF or WebP
Different image URLs in one render20 (400 limit; upload more images as assets)
Uploaded files in one workspace500 MB on Free, 10 GB on paid plans (402 plan_limit)
CSV at csv_url5 MB
Time for a URL to answer10 seconds
Redirects a URL may make3 (webhooks: none)

Output limits

LimitValueOver it
Pixels of one image (width × height × scale²)8,294,400 (3840 × 2160)400 limit
Decoded input images in one render, together16 megapixels400 limit
Memory one render may needabout 96 MB400 limit
Chinese, Japanese or Korean fonts in one render1400 invalid_param
Pages of a PDF100400 invalid_scene

A 2000 × 2000 template at scale 2 is over the pixel limit. A PDF and an SVG are vector files, so the pixel limit applies only to their image parts.

Template limits

LimitValue
Canvas width and height1 to 10,000 px
Pages100
Sizes, with main20
Layers in the whole scene2,000
Groups inside groups8 deep
Characters in one text layer10,000
Characters in all text layers together100,000
Chart series20
Chart values or points per series, and labels1,000
QR code value2,000 characters
Barcode value80 characters
Fonts loaded ahead (fonts)20

Every field's own range is on the Templates and JSON page.

Seen MintRender used for content that breaks our terms? Report it. Questions about the API: support@mintrender.com, with the request id.