Skip to main content
POST
Plan Compose Video (dry run)
Preview what a compose call will do — the format it routes to, the estimated cost, and the per-beat storyboard — without generating anything or spending a credit. Fast (one LLM call). Call this first to show the user the plan + cost and confirm before committing. ready: false with missingInputs / blockers tells you exactly what to supply. Accepts the same steering fields as the compose call: format, direction, sections, inputs, aspectRatio.

Authorizations

x-api-key
string
header
required

Workspace API key. Prefix: lma_. Example: lma_abc123...

Body

application/json

Shared input for POST /v1/compose/plan and POST /v1/compose/video. The user picks a format (never a model) and steers the render via the scriptdirection + sections — not by naming models.

script
string
required

The narration to speak (a hook + one insight + a CTA). Its spoken length must be ≤ the maxScriptDurationSec capability (~90s).

Maximum string length: 4000
title
string

Video title.

generationBrief
string

One-paragraph visual brief for the shots.

format
string

A format id from GET /v1/compose/formats. Omit to auto-route the script to the best available format.

direction
string

Free-text creative direction ("open on the product, fast cuts, end on the logo") — steers the render without naming models.

sections
object[]

Structured per-span storyboard hints, for a prescriptive caller.

inputs
object

A format's required inputs, keyed by input key (e.g. a presenterImage key mapping to an https URL). See each format's inputs in GET /v1/compose/formats.

aspectRatio
enum<string>
default:16:9
Available options:
16:9,
9:16,
1:1,
4:5,
4:3
voiceId
string

ElevenLabs voice id for the narration. Omit for the default voice. (compose/video only.)

clipSeconds
integer

Target per-clip length within the capability window.

idempotencyKey
string

Dedupe retries — a repeated key returns the same run (no double charge). (compose/video only.)

Response

The dry-run plan.

data
object