Skip to main content

Installation

Quick start

Upload local media with client.uploads.upload_file(...) first, then pass the returned source_url below. It picks its route by size: files up to 256 KB go inline in one request (the only route available when outbound access to storage.googleapis.com is blocked), larger ones go straight to storage in resumable chunks, each retried on its own, so a dropped connection costs one chunk rather than the file. See Uploading media.

API coverage

The project loop is the recommended path for agents: create → apply_ops → preview (free, non-billable) → render (the single billable step). AsyncFramelane exposes the same resources with await. renders.create, projects.render and projects.create return a job (or project) plus an advisory ok / violations lint of the composition — RenderSubmitOut and ProjectCreated. The render is already dispatched and the project already stored when you read them, so they are a receipt, not a gate; gate on the free previews.create(render_request=..., dry_run=True) instead. Job reads (renders.get / list / cancel) return a plain JobOut with no lint. Iterate every item across all pages with framelane.auto_paginate (or auto_paginate_async):

Webhook signature verification

Async support