Retrieve the status and result URL of an async render job.
GET
/v1/renders/:idAuth requiredResponse — completed
json
{
"id": "d1e2f3a4-5b6c-7d8e-9f0a-b1c2d3e4f5a6",
"status": "succeeded",
"format": "pdf",
"scale": "1",
"result_url": "https://cdn.pixldocs.com/renders/...",
"error": null,
"credits_used": 1,
"queued_at": "2026-07-08T12:34:56Z",
"started_at": "2026-07-08T12:34:56Z",
"finished_at": "2026-07-08T12:34:58Z"
}Response — still running
scale comes back as a string, not a number — compare it as "1". error is present and null on success, so you can read it without checking for the key first.
json
{ "id": "d1e2f3a4-...", "status": "queued", "finished_at": null }json
{ "id": "d1e2f3a4-...", "status": "processing", "started_at": "2026-07-08T12:34:56Z", "finished_at": null }Response — failed
json
{
"id": "d1e2f3a4-...",
"status": "failed",
"error": "Font 'Custom Font' failed to load",
"finished_at": "2026-07-08T12:34:58Z"
}Status values
queued → processing → succeeded or failed. Poll the job until it leaves the first two. Treat the result_url as the thing with a lifetime, not the job record: download the file when the job succeeds rather than assuming the link will still serve bytes days later.
Jobs are scoped to the workspace that owns the API key — an unknown, expired or foreign job id all return the same 404 render_not_found, so a key cannot probe for jobs it does not own. Branch on that code, not on not_found.