Skip to main content
POST
Show four hooks for the creator's idea when they ask for ideas, hooks or a previs, or four beats of the picked hook's story. Work in this order. 1. Find the outliers: query the creator's own reels, and the pool's, for the ones whose numbers run above their usual. 2. Watch the openings: open each outlier's first four seconds, moments 0 to 3.8 spaced 0.2 apart where the reel has stored moments, else seconds 0 to 4, beside the first lines of its transcript. Never write from transcripts alone. 3. Read each hook in the conversation: the move on screen, the words on screen, the spoken line, the beat when each lands, and why it works. 4. Write four hooks that each borrow one move and none of the words: see carries the move as a concrete scene, say the spoken line, on_screen the words, and borrowed_from names the reel, its second and the move. 5. Give each frame three lines of on-screen words, on_screen and two other_words; the card paints the first and offers the rest in its tray. 6. Dally draws the four frames wordless from see and paints on_screen over them; previs.reword changes the words without a redraw and keeps every revision. Write the words for the creator alone: read their own reels' openings before writing, and write about their own work, their own place and their own way of putting things; a voice heard in their reels may not be theirs. If a line could be heard in someone else's reel, it does not go in this one. Never invent experiences, credentials, finances or results; frame an unverified scenario as an idea to film. Never copy example hooks, recycle a past post or pick for the person. Pass three creator image URLs from open as references and describe their actual appearance in character; Dally draws one four-frame sheet with GPT Image 2 low through OpenRouter in the approved marker/gouache style, about twenty seconds and a few cents. For a storyboard pass the picked hooks' parent_id; character, references and format are inherited. Reuse request_key on a retry; a new key buys a new drawing. It answers immediately: show kind previs with this whole response. Short form is 9:16; long form is 16:9.

Authorizations

Authorization
string
header
required

A WorkOS-dashboard-issued internal API key on Authorization: Bearer.

Body

application/json
request_key
string
required

A unique name for this previs. Keep it unchanged on retries.

Required string length: 1 - 128
kind
enum<string>
required

Four alternative openings, or four consecutive beats of the picked opening's story.

Available options:
hooks,
storyboard
title
string
required

A short title for this new idea.

Required string length: 1 - 160
frames
object[]
required

Exactly four freshly authored frames in reading order. Hooks are alternatives; storyboard beats form one complete new story.

Required array length: 4 elements
format
enum<string>
default:9:16

Video frame shape: portrait short form or landscape long form. Storyboards inherit their parent.

Available options:
9:16,
16:9
character
string
default:""

The creator's appearance from their reference images; required for hooks, inherited for storyboards.

Maximum string length: 1500
references
string<uri>[]

Exactly three Dally media image URLs for the real creator and rooms, from open; inherited for a storyboard.

Maximum array length: 3
parent_id
string<uuid> | null

The completed hook Previs id for a storyboard; null for hooks.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Response

Success. request_id is present on every response.

previs
object
required

The stored previs and its current state; dally_show kind previs takes this whole response.

show
object
required

How it is shown: dally_write renders this kind on this very answer with this whole response as its data, so the creator already sees it; do not render it again.

request_id
string
required

Server-minted id for this request. Present on every response, success and error — quote it when reporting a problem.

Minimum string length: 1