Browse the docs

Stories (90-second videos)

A story turns one script and nine images into nine 10-second scenes, generated independently and stitched into a single video — the way to get past the per-clip length limit.

How it works

  1. Paste a script. We break it into 9 editable scene prompts — one per 10-second segment — or you can write the scenes yourself.
  2. Add one image per scene. Each image is that scene's first frame, exactly like a single clip. Storyboard-style images (a deliberate scene change at each cut) look intentional and work best.
  3. Pick one settings set — model, aspect ratio, resolution, quality — shared by all 9 scenes so the cuts stitch cleanly. You see the total price before submitting.
  4. Submit and walk away. The scenes render as ordinary jobs; when all nine are done we stitch them into one MP4, deliver it on the story page, and fire your webhook once.
Stories render scene-by-scene on the same infrastructure as single clips, so expect roughly 30–45 minutes end to end. You don't need to keep the page open — check back, or let the webhook tell you.

Billing: per successful scene

Each scene is billed only if it completes — a story's price is simply 9 × the 10-second clip price for your settings. If a scene fails, it costs $0 and the story page shows a Re-run this scene button; completed scenes are unaffected and never re-billed. Once every scene is done, stitching and delivery are free.

Limits (current)

SettingStory Mode
Scenes9 × 10 seconds (90s total)
ResolutionUp to 720p (1080p remains single-clip-only for now)
SettingsOne model / aspect ratio / resolution / quality for all scenes
TransitionsHard cuts between scenes

The story webhook

Set a webhook URL on the story (not on individual scenes) and we POST once, when the stitched video is ready — same delivery headers and retry behavior as regular webhooks. For stories, the job_id field carries the story id:

POST your-webhook-url
{
  "job_id": "<story id>",
  "status": "completed",
  "output_url": "https://…/story-<id>.mp4"
}

A needs_attention delivery means a scene failed and is waiting for a re-run; failed means the story gave up (e.g. timed out).