Check a job
GET /api/v1/job/:jobId tells you whether an image is ready yet.
curl https://pixloom.dev/api/v1/job/3f6c2a10-... \
-H "Authorization: Bearer sk_live_..."{
"jobId": "3f6c2a10-...",
"status": "completed",
"imageUrl": "https://...",
"imageId": "b71e...",
"createdAt": "2026-09-15T12:00:00.000Z",
"completedAt": "2026-09-15T12:00:14.000Z"
}Works with either kind of key, so the script tag can poll its own jobs from the browser. There is no rate limit on polling, but once a second is plenty.
Status values
| Status | Meaning |
|---|---|
queued | Accepted, not started. |
processing | The model is working. |
completed | imageUrl and imageId are set. |
failed | error says why. Start a new generation. |
Fields appear only once they have a value. A queued job returns jobId, status and createdAt and nothing else, so check for imageUrl rather than assuming it is there.
Caching
While a job is in flight the response is no-cache. Once it is completed or failed it becomes cacheable for a minute, which keeps a page full of images from hammering the same job.
Jobs expire
Jobs live for an hour. After that this endpoint returns 404, and so does a job belonging to a different account. The image itself is not lost: it stays in your dashboard and at /api/v1/image/:id forever. Store the imageId when a job completes and you never need the job again.
Responses
| Status | Body |
|---|---|
200 | The job, as above. |
401 | Missing or invalid key. |
403 | Account not approved. |
404 | { "error": "Job not found" }. Unknown, expired, or not yours. |