What is Framelane?
Framelane exposes your video production pipeline as a REST API. Submit a composition, get back a rendered video. Run transcription as a standalone async task when you need text out of audio or video. Every operation follows the same pattern:- Polling —
GET /v1/renders/{id}orGET /v1/tasks/{id}untilstatusiscompletedorfailed - Webhooks — subscribe to
render.completed/task.completed(recommended for production)
- Local file —
POST /v1/uploads - Remote URL you don’t control (public link or cloud share link) — set
ingest_external: trueon the render and pass the URL as an elementsource_url; Framelane copies it into your workspace first - Your own CDN — pass the URL directly as
source_url(no upload or copy)
veryfast). Renders with motion_blur re-render every frame samples times with CPU-side accumulation — expect roughly samples× the render time.
Key Concepts
Renders
Compose and render video from a timeline of five element types — video, audio, text, image and vector
shape (SVG path, hex-or-gradient fill, stroke, dash, morph, and draw-on trim) — plus transitions, transform groups with stack layout and nesting, and custom_animations: inline keyframe registries for motion the preset catalog doesn’t name.Capabilities
GET /v1/capabilities — unauthenticated. The machine-readable catalog every agent should read first: flat enum lists, element_schemas (per-element JSON Schema), and request_schema (groups, custom_animations, motion_blur, background_gradient, transitions).Preview
Validate a composition for free, or render a cheap frame, clip, or whole-timeline contact sheet before spending a full render.
Tasks
Standalone AI jobs: transcribe audio or video to text with word-level timestamps.
Webhooks
Subscribe to job lifecycle events. HMAC-signed payloads with a 7-attempt retry schedule and dead-letter queue.
Agent Skills
Loadable playbooks for common agent workflows — composable, tested, ready to use in any MCP-capable agent framework.
Playground
Build a composition and preview it in the browser with WebGPU — the same renderer as the API — then copy the exact render request.

