Skip to main content

Overview

Cinematic Studio makes a short film from a few lines of story: Hooked writes the storyboard, casts the characters, draws and films every scene with a video model that speaks, adds subtitles and music and renders the video. Use it for story-driven ads, short dramas, trailers and anime shorts. Every request needs storyBrief (up to 4,000 characters), durationSeconds (10 to 120) and model. The create call answers in a few seconds with a projectId and status processing; the storyboard, the cast and the video come after that (see Getting the video).

A 30-second drama

A vertical anime short

ratio_9_16 makes it vertical for TikTok, Reels and Shorts. ratio_1_1 is only filmed by Kling and Seedance.

Your own dialogue, word for word

With preserveExactStoryText: true the storyboard keeps the lines in your brief instead of rewriting them. language is en (default) or es.

Casting your own characters

Characters you saved in the dashboard (Studio → Characters) can play in the film: list them with GET /v1/character/list and send their ids in characterIds (up to 6) and name them in the brief as @Name. They keep their look, their voice and their photos. An id that is not your team’s answers 400.

Picking a model

The model films every scene with its own audio, so the cast speaks. Every model below can be used; Seedance models can’t film the photorealistic styles (realistic, cinematic), and that pair answers 400.

Getting the Video

The create call answers as soon as the request is checked and the project exists:
Then the storyboard, the cast portraits, the scene frames, the clips, the subtitles and the render run in the background. Wait for your webhook (COMPLETED with data.url, or FAILED with videoId: null if the project fails), or poll the project:
A 30-second film usually takes several minutes: every scene is filmed by the video model before the final cut is rendered.

Credits

  • Checked up front. Before anything is created, the whole run is priced (a portrait per library character without a photo, plus a start frame and a clip for every 6 seconds of durationSeconds). A short balance answers 402 INSUFFICIENT_CREDITS with creditsNeeded and creditsAvailable, and nothing is created. It is priced again once the storyboard says how many scenes and characters it really has; if the balance no longer covers it, the project fails before anything is charged.
  • Charged in stages. Portraits once the storyboard is written, scene frames right after, clips when every frame is ready, subtitles at the end (skipped if the balance can’t cover them).
  • Refunds on failure. A portrait, frame or clip that fails is refunded, along with everything paid for that never started (and the portraits, if the run fails before the frames start). Finished pieces stay in your media library.
  • What it has cost. The project’s usedCredits adds up every stage charged so far, minus the refunds.
Teams in bring-your-own-keys mode are not charged credits, but need their own OpenRouter key in Settings → AI keys, and a Gemini key for gemini_omni_flash. A missing key answers 402 with code: "missing_credentials" and the list in missingProviders, before anything is created.
Send an Idempotency-Key header to retry safely: if a request times out or answers 5xx, sending it again with the same key and body returns the first answer instead of creating (and charging) the project twice.

Tips

Give the story a turn: a character, a place and something that changes makes a better storyboard than a mood alone
Match the tone: storyTone sets genre and pacing (for example drama, comedy, thriller; the full list is in Get Catalog with name=cinematic)
Keep it short to start: 15 to 30 seconds is two to five scenes, quick to film and cheap to iterate on
Original characters only: briefs about real, identifiable or famous people are refused with a 400