Submit a render job
Enqueue a new render job on the GPU engine. The job moves through queued → processing → completed / failed asynchronously. Attach a webhook URL or register workspace-level webhooks to receive status updates.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Body
Body for POST /v1/renders.
Defines the composition to render: dimensions, output format, timeline elements, and optional transitions. The render engine produces a single video artifact.
Output width in pixels. Must be set together with height or both omitted.
16 <= x <= 81921920
Output height in pixels. Must be set together with width or both omitted.
16 <= x <= 81921080
Total composition duration in seconds. Inferred from elements when omitted.
x > 015
Frames per second. Defaults to 30 when omitted.
1 <= x <= 24030
Container and codec for the output file.
mp4, webm, mov, gif, png, jpg "mp4"
Custom filename for the artifact (without extension). Auto-generated when omitted.
"my-render"
RGBA background color in hex format (#RRGGBBAA).
^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"#000000ff"
URL of an image to use as the composition background.
1 - 2083"https://cdn.example.com/bg.jpg"
When true, produce an alpha-channel (transparent background) output. Requires output_format=webm or output_format=mov.
false
Ordered list of timeline elements (video, image, text, audio, etc.).
- VideoElement
- AudioElement
- TextElement
- ImageElement
- CompositionElement
Transition effects applied between consecutive elements.
Arbitrary key-value pairs echoed back in all webhook payloads.
{ "project_id": "proj_123" }Per-request webhook URL. Overrides workspace-level webhooks for this job only. Receives render.completed, render.failed, and progress events.
1 - 2083"https://app.example.com/hooks/framelane"
Controls handling of source URLs that are not already hosted by Framelane. When true, such public files are copied into Framelane storage before rendering: the job starts in the ingesting state and moves to queued once the copy completes (you receive an asset.ready webhook per file). When false, the URL is passed straight to the renderer (the legacy behavior; video/audio still require an explicit out_point). Defaults to the workspace setting when omitted.
true
Response
Idempotent replay — same Idempotency-Key reused.
A render job or AI task.
Unique job ID. Prefix indicates type: render_ or task_.
"render_01J8QR2K5VKDGN2T4FBM3CZYX7"
Whether this is a render or a task.
render, task "render"
ID of the workspace that owns this job.
"ws_01J8QR2K5VKDGN2T4FBM3CZYX8"
Current lifecycle state: queued → processing → completed / failed / cancelled.
ingesting, queued, processing, completed, failed, cancelled "queued"
ISO-8601 UTC timestamp when the job was created.
ISO-8601 UTC timestamp of the last status change.
For task jobs only — the specific AI operation.
remove_background, gaze_redirect, super_resolution, transcribe "transcribe"
0–100 progress indicator updated by the render engine.
0 <= x <= 1000
Current processing phase within a job.
downloading, compositing, encoding, uploading "compositing"
Populated once status == completed. Contains the signed artifact URL.
Populated when status == failed. Contains a structured error code.
Caller-supplied key-value pairs echoed back on every webhook and response.
{
"project_id": "proj_123",
"user_ref": "usr_abc"
}ISO-8601 UTC timestamp when the job reached a terminal state.

