docs / errors
Errors
Every error has the same shape and an X-Request-Id header.
{ "error": { "code": "validation_error", "message": "The request has invalid fields",
"details": [{ "field": "variables.headline", "code": "too_long", "message": "…" }],
"request_id": "…" } }| Status | Codes | Meaning |
|---|---|---|
| 401 | unauthenticated, invalid_api_key, api_key_revoked | No key, a wrong key, or a revoked key. |
| 403 | insufficient_scope, forbidden | The key lacks the scope, or a dashboard-only route was called with a key. |
| 400 / 413 / 415 / 422 | invalid_json, payload_too_large, unsupported_media_type, validation_error | Fix the request. validation_error lists every field problem in details. |
| 409 | idempotency_key_reused, render_in_progress | Same Idempotency-Key with a different body; or deleting a render that is still running. |
| 429 | quota_exceeded, account_daily_limit, rate_limited, too_many_pending | Monthly cap reached, more than 60 creates a minute, or 100 renders already waiting. |
| 404 / 410 | not_found, output_deleted | Unknown id (also for other accounts’ ids) or a file past retention. |
| 503 | queue_full, renders_paused, service_monthly_limit, service_daily_limit, storage_full | A shared limit is reached, or the operator paused rendering. Retry after the Retry-After seconds. Nothing was charged. |
| 503 | renderer_busy, previews_used_up | Previews and the demo only. Retry within about 20 seconds, or tomorrow if previews are used up for the day. Queued renders are not affected. |
| 500 | internal_error | Our fault. Quote request_id. Nothing was charged. |
Render failures
These appear on the render object, not as HTTP errors: text_overflow, image_url_blocked, image_fetch_failed, image_too_large, image_unsupported, pdf_page_count (input; not retried, not counted) and render_failed, worker_lost (ours; retried, not counted).