Skip to main content

Get timeline


Returns the full timeline structure: scenes, audio tracks, overlays, and captions.

Response 200

Get assets


Returns all generated assets (images, videos, audio) for the project. Each asset has a ref, an 8-character short identifier that links assets to scenes on the timeline.

Response 200

List variations


Returns all variations for a project. Variations are read-only via the API. Create, switch, and delete them by sending messages to the agent.

Response 200

To create or switch variations, send a message to the agent:
Use GET /projects/:id/timeline?variation_id=var_002 to inspect a non-active variation’s timeline without switching.

Get agent memory


Read the agent’s working memory for this project.

Response 200

The agent maintains three memory sections per project:
  • Creative — Markdown of the locked creative direction and chosen production settings
  • Todos — Checklist of what’s done and what’s next
  • Assets — Structured ledger of characters, products, environments, and references the agent is using
Memory is per-project (shared across all variations). The agent condenses automatically as sections grow. Separately, learned preferences persist across all projects. These are patterns the agent picks up from your feedback about style and production choices. Manage these via the account endpoints.

Render video


Trigger a final video render. Composites all timeline content (scenes, audio, overlays, captions) into a single video file. Only valid when status is idle.

Request body

Response 202

Poll the project status. When rendering completes, the status returns to idle and assembled_url contains the video URL.
Rendered video URLs expire after 24 hours. Create a share link for a permanent URL, or render again.

Create a permanent, public URL for a rendered video. Requires a completed render.

Request body

Response 201

The video_url from a share link does not expire.

Upload files

Upload reference media (images, videos, audio) for use in project creation or messages.

Step 1: Get a presigned upload URL

Size limits: Images 10 MB, Videos 500 MB, Audio 50 MB. Accepted types: image/jpeg, image/jpg, image/png, image/webp, video/mp4, video/webm, video/quicktime, video/x-msvideo, audio/mpeg, audio/mp3, audio/wav, audio/mp4, audio/m4a.

Response 200

Step 2: Upload the file

Upload the file directly to the presigned URL with the matching Content-Type header.

Step 3: Confirm the upload

Response 201

Use the upload_id as a reference when creating projects or sending messages:

Full upload example