---
title: "Compose Generations"
method: POST
path: "/v1/videos/compose"
---

# Compose Generations

`POST /v1/videos/compose`

## Request

- Base URL: `https://api.empiriolabs.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.empiriolabs.ai/v1/videos/compose`
- Auth: none declared
- TypeScript: <https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/docs/v1/videos/compose/post.ts> (a function with typed inputs; its response is checked against the schema)

Multi-stage video production. Body:
  { recipe: "<slug>", mode: "plan"|"render", brief?, face_image?,
    aspect_ratio?, scene_count?, caption_style?, voice?, music?,
    script_model?/voice_model?/visual_model? or model_overrides{},
    storyboard? (required for render) }
Returns 202 + { job_id, poll_url }. Poll /v1/jobs/{job_id}; the result
carries `compose_phase` ("plan" -> storyboard, "render" -> final video).

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway.md) - [All operations](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/revisions/94bb966b0560?raw)
