1. Get your API key
Humans: sign up at console.framelane.io and copy your API key from Settings → API Keys. Agents (no human, no browser): provision a key over the API.POST /v1/signup returns a key immediately and emails a 6-digit code; read it from the inbox you signed up with, then confirm it with POST /v1/signup/verify to activate the key. Until you verify, the key returns 403 email_not_verified on every call. See Self-provisioning for agents.
2. Upload your input file
If your video is already hosted at a public HTTPS URL you control, skip to step 3 and use that URL assource_url.
To use a file at a public URL you don’t control, pass a direct link to it as the element source_url — the render engine fetches it at render time, and video or audio is probed for its duration first so you can omit out_point. Share-page links (Drive, Dropbox, YouTube) are not direct file URLs.
For a local file, request an upload slot and PUT the bytes to GCS:
source_url from the upload response in the render request.
For a small local file (under 256 KB — a logo, a crest, an icon) you can skip the
second step entirely: pass the bytes as base64 in content_base64 on the first call and
it stores them, returning "uploaded": true. That route makes no outbound request of
your own, so it also works from a sandbox that blocks storage.googleapis.com. See
Uploading media for that, the supported MIME types and the
error codes.
3. Submit a render
Send aPOST /v1/renders request with your composition. Replace source_url with your upload URL or any public HTTPS URL:
id — you need it to poll status or download the result.
4. Wait for completion
Option A — Poll job status (simplest for scripts)
CallGET /v1/renders/{id} until status is terminal (completed, failed, or cancelled):
status is queued or processing and progress_percent updates over time. When status is completed, the response includes output.url:
output.url is the field to use — download the finished video from it. The width, height, duration, and size_bytes fields are reserved and currently return null; the output dimensions and duration match your render request, and the byte size is available from the download response’s Content-Length.GET /v1/tasks/{id}.
Option B — Webhooks (recommended for production)
Register a webhook endpoint and Framelane calls it when the render completes:5. Download the artifact
Theoutput.url in the job response or webhook is a signed CDN URL. You can also request a fresh download redirect:
Next steps
Uploading media
Local files via signed GCS upload, or remote URLs with
ingest_external.Run an AI task
Transcribe audio or video to text with word-level timestamps.
Verify webhook signatures
Validate HMAC signatures to ensure payloads come from Framelane.
API Reference
Browse all endpoints generated from the OpenAPI spec.

