Upload and ingest
Validation
Render and completion
Auto transitions frombooting → rendering → completed are handled by Renderjuice once render starts.
Ingest flow
Creating a job is not the first API call.- Call
POST /api/external/v1/uploadsto request a presigned upload URL. - Upload a small
.blendor.zipfile directly to object storage. - Call
POST /api/external/v1/jobswith theslugreturned by the upload endpoint. - Renderjuice creates a job in
createdstatus.
Status flow
- Upload step before job creation: request upload URL → upload file → create job
created→validating→validated→booting→rendering→finalizing→completed- Failure branch: any stage can move to
failed. - Cancel branch: cancel is accepted until work finishes; canceled jobs remain
canceled.
Allowed actions by status
- Create job (
POST /api/external/v1/jobs): accepts a previously returned uploadslugand creates a job increatedstatus. You do not need to send the filename again. - Validate (
POST /api/external/v1/jobs/:id/validate): only fromcreated; returns 400 if already validating/validated. - Render (
POST /api/external/v1/jobs/:id/render): call aftervalidated. A missing or emptyrequestedRenderConfigyields 400. - Cancel (
POST /api/external/v1/jobs/:id/cancel): allowed while the job is in progress; expect failure oncecompleted/failed/canceled. - Progress (
GET /api/external/v1/jobs/:id/progress,GET /api/external/v1/jobs/progress): available anytime; returns current counters or an empty array when nothing is running. - Downloads (
GET /api/external/v1/jobs/:id/downloads): returns download URLs once output is ready; earlier states respond with empty arrays.
Status reference
created: upload already completed and job record exists; no validation/render started.validating→validated: validation in progress/finished.booting: workers are provisioning.rendering: frames are processing.finalizing: outputs are being packaged.completed: outputs are ready for download.failed: validation or render failed; checkfailedReason.canceled: user/system canceled the job.
Webhooks
- Currently documented:
onRenderCompletefires when a render finishes successfully.

