Plan a film storyboard
storyboardA film the owner watches on its page. KEYFRAME (panel) = one frozen image (beat, castIds: all shown, once, placeId, camera); SEGMENT = camera and action between two (prompt, durationS 1-60, join connected|cut), with DIALOGUE (atS: seconds in, who: cast id); DECISION = a keyframe's options, each a segment on. Actions: list; get (doc, next, issues, readiness, paths; format=script); create, change (name, project_id, mutations); undo, redo, events; trim (border); clean_score_endings (free); use_clip (free; one target + generation_id, or take_ids: backwards; +panel_id, at_s: frame as its image); options (free; enter kinds|format=titles); share (PUBLIC link), delete (permanent): confirm. Free to write yourself: any image you own is a picture (image:{assetId}). COSTS CREDITS; dry_run first: make_keyframes (panel_ids; not generate_image), make_stills (stills [{segment_id, at, prompt, cast, place_id, move}]), write_dialogue (then addLine), read_lines (line_ids), check_continuity, isolate_voices (take_ids), write_score_plan, assist (kind; frames|motion: segment_id; answers ops to keep), score, make_song (song {name, styles, verses [[line]], seconds, from_panel_id, to_panel_id, level}), make_beds (beds [{place_id, prompt, seconds, volume}]), suggest_effects (take_ids), make_effects, make_voice_over|make_director_commentary (line_ids), generate (per second; quote first). mutations {op, ...}, atomic; ids yours (unique, <=80): addCastEntry|addPlace {entry:{entityId}}, removeCastEntry|removePlace {entityId}, updatePlace {entityId, patch:{note}}, updateCastEntry {entityId, patch:{addSkin|addMount|removeSkin|removeMount: id}}, swapEntity {from, to}, addPanel {id, beat}, updatePanel {id, patch:{beat, castIds, castPicks:{castId:{skinId, mountId}}, placeId, camera, image:{generationId|assetId}, ending:{prompt, durationS}}}, connect {segmentId, fromPanelId, toPanelId}, updateSegment {id, patch:{prompt, durationS, join, model, enter:{kind, params, s}, soundTail:{s}, soundLead:{s}}}, trimTake {target, takeId, patch:{inS, outS, ramp}}, addLine {segmentId, line:{id, atS, text, who, how}}, update|removeLine {segmentId, lineId, patch}, setLineSound {segmentId, lineId, soundId}, addDecision {id, atPanelId, firstOptionId, firstLabel} then addOption {decisionId, optionId, label, segmentId, toPanelId}, update|removeOption {decisionId, optionId, label}, updateDecision {id, patch:{question, timeoutS}}, setIdea {patch:{text, tone, aspectRatio, artStyle, timeOfDay, weather, styleRefs, styleNote, styleName}}, setStart {id}, removePanel|Segment|Decision {id}, (un)ackIssue {key}. Sound: addSound {sound:{id, name, kind music|atmosphere|effect|voice|upload, path}}, removeSound {id}, setAmbience {placeId, sound:{soundId, volume}}, updateTitleScreen {patch:{music, choiceSound chime|bell|pluck|whoosh|tick|none}}, addAchievement {achievement:{id, name, line, rule:{kind anyEnding|ending{panelId}|allEndings|scenes{panelIds}|choice{decisionId, optionId}|explored{share}}, secret, image:{generationId}}}, update|removeAchievement {id, patch}, setPoster|removePoster {generationId}, updateEndScreen {panelId, patch:{title, image, music}}, setVoicesOnly {target, takeId, on}, setMix {patch:{: 0-1.5}}, setMaster {patch:{musicLeads, loudness}}, setSoundBeat {soundId, beat:{bpm, firstS}}, addMusicCue {cue:{id, soundId, fromPanelId, toPanelId, path, offsetS, level, endS}}, update|removeMusicCue {id, patch}, setScoreDirection {text}, setScoreSection {key, pos, neg, kind}, clearScoreSection {key}, addEffect {target, takeId, effect:{id, soundId, atS, level}}, update|removeEffect {target, takeId, id, patch}, addVoiceOverLine {line:{id, fromPanelId, offsetS, text, how}}, update|removeVoiceOverLine {id, patch}, setNarrator {voiceId}, addDirectorSegment {trackId, path, segment}, update|removeDirectorSegment {id, patch}, setDirectorVoice {voiceId}; null clears. Animatic: addStill {segmentId, still:{id, image|prompt, at 0-1, move, enter}}, update|removeStill {segmentId, id, patch}; move {preset push_in|pull_out|pan_left|right|tilt_up|down|still, strength}; no takeId: photo segment. Cast/places: save_entity.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rev | No | undo/redo: the rev read. | |
| at_s | No | ||
| beds | No | ||
| kind | No | ||
| name | No | create; change: rename. | |
| song | No | ||
| share | No | share: {expiry: never|24h|7d|30d|90d, password ("" clears), allow_stills, revoke}. | |
| action | Yes | ||
| amount | No | ||
| format | No | ||
| stills | No | ||
| dry_run | No | The quote; share: readiness. | |
| effects | No | make_effects. | |
| targets | No | generate, use_clip: [{kind: segment, id}|{kind: loop, decisionId}|{kind: ending, panelId}]. | |
| line_ids | No | ||
| panel_id | No | ||
| take_ids | No | ||
| mutations | No | 1-100, see above. | |
| panel_ids | No | ||
| project_id | No | create; change: move. | |
| segment_id | No | ||
| generation_id | No | ||
| storyboard_id | No | All but list and create. |