Skip to main content
The Framelane API is organized around predictable, resource-oriented REST. It uses standard HTTP verbs, returns JSON for every response, and authenticates with a Bearer API key. The endpoints in this reference are generated from our OpenAPI specification and include an interactive playground — set your API key once and send live requests from the browser.

Base URL

All requests use HTTPS. All request and response bodies are JSON encoded with snake_case field names.

Discovery

GET /v1/capabilities is unauthenticated — an agent can read the whole surface before it holds a key. It returns the flat enum catalogs (effects, motions, transitions, blend modes, easings, formats), element_schemas (the full JSON Schema of every element type), and request_schema (the composition-level body: groups, custom_animations, motion_blur, background_gradient, transitions, canvas and output settings) — all generated from the same models the API validates against, plus limits, rate_limits, and the self-serve onboarding loop.

Authentication

Every request must include your API key as a Bearer token, except POST /v1/signup, POST /v1/signup/verify, POST /v1/auth/sync, GET /v1/capabilities, and the system routes (/v1/health, /v1/ready, /v1/version):
Create and manage keys in the console under Settings → API Keys. See Authentication for rotation and storage guidance.

Get an API key

Sign up and generate your first key in under a minute.

Provision a key programmatically (agents)

No human, no browser: POST /v1/signupPOST /v1/signup/verify.

Asynchronous jobs

Renders and tasks are long-running. Submitting one returns 202 Accepted immediately with a job object — you then wait for completion by polling the job (GET /v1/renders/{id} or GET /v1/tasks/{id}) or by subscribing to webhooks (recommended for production).

Idempotency

POST endpoints that create jobs accept an Idempotency-Key header. Reusing a key returns the original job instead of creating a duplicate; reusing a key with a different body returns 409 Conflict.

Pagination

List endpoints use cursor-based pagination with limit and cursor query parameters and return a consistent envelope:
Pass next_cursor back as the cursor parameter to fetch the next page. When has_more is false, next_cursor is null.

Errors

Errors return the appropriate HTTP status code and a structured envelope with a machine-readable code:
See Errors for the full list of codes and Rate Limits for throttling behavior.

SDKs

Official SDKs wrap authentication, polling, and webhook verification:

TypeScript SDK

npm install @framelane/sdk

Python SDK

pip install framelane

Resources

Renders

Compose and render video from a timeline of elements.

Preview

Validate for free, or preview a frame, clip, or contact sheet before a full render.

Tasks

Standalone AI jobs. Transcription with word-level timestamps and speaker labels.

Uploads

Request signed upload slots for local media files.

Webhooks

Subscribe to job lifecycle events with signed, retried delivery.