How renders work
- Provide your media (if needed) — pass a
source_urlyou already host on a CDN, upload local files withPOST /v1/uploads, or have Framelane copy a public URL or cloud share link into storage for you by settingingest_external: trueon the render. See Uploading media. - Submit a
POST /v1/rendersrequest with your composition — dimensions, elements, transitions, and output settings. - Job accepted — the API returns
202 Acceptedwith arender_*job ID andstatus: queued. When the render copies in external files (ingest_external), it starts asingestingand transitions toqueuedautomatically once every file is ready. - GPU engine processes — the Framelane Renderer runs on dedicated GPU hardware.
- Wait for completion — poll
GET /v1/renders/{id}untilstatusis terminal, or receive arender.completed/render.failedwebhook. - Download — use
output.urlfrom the job response, orGET /v1/renders/{id}/downloadfor a fresh signed redirect.
Job lifecycle
Idempotency
Every render submission should include anIdempotency-Key header to safely retry without double-submitting:
- Same body →
200 OKwith the existing job (no new charge) - Different body →
409 Conflict
Endpoints
Minimal example
The correct field names are
time (start on the output timeline), duration (how long the element is visible), and text_color (not color). Using wrong field names results in a 422 validation error.
