projects

Render the project head

Submit the current project head to the render engine as a standard (billable) render. Idempotency-Key note: reusing a key returns the original job unconditionally -- the body (here, the project head at submission time) is not compared, so a key reused after the project changed still replays the earlier job rather than 409ing. The response carries an ADVISORY ok + violations[] lint of the head; the render is dispatched either way.

post/v1/projects/{project_id}/renders

Request

  • Base URL: https://api.framelane.io
  • URL: https://api.framelane.io/v1/projects/{project_id}/renders
  • Auth: HTTP bearer

Path parameters

project_idstring required

Headers

Idempotency-Keystring nullable

Response

Successful Response

idstring required

Unique job ID. Prefix indicates type: render_ or task_.

kind'render' | 'task' required
is_previewboolean

True for a cheap preview render. Previews are not billed and are excluded from the renders list.

editor_urlstring nullable

Open the project this job was submitted from in the authenticated console. Absent for a job with no project.

task_type'transcribe'

The AI task types the API offers.

Values:

  • transcribe — Speech-to-text transcription (via AssemblyAI) with optional analysis. Returns the transcript inline on the task's result object — there is no file artifact, so output is null and /v1/tasks/{id}/download returns 404.
workspace_idstring required

ID of the workspace that owns this job.

status'ingesting' | 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled' required

Values:

  • ingesting — External source files are being probed for duration before the render is queued.
  • queued — Accepted and waiting for a worker to pick it up.
  • processing — Actively rendering or processing.
  • completed — Finished successfully; the output artifact is available.
  • failed — Terminated with an error (see error).
  • cancelled — Cancelled by the caller before completion.
progress_percentinteger

0–100 progress indicator updated by the render engine.

progress_stage'downloading' | 'compositing' | 'encoding' | 'uploading'

Values:

  • downloading — Fetching source media.
  • compositing — Compositing the scene on the GPU.
  • encoding — Encoding the output video.
  • uploading — Uploading the finished artifact to storage.
resultobject nullable

Structured JSON result for tasks that return data rather than a file — transcribe returns the transcript here (text, words, utterances, and any requested analysis). Populated once status == completed; null for renders and for any job whose only artifact is the file at output.url.

metadataobject

Caller-supplied key-value pairs echoed back on every webhook and response.

created_atstring date-time required

ISO-8601 UTC timestamp when the job was created.

updated_atstring date-time required

ISO-8601 UTC timestamp of the last status change.

completed_atstring date-time nullable

ISO-8601 UTC timestamp when the job reached a terminal state.

okboolean required

Advisory — the render was still accepted and dispatched. False means the composition has error-severity findings that will likely make the output wrong (a self-transition, a fully off-canvas element); it does NOT mean the submission was refused. Everything that actually blocks a render is a 422 before you ever see this field.

Example response

{
  "id": "render_01J8QR2K5VKDGN2T4FBM3CZYX7",
  "workspace_id": "ws_01J8QR2K5VKDGN2T4FBM3CZYX8",
  "output": {
    "url": "https://cdn-user.framelane.io/render_01J.../output.mp4",
    "width": 1920,
    "height": 1080,
    "duration": 15.3,
    "size_bytes": 12582912
  },
  "result": {
    "language_code": "en",
    "text": "Welcome back to the show."
  },
  "error": {
    "message": "Source URL returned 404."
  },
  "metadata": {
    "project_id": "proj_123",
    "user_ref": "usr_abc"
  },
  "ok": true
}

Changes

No recorded changes to this operation across all 1 revision of this API.