{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"description":"Spec format version. Always 1.","type":"number","const":1},"title":{"type":"string","minLength":1,"maxLength":80,"description":"Shown in the top bar and on the title card."},"subtitle":{"description":"One-sentence summary, shown on the title card.","type":"string","minLength":1,"maxLength":220},"topic":{"description":"What the video is about. Used to pick a look when `domain` is not set.","type":"string","minLength":1,"maxLength":200},"domain":{"type":"string","enum":["general","finance","business","marketing","technology","ai","cybersecurity","education","science","kids","health","fitness","food","travel","nature","history","news","gaming","realestate","sports","legal","lifestyle","art","space","career","environment","automotive","music","celebration","mindfulness","mystery","pets"],"description":"Topic area. Picks a matching default look; anything in `style` overrides it."},"aspect":{"description":"The shape the video is made for: `16:9` (default) for screens, `9:16` for Shorts, Reels and TikTok, `1:1` or `4:5` for feeds. The editor, the watch page and the export start from it. Wide shapes use the landscape layout, the others the phone layout.","type":"string","enum":["16:9","4:3","1:1","4:5","3:4","9:16"]},"emoji":{"description":"Shown beside the host on the title card.","type":"string","minLength":1,"maxLength":8},"kicker":{"description":"Small line above the title in the top bar, e.g. `Lesson 3 · Core skills`.","type":"string","minLength":1,"maxLength":48},"chips":{"description":"Pills above the title on the title card.","minItems":0,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":24}},"brand":{"type":"object","properties":{"name":{"description":"Shown in the top bar (and on the end card).","type":"string","minLength":1,"maxLength":32},"tagline":{"type":"string","minLength":1,"maxLength":60},"logo":{"description":"Address of your logo (PNG, SVG or JPEG with an http(s) address, a data:image URL or a path starting with /). Shown in a corner of every scene.","type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)"},"logoPosition":{"description":"Which corner the logo sits in. Default `top-right`.","type":"string","enum":["top-right","top-left","bottom-right","bottom-left"]},"logoPlate":{"description":"A rounded plate behind the logo, for a logo that would not stand out on the video's background: `light` for a dark logo, `dark` for a light one. Default: none.","type":"string","enum":["light","dark"]}},"additionalProperties":false},"host":{"description":"A picture of the presenter, shown instead of the drawn mascot (in the top bar and on the title card).","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture of the host: a cut-out with a transparent background works best."},"alt":{"description":"Who or what the host is.","type":"string","minLength":1,"maxLength":150},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"style":{"type":"object","properties":{"theme":{"description":"A complete ready-made look (palette, fonts, background, motion, captions, effects) in one word. Every other `style` field overrides it.","type":"string","enum":["neon-nights","paper-press","kids-fun","boardroom","arcade","ocean-calm","golden-hour","midnight-tech","newsroom","chalkboard-class","blueprint-lab","cinema","sunny-pop","forest-walk","cotton-candy","minimal-ink","galaxy-quest","retro-tv","terracotta-studio","volcanic","springtime","gold-luxe","showroom","launch-night","flash-sale","fresh-glow","app-glass","saas-light","organic-market","kitchen-table","bold-street","clinic-calm","fintech-pro","estate-classic","festival-pop","sunset-escape","edu-bright"]},"palette":{"description":"Colour scheme: a list of backdrops the scenes cycle through. See the palette catalog.","type":"string","enum":["classic","violet","ocean","emerald","sunset","berry","midnight","graphite","corporate","royal","neon","ember","forest","matrix","paper","arctic","mint","lavender","peach","candy","noir","cherry","copper","galaxy","sky","sage","sand","blush","aurora","twilight","volcano","deepsea","gold","jade","cream","lemon","coral","meadow","porcelain","terracotta","sunrise"]},"brandColor":{"description":"Builds a palette around this colour. Wins over `palette`.","type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"mode":{"description":"`dark` or `light`. Chooses a palette of that mode when none is named.","type":"string","enum":["dark","light"]},"textColor":{"description":"Text colour. Defaults to white (dark) or deep ink (light). Replaced if it would be unreadable.","type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"accent":{"description":"The two highlight colours: title gradient, spoken caption word, brand name.","type":"array","prefixItems":[{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}],"items":false,"minItems":2,"maxItems":2},"cycleBackdrops":{"description":"`true` (default): each scene moves to the next backdrop. `false`: one backdrop throughout.","type":"boolean"},"tones":{"description":"Accent set for chips, bars and chart parts.","type":"string","enum":["vivid","pastel","muted","mono","neon","earth","candy","ocean","retro"]},"fonts":{"description":"Heading and body font pairing.","type":"string","enum":["classic","modern","friendly","corporate","technical","terminal","editorial","bold","playful","sporty","handwritten","sturdy","startup","readable","magazine","poster","bubbly","marker","surf","book","retro-tech","friendly-sans"]},"displayFont":{"description":"Overrides the heading font of the pairing.","type":"string","enum":["geist","inter","dm-sans","manrope","poppins","plus-jakarta-sans","space-grotesk","nunito","baloo-2","playfair-display","lora","roboto-slab","oswald","bricolage-grotesque","caveat","jetbrains-mono","outfit","sora","lexend","rubik","fredoka","merriweather","dm-serif-display","bebas-neue","pacifico","permanent-marker","space-mono"]},"bodyFont":{"description":"Overrides the body font of the pairing.","type":"string","enum":["geist","inter","dm-sans","manrope","poppins","plus-jakarta-sans","space-grotesk","nunito","baloo-2","playfair-display","lora","roboto-slab","oswald","bricolage-grotesque","caveat","jetbrains-mono","outfit","sora","lexend","rubik","fredoka","merriweather","dm-serif-display","bebas-neue","pacifico","permanent-marker","space-mono"]},"background":{"description":"A ready-made stack of animated background layers.","type":"string","enum":["general","finance","business","marketing","technology","ai","cybersecurity","education","science","kids","health","fitness","food","travel","nature","history","news","gaming","realestate","sports","legal","lifestyle","art","minimal","calm","dreamy","cosmos","chalkboard","snowy","neon","cyberpunk","ocean","sunset","autumn","storm","space","hyperspace","blueprint","notebook","retro","party","celebration","forest","night","warm","pop","lowpoly","music","radar","biotech","industrial","silk","map","lava","stage","lab","genetics","developer","springtime","carnival","fireworks","mystery","studio","markets","isometric","playground","meditation","hypnotic","liquid","arcade","skies","paper","showroom","launch","flash","glass","saas","fresh","market","kitchen","street","wellness","fintech","estate","festival","escape","school","none"]},"backgroundLayers":{"description":"Your own stack of layers, bottom to top. Wins over `background`. `[]` for a plain backdrop.","maxItems":6,"type":"array","items":{"type":"string","enum":["blobs","grid","chart-wave","floaters","stars","aurora","waves","dots","diagonal","hex","bokeh","bubbles","particles","matrix","network","circuit","rays","mountains","skyline","grain","spotlight","paper","chalk","confetti","snow","clouds","streams","perspective","mesh","lava","ribbons","sun","topo","blueprint","notebook","gears","waveform","warp","galaxy","orbits","comets","sparkles","radar","fireflies","rain","embers","leaves","underwater","lightning","lanterns","halftone","triangles","shapes","equalizer","scanlines","ripples","spiral","beams","flow","pixels","dna","atoms","formulas","code","birds","balloons","fireworks","petals","fog","filmstrip","ticker","isogrid","doodles","softbox","lightsweep","orbs","speedlines","aura"]}},"glyphs":{"description":"Symbols or emoji for the `floaters` background.","minItems":1,"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":4}},"mascot":{"description":"The host character.","type":"string","enum":["candle","buddy","robot","owl","cat","fox","bear","none"]},"enter":{"description":"How items appear.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"transition":{"description":"How scenes replace each other.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"shape":{"description":"Corner roundness of cards and chips.","type":"string","enum":["sharp","soft","round","pill","bubble"]},"captions":{"description":"Caption look.","type":"string","enum":["glass","plain","highlight","outline","bar","bold","neon","sticker","underline","boxed","karaoke","cinema","comic","gradient","terminal"]},"captionPosition":{"description":"Where captions sit.","type":"string","enum":["bottom","top"]},"progress":{"description":"A progress indicator along the top edge. Default: none. A scene can hide or show it for itself with its own `progress`.","type":"string","enum":["none","bar","dots","glow","ring"]},"header":{"description":"Which parts of the top bar show on every scene except the title card: `host`, `title`, `kicker`, `brand`. Default: all four. `[]` removes the bar. A scene can hide or show the bar for itself with its own `header`.","maxItems":4,"type":"array","items":{"type":"string","enum":["host","title","kicker","brand"]}},"camera":{"description":"`drift` (default): the picture moves slowly all the time, like a camera. `dolly`: a clearer move that lasts as long as each scene (best for ads). `handheld`: a faint human sway. `still`: it does not move.","type":"string","enum":["drift","dolly","handheld","still"]},"grade":{"description":"A colour grade over the whole picture, like the last step of a professional edit: `clean`, `cinematic` (teal and orange), `warm`, `cool`, `punchy`, `matte` or `luxe`. Default: none.","type":"string","enum":["clean","cinematic","warm","cool","punchy","matte","luxe"]},"safeZone":{"description":"For a tall video (9:16) made for a social platform: keeps the titles, captions and logo clear of the parts of the screen the app covers. Default: none.","type":"string","enum":["tiktok","reels","shorts","all"]},"effects":{"description":"Finishing touches over the whole picture (vignette, letterbox, film, glow ...). Combine up to four. `[]` for none.","maxItems":4,"type":"array","items":{"type":"string","enum":["vignette","letterbox","frame","film","mono","vivid","dim","leak","haze","glow","chromatic","scanfx","shine","grain"]}}},"additionalProperties":false},"narration":{"type":"object","properties":{"engine":{"description":"`standard` (default): the voice server, with `voice`, `speed` and `quality`. `premium`: Google Gemini 3.8 Flash TTS through OpenRouter, directed with `premium` and the scenes' `delivery`.","type":"string","enum":["standard","premium"]},"premium":{"description":"The premium voice: which of the 30 voices, how it delivers the video, accent and pace. Only used when `engine` is `premium`.","type":"object","properties":{"voice":{"description":"One of 30 studio voices (see `GET /api/catalog`). Default `Kore`.","type":"string","enum":["Zephyr","Puck","Charon","Kore","Fenrir","Leda","Orus","Aoede","Callirrhoe","Autonoe","Enceladus","Iapetus","Umbriel","Algieba","Despina","Erinome","Algenib","Rasalgethi","Laomedeia","Achernar","Alnilam","Schedar","Gacrux","Pulcherrima","Achird","Zubenelgenubi","Vindemiatrix","Sadachbia","Sadaltager","Sulafat"]},"style":{"description":"How the whole video is delivered: emotion, energy, inflection. Short and concrete, e.g. \"warm, confident, with a smile in the voice\". Scenes can add to it with their own `delivery`.","type":"string","minLength":1,"maxLength":160},"accent":{"description":"A regional accent or dialect as a soft hint, e.g. \"British\" or \"Scottish\". The voice keeps its own character; the model follows the hint most of the time.","type":"string","minLength":1,"maxLength":40},"pace":{"description":"How quickly the voice speaks. Default `natural`.","type":"string","enum":["slow","natural","brisk"]}},"additionalProperties":false},"voice":{"description":"Standard voice id. `M1`-`M5` male, `F1`-`F5` female. Default `F2`.","type":"string","enum":["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"]},"speed":{"description":"Standard voice: 1 = normal speech. Default 0.95.","type":"number","minimum":0.5,"maximum":2},"quality":{"description":"Standard voice: more synthesis steps sound better and take longer. Default `medium`.","type":"string","enum":["low","medium","high"]},"lang":{"description":"Language of the narration. Default `en`. zh, th, he, ms, no have no voice: the video is silent, with captions, unless you add your own `voiceover`.","type":"string","enum":["en","ko","ja","ar","bg","cs","da","de","el","es","et","fi","fr","hi","hr","hu","id","it","lt","lv","nl","pl","pt","ro","ru","sk","sl","sv","tr","uk","vi","zh","th","he","ms","no","na"]},"silent":{"description":"`true` skips the voice entirely: timing is estimated from the text length and captions carry the video.","type":"boolean"},"voiceover":{"description":"Your own recording instead of the generated voice. The captions and the scenes follow it. Ignored when `silent` is `true`.","type":"object","properties":{"src":{"type":"string","pattern":"^\\/api\\/assets\\/[0-9a-f]{16}$","description":"Address of the uploaded audio (`/api/assets/<id>`). Upload it in the editor, or with `POST /api/assets`."},"duration":{"type":"number","minimum":0.5,"maximum":3600,"description":"Length of the audio in seconds. The scenes are spread over it in proportion to what they say."},"name":{"description":"The name of the file, shown in the editor.","type":"string","minLength":1,"maxLength":120}},"required":["src","duration"],"additionalProperties":false},"pauses":{"type":"object","properties":{"sentence":{"description":"Seconds of silence after each sentence.","type":"number","minimum":0,"maximum":10},"section":{"description":"Seconds of silence between scenes.","type":"number","minimum":0,"maximum":10},"leadIn":{"description":"Seconds of silence before the first word.","type":"number","minimum":0,"maximum":10},"tail":{"description":"Seconds of silence after the last word.","type":"number","minimum":0,"maximum":10}},"additionalProperties":false},"pronunciations":{"description":"Respellings for words the voice mispronounces, e.g. `{ \"Kubernetes\": \"koo-ber-NET-eez\" }`. Captions keep the original spelling.","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","minLength":1,"maxLength":80}},"foreign":{"description":"Names, words and phrases that belong to another language than the narration, spoken by that language's voice in the middle of the sentence, e.g. `{ \"de\": [\"Brandenburger Tor\", \"Kreuzberg\"] }` in an English video. Whole words only, spelled as in the narration; the captions are not changed.","type":"object","propertyNames":{"type":"string","enum":["en","ko","ja","ar","bg","cs","da","de","el","es","et","fi","fr","hi","hr","hu","id","it","lt","lv","nl","pl","pt","ro","ru","sk","sl","sv","tr","uk","vi"]},"additionalProperties":{"minItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}}}},"additionalProperties":false},"music":{"type":"object","properties":{"src":{"type":"string","maxLength":2000,"description":"Address of the music: an http(s) link to an MP3, WAV, M4A or OGG file, or an uploaded one (`/api/assets/<id>`). It loops to fill the video and fades out at the end."},"name":{"description":"The name of the file, shown in the editor.","type":"string","minLength":1,"maxLength":120},"volume":{"description":"Loudness of the music, 0 to 1, where the narration is 1. Default 0.18.","type":"number","minimum":0,"maximum":1},"duck":{"description":"Lower the music further while the narrator speaks. Default `true`.","type":"boolean"}},"required":["src"],"additionalProperties":false},"sound":{"description":"Sound design made for the video itself: whooshes on the cuts, a riser and an impact into the reveal, small pops for text, and an optional music bed whose tempo is fitted to the cuts. Exports mix it in (`mp4`, `webm`, `mov`). Left out, the video has none.","type":"object","properties":{"effects":{"description":"How lively the sound effects are: `off`, `soft`, `punchy` (default) or `cinematic`. Whooshes on the cuts, risers and impacts into the reveal, small pops for text and a sparkle on the offer. Made from nothing, so no files are needed.","type":"string","enum":["off","soft","punchy","cinematic"]},"bed":{"description":"A music bed made to the cuts of the video, so they land on the beat: `ambient`, `pulse` or `drive`. Default `off`. For your own track use `music`.","type":"string","enum":["ambient","pulse","drive","off"]},"bedVolume":{"description":"How loud the bed is under the narrator, 0 to 1. Default 0.4.","type":"number","minimum":0,"maximum":1},"effectsVolume":{"description":"How loud the sound effects are, 0 to 1, where the narrator is 1. Default 0.6.","type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"audio":{"description":"Recordings and music placed on the timeline, each playing part of an uploaded file from a given second of the video. Exports mix them in (`mp4`, `webm`, `mov`, `mp3`).","maxItems":24,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["voice","music"],"description":"`voice`: a recording, as loud as the narrator. `music`: lowered under the narrator."},"src":{"type":"string","pattern":"^\\/api\\/assets\\/[0-9a-f]{16}$","description":"Address of the uploaded audio (`/api/assets/<id>`)."},"name":{"description":"The name of the file, shown in the editor.","type":"string","minLength":1,"maxLength":120},"duration":{"type":"number","minimum":0.2,"maximum":3600,"description":"Length of the whole file in seconds."},"start":{"type":"number","minimum":0,"maximum":3600,"description":"Where the clip begins, in seconds from the start of the video."},"offset":{"description":"Seconds cut from the beginning of the file. Default 0.","type":"number","minimum":0,"maximum":3600},"length":{"type":"number","minimum":0.2,"maximum":3600,"description":"Seconds of the file that play, from `offset`."}},"required":["kind","src","duration","start","length"],"additionalProperties":false}},"followUps":{"description":"Cards beside the recap: a hands-on task, what to watch next.","minItems":0,"maxItems":3,"type":"array","items":{"type":"object","properties":{"kicker":{"type":"string","minLength":1,"maxLength":24},"title":{"type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]}},"required":["kicker","title"],"additionalProperties":false}},"scenes":{"minItems":1,"maxItems":40,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"intro"},"say":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"description":"One to three lines that introduce the video."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"section"},"number":{"description":"Chapter number or a short label such as `Part A`.","anyOf":[{"type":"string","minLength":1,"maxLength":4},{"type":"integer","minimum":0,"maximum":99}]},"title":{"type":"string","minLength":1,"maxLength":80},"subtitle":{"type":"string","minLength":1,"maxLength":150},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","title","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"statement"},"eyebrow":{"description":"Small label above the statement.","type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":120,"description":"The statement. Wrap words in **double asterisks** to highlight them."},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","text","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"cards"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"layout":{"description":"Default `grid`.","type":"string","enum":["grid","flow","list"]},"items":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["icon","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"table"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"columns":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"string","maxLength":48}},"rows":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"cells":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"string","maxLength":48}},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["cells","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","columns","rows"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"example"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"lines":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":150},"result":{"type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","lines"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"stat"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":14},"label":{"type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["value","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"chart"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"chart":{"type":"string","enum":["bars","columns","donut","line","area","radar","rings"]},"items":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":48},"value":{"type":"number","minimum":0,"description":"The number to plot. Not negative."},"display":{"description":"How the value is written next to the element. Default: the number itself.","type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","value","say"],"additionalProperties":false}},"center":{"description":"Text in the hole of a `donut`.","type":"string","minLength":1,"maxLength":14},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","chart","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"ranking"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"order":{"description":"`countdown` (default) reveals the last place first. `ascending` reveals number one first.","type":"string","enum":["countdown","ascending"]},"items":{"minItems":2,"maxItems":7,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"value":{"type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"versus"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"left":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]}},"required":["title"],"additionalProperties":false},"right":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]}},"required":["title"],"additionalProperties":false},"points":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"object","properties":{"side":{"type":"string","enum":["left","right"]},"text":{"type":"string","minLength":1,"maxLength":150},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["side","text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","left","right","points"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"feature"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"text":{"description":"A line under the big icon.","type":"string","minLength":1,"maxLength":150},"bullets":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","icon","bullets"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"timeline"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"events":{"minItems":2,"maxItems":7,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":16,"description":"Date or step label, e.g. `1969`, `Day 1`."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","events"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"cycle"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"center":{"description":"Short label in the middle of the circle.","type":"string","minLength":1,"maxLength":24},"items":{"minItems":3,"maxItems":6,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"label":{"type":"string","minLength":1,"maxLength":24},"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["icon","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"funnel"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"stages":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":48},"value":{"type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","stages"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"quote"},"quote":{"type":"string","minLength":1,"maxLength":220},"author":{"type":"string","minLength":1,"maxLength":48},"role":{"description":"The author's title or where the quote is from.","type":"string","minLength":1,"maxLength":48},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","quote","author","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"callout"},"tone":{"type":"string","enum":["tip","warning","fact"]},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":220},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","tone","title","text","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"media"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Image address.","pictureSource":true},"alt":{"type":"string","minLength":1,"maxLength":150,"description":"What the picture shows."},"motion":{"description":"Slow camera move. Default `zoom-in`.","type":"string","enum":["zoom-in","zoom-out","pan","still"]},"items":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"caption":{"type":"string","minLength":1,"maxLength":150}},"required":["say"],"additionalProperties":false}},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","src","alt","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"clip"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Your uploaded clip.","clipSource":true},"say":{"description":"What the narrator says over the clip. Leave out for footage only.","type":"string","minLength":1,"maxLength":500},"fit":{"description":"How the clip fills the frame. Default `cover`.","type":"string","enum":["cover","contain"]},"start":{"description":"Seconds into the source where playback begins. Default 0.","type":"number","minimum":0,"maximum":60},"length":{"type":"number","minimum":0.1,"maximum":60,"description":"Seconds of the source to play in this scene."},"duration":{"type":"number","minimum":0.1,"maximum":60,"description":"Full length of the source clip in seconds (copied when you pick the clip)."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","src","length","duration"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"gallery"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"layout":{"description":"How the pictures move. Default `mosaic`.","type":"string","enum":["mosaic","stack","carousel","flipbook"]},"items":{"minItems":2,"maxItems":9,"type":"array","items":{"type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Picture address.","pictureSource":true},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"caption":{"description":"A few words shown under the picture while its line is spoken.","type":"string","minLength":1,"maxLength":48},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["src","say"],"additionalProperties":false},"pictureList":"src"},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"walkthrough"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"screenshot":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Screenshot to guide the viewer through.","pictureSource":true},"steps":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"focus":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":100,"description":"Distance from the left edge of the picture, as a percentage of its width."},"y":{"type":"number","minimum":0,"maximum":100,"description":"Distance from the top edge of the picture, as a percentage of its height."},"width":{"type":"number","minimum":0,"maximum":100,"description":"Width of the area, as a percentage of the picture width."},"height":{"type":"number","minimum":0,"maximum":100,"description":"Height of the area, as a percentage of the picture height."}},"required":["x","y","width","height"],"additionalProperties":false,"regionOf":"screenshot","description":"The part of the screenshot to zoom into."},"title":{"type":"string","minLength":1,"maxLength":48,"description":"Short label on the callout."},"text":{"description":"Extra detail under the title.","type":"string","minLength":1,"maxLength":150},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"marker":{"description":"How the focus is highlighted. Default `box`. `ellipse` and `underline` are drawn by hand, stroke by stroke, like a presenter circling or underlining the spot.","type":"string","enum":["box","spotlight","arrow","pin","ellipse","underline"]},"pointer":{"description":"A hand pointer glides to the area and taps it, as if someone were clicking there. For buttons, toggles and fields.","type":"boolean"}},"required":["focus","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","screenshot","steps"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"motion"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"canvas":{"description":"The drawing board, in canvas units: `wide` is 160 wide and 60 tall, `square` is 100 wide and 100 tall, `tall` is 60 wide and 100 tall. Default `wide`. Shapes are placed with x from 0 to the width and y from 0 (top) to the height.","type":"string","enum":["wide","square","tall"]},"shapes":{"minItems":1,"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,23}$","description":"Name of the shape. The script refers to it by this name."},"type":{"type":"string","enum":["rect","square","circle","ellipse","triangle","diamond","polygon","star","heart","arrow","line","ring","cross","text","path"],"description":"What to draw."},"group":{"description":"A name shared by several shapes, so the script can move them together.","type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,23}$"},"x":{"description":"Centre of the shape across the canvas. Default: the middle. A `line` or `arrow` starts here; a `path` is drawn from here (default 0).","type":"number","minimum":-400,"maximum":400},"y":{"description":"Centre of the shape down the canvas. Default: the middle.","type":"number","minimum":-400,"maximum":400},"size":{"description":"Width and height of the shape (font size for `text`). Default 16 (6 for `text`).","type":"number","minimum":0,"maximum":400},"width":{"description":"Overrides the width of `rect`, `ellipse`, `triangle`, `diamond`, `polygon`, `star`, `heart`, `cross`, `ring`.","type":"number","minimum":0,"maximum":400},"height":{"description":"Overrides the height, like `width`.","type":"number","minimum":0,"maximum":400},"x2":{"description":"Where a `line` or `arrow` ends, across. Default: `size` to the right of the start.","type":"number","minimum":-400,"maximum":400},"y2":{"description":"Where a `line` or `arrow` ends, down. Default: level with the start.","type":"number","minimum":-400,"maximum":400},"fill":{"description":"Colour inside the shape. Default `accent` (or `none` if only `stroke` is given). A `line`, `arrow` or `ring` takes it as its stroke colour.","type":"string","pattern":"^(?:#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|none|white|black|text|accent2?|(?:violet|emerald|amber|rose|sky|fuchsia|teal|orange)(?:-light|-deep)?)$"},"fill2":{"description":"A second colour: the fill becomes a gradient from `fill` (top left) to `fill2` (bottom right).","type":"string","pattern":"^(?:#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|none|white|black|text|accent2?|(?:violet|emerald|amber|rose|sky|fuchsia|teal|orange)(?:-light|-deep)?)$"},"stroke":{"description":"Colour of the outline.","type":"string","pattern":"^(?:#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|none|white|black|text|accent2?|(?:violet|emerald|amber|rose|sky|fuchsia|teal|orange)(?:-light|-deep)?)$"},"strokeWidth":{"description":"Thickness of the outline or line. Default 1 for lines, 2 for a `ring`.","type":"number","minimum":0,"maximum":40},"opacity":{"description":"0 is invisible, 1 solid (default).","type":"number","minimum":0,"maximum":1},"rotation":{"description":"Degrees, clockwise.","type":"number","minimum":-3600,"maximum":3600},"radius":{"description":"Rounded corners of a `rect` or `square`.","type":"number","minimum":0,"maximum":400},"sides":{"description":"Corners of a `polygon`. Default 6.","type":"integer","minimum":3,"maximum":12},"points":{"description":"Points of a `star`. Default 5.","type":"integer","minimum":3,"maximum":16},"inner":{"description":"How deep a `star` is cut, or how thin the arms of a `cross` are, from 0.1 to 0.9. Default 0.5 (0.34 for a cross).","type":"number","minimum":0.1,"maximum":0.9},"text":{"description":"The words of a `text` shape.","type":"string","minLength":1,"maxLength":60,"pattern":"^[^<]+$"},"weight":{"description":"Boldness of `text`. Default 800.","type":"integer","minimum":100,"maximum":900},"d":{"description":"SVG path data in canvas units, for a `path`, e.g. `M 10 40 C 40 5, 80 5, 110 40`.","type":"string","maxLength":600,"pattern":"^[MmLlHhVvCcSsQqTtAaZz0-9eE.,\\s+-]+$"},"glow":{"description":"A soft glow in the colour of the shape.","type":"boolean"},"repeat":{"description":"Draw many copies of this shape in a row, grid or circle.","type":"object","properties":{"count":{"type":"integer","minimum":2,"maximum":60,"description":"How many copies. They are named `<id>1`, `<id>2` ... and all belong to the group `<id>`."},"layout":{"description":"Where the copies go, around the shape's own position. Default `row`.","type":"string","enum":["row","column","grid","circle","diagonal"]},"gap":{"description":"Distance between the centres of neighbouring copies. Default: 1.5 times the size.","type":"number","minimum":0,"maximum":400},"columns":{"description":"Copies per row in a `grid`. Default: the square root of the count, rounded up.","type":"integer","minimum":1,"maximum":20},"radius":{"description":"Radius of a `circle`. Default: wide enough for the copies not to touch.","type":"number","minimum":0,"maximum":400},"startAngle":{"description":"Where a `circle` starts, in degrees. Default -90 (the top).","type":"number","minimum":-360,"maximum":360},"palette":{"description":"Colours the copies take in turn, instead of `fill`.","minItems":1,"maxItems":8,"type":"array","items":{"type":"string","pattern":"^(?:#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|none|white|black|text|accent2?|(?:violet|emerald|amber|rose|sky|fuchsia|teal|orange)(?:-light|-deep)?)$"}},"rotate":{"description":"Turn each copy of a `circle` to face outwards.","type":"boolean"}},"required":["count"],"additionalProperties":false},"enter":{"description":"How the shape comes in. Without it the shape is simply there from the start.","type":"string","enum":["fade","pop","rise","drop","slide-left","slide-right","zoom","spin","grow","draw","type"]},"loop":{"description":"A movement that repeats while the shape is on screen.","type":"string","enum":["float","pulse","spin","sway","bounce","blink","wiggle"]},"exit":{"description":"How the shape leaves, at `exitAt`.","type":"string","enum":["fade","shrink","slide-left","slide-right","slide-up","slide-down"]},"at":{"description":"When the shape comes in: seconds, or `line2` for when the second line is spoken. Default: one after another, a quarter of a second apart.","anyOf":[{"type":"number","minimum":0,"maximum":600},{"type":"string","pattern":"^line[1-9]\\d*$"}]},"delay":{"description":"Extra seconds before `enter`.","type":"number","minimum":0,"maximum":600},"duration":{"description":"Seconds `enter` and `exit` take. Default depends on the animation.","type":"number","minimum":0.05,"maximum":30},"stagger":{"description":"Seconds between the copies of a `repeat`. Default 0.08.","type":"number","minimum":0,"maximum":5},"exitAt":{"description":"When the shape leaves, in the same terms as `at`.","anyOf":[{"type":"number","minimum":0,"maximum":600},{"type":"string","pattern":"^line[1-9]\\d*$"}]}},"required":["id","type"],"additionalProperties":false},"description":"What to draw, from the back to the front."},"script":{"description":"A GSAP timeline as text, for movements `enter`, `loop` and `exit` cannot make: `tl.to(\"ball\", { x: 40, rotation: 90, duration: 1, ease: \"power2.out\" }, \"line2\")`. Calls: `tl.to`, `tl.from`, `tl.fromTo`, `tl.set`, `tl.addLabel`. Names are shape ids, group names or \"all\".","type":"string","maxLength":4000},"lines":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["say"],"additionalProperties":false},"description":"The narration, one passage at a time. Their moments are the labels `line1`, `line2` ..."},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","shapes","lines"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"worldmap"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"places":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"place":{"type":"string","minLength":1,"maxLength":48,"description":"A country (`Japan`, `United States`, `UK`) or a city (`Tokyo`, `New York`, `Sao Paulo`) the map knows by name."},"latitude":{"description":"Only for a place the map does not know by name: its latitude (north is positive). Give `longitude` too.","type":"number","minimum":-90,"maximum":90},"longitude":{"description":"Only for a place the map does not know by name: its longitude (east is positive). Give `latitude` too.","type":"number","minimum":-180,"maximum":180},"label":{"description":"The text shown on the map. Default: the name of the place.","type":"string","minLength":1,"maxLength":48},"note":{"description":"A few words under the label, such as a number or a date.","type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["place","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","places"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"journey"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"stops":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"object","properties":{"place":{"type":"string","minLength":1,"maxLength":48,"description":"A country (`Japan`, `United States`, `UK`) or a city (`Tokyo`, `New York`, `Sao Paulo`) the map knows by name."},"latitude":{"description":"Only for a place the map does not know by name: its latitude (north is positive). Give `longitude` too.","type":"number","minimum":-90,"maximum":90},"longitude":{"description":"Only for a place the map does not know by name: its longitude (east is positive). Give `latitude` too.","type":"number","minimum":-180,"maximum":180},"label":{"description":"The text shown at the stop. Default: the name of the place.","type":"string","minLength":1,"maxLength":48},"mode":{"description":"How the trip gets here from the previous stop. Default `plane`. Ignored for the first stop.","type":"string","enum":["plane","train","bus","car","boat","bike","walk"]},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["place","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","stops"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"berlinmap"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"stops":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"place":{"type":"string","minLength":1,"maxLength":48,"description":"A district (`Mitte`, `Friedrichshain-Kreuzberg`, `Neukölln`), or a landmark or neighbourhood the map knows by name (`Brandenburg Gate`, `Museum Island`, `Prenzlauer Berg`)."},"latitude":{"description":"Only for a spot the map does not know by name: its latitude, such as `52.5163`. Give `longitude` too.","type":"number"},"longitude":{"description":"Only for a spot the map does not know by name: its longitude, such as `13.3777`. Give `latitude` too.","type":"number"},"label":{"description":"The text shown on the map. Default: the name of the place.","type":"string","minLength":1,"maxLength":48},"note":{"description":"A few words under the label, such as a number or a nickname.","type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["place","say"],"additionalProperties":false}},"connect":{"description":"Draw a line from each stop to the next. For a route that is followed in order; leave it out for places that are only listed.","type":"boolean"},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","stops"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"timetravel"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"from":{"description":"The year the trip starts at. Default: the year of the first event (so the first step does not travel).","type":"integer","minimum":-9999,"maximum":9999},"events":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":-9999,"maximum":9999,"description":"The year of the event; negative years are BC. Events can go forwards or backwards in time."},"title":{"type":"string","minLength":1,"maxLength":48,"description":"What happened."},"text":{"description":"A line of detail.","type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["year","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","events"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"code"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"filename":{"description":"Shown in the editor title bar.","type":"string","minLength":1,"maxLength":32},"lines":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64,"description":"One line of code. Leading spaces are kept."},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["code","say"],"additionalProperties":false}},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","lines"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"quiz"},"heading":{"description":"Default: `Quick quiz`.","type":"string","minLength":1,"maxLength":60},"question":{"type":"string","minLength":1,"maxLength":150},"options":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":48}},"answer":{"type":"integer","minimum":0,"maximum":3,"description":"Index of the correct option, counting from 0."},"explanation":{"type":"string","minLength":1,"maxLength":150},"say":{"type":"array","prefixItems":[{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}],"items":false,"minItems":2,"maxItems":2,"description":"[question line, answer line]"},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","question","options","answer","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"term"},"term":{"type":"string","minLength":1,"maxLength":48},"pronunciation":{"description":"For example `/ˈɛnərdʒi/`.","type":"string","minLength":1,"maxLength":48},"partOfSpeech":{"description":"For example `noun`.","type":"string","minLength":1,"maxLength":20},"definition":{"type":"string","minLength":1,"maxLength":220},"example":{"description":"An example sentence.","type":"string","minLength":1,"maxLength":150},"say":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","term","definition","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"agenda"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":2,"maxItems":7,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"matrix"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"xAxis":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":24},"low":{"type":"string","minLength":1,"maxLength":20},"high":{"type":"string","minLength":1,"maxLength":20}},"required":["label"],"additionalProperties":false,"description":"Horizontal axis. `low` is written at the left end, `high` at the right end."},"yAxis":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":24},"low":{"type":"string","minLength":1,"maxLength":20},"high":{"type":"string","minLength":1,"maxLength":20}},"required":["label"],"additionalProperties":false,"description":"Vertical axis. `low` is written at the bottom, `high` at the top."},"quadrants":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false},"description":"Exactly four: top-left, top-right, bottom-left, bottom-right."},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","xAxis","yAxis","quadrants"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pyramid"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"order":{"description":"`base-first` (default) reveals the bottom level first. `top-first` starts at the tip.","type":"string","enum":["base-first","top-first"]},"items":{"minItems":3,"maxItems":6,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"venn"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"sets":{"minItems":2,"maxItems":3,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":28},"text":{"type":"string","minLength":1,"maxLength":60},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","say"],"additionalProperties":false}},"overlap":{"description":"Written where all circles overlap.","type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":32},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","say"],"additionalProperties":false},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","sets"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mindmap"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"center":{"type":"string","minLength":1,"maxLength":48,"description":"The central topic."},"centerIcon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"branches":{"minItems":3,"maxItems":6,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":60},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","center","branches"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"scale"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"from":{"description":"Label of the start of the bar.","type":"string","minLength":1,"maxLength":20},"to":{"description":"Label of the end of the bar.","type":"string","minLength":1,"maxLength":20},"markers":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"position":{"type":"number","minimum":0,"maximum":100,"description":"Where on the bar: 0 is the start, 100 the end."},"label":{"type":"string","minLength":1,"maxLength":28},"text":{"type":"string","minLength":1,"maxLength":60},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["position","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","markers"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"gauge"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":48},"value":{"type":"number","minimum":0,"maximum":100,"description":"Where the needle points: 0 (far left) to 100 (far right)."},"display":{"description":"The text under the dial. Default: the value followed by %.","type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","value","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"counter"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":1000000000000,"description":"The number to roll up to. Not negative."},"decimals":{"description":"Digits after the decimal point. Default 0.","type":"integer","minimum":0,"maximum":3},"prefix":{"description":"Before the number, e.g. `$`.","type":"string","minLength":1,"maxLength":4},"suffix":{"description":"After the number, e.g. `%`, `k`, `km`.","type":"string","minLength":1,"maxLength":8},"label":{"type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["value","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"formula"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"result":{"type":"object","properties":{"symbol":{"type":"string","minLength":1,"maxLength":16},"label":{"type":"string","minLength":1,"maxLength":28},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["symbol","say"],"additionalProperties":false,"description":"The left-hand side, e.g. `Speed`."},"terms":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","minLength":1,"maxLength":16,"description":"The block's text, e.g. `Distance` or `m`."},"label":{"description":"Small caption under the block, e.g. `metres`.","type":"string","minLength":1,"maxLength":28},"op":{"description":"The sign written before this block, e.g. `+`, `−`, `×`, `÷`. Default `+`. Not used on the first term.","type":"string","minLength":1,"maxLength":3},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["symbol","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","result","terms"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"beforeafter"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"before":{"type":"object","properties":{"label":{"description":"Small tag above the title. Default `Before` / `After`.","type":"string","minLength":1,"maxLength":16},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false},"after":{"type":"object","properties":{"label":{"description":"Small tag above the title. Default `Before` / `After`.","type":"string","minLength":1,"maxLength":16},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","before","after"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pricing"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"plans":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":24},"price":{"type":"string","minLength":1,"maxLength":10,"description":"The price as written, e.g. `$29` or `Free`."},"period":{"description":"Written small after the price, e.g. `/month`.","type":"string","minLength":1,"maxLength":12},"features":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"badge":{"description":"A ribbon that highlights this plan, e.g. `Most popular`.","type":"string","minLength":1,"maxLength":16},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["name","price","features","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","plans"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"testimonial"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"quote":{"type":"string","minLength":1,"maxLength":150},"name":{"type":"string","minLength":1,"maxLength":32},"role":{"type":"string","minLength":1,"maxLength":40},"rating":{"description":"Stars out of 5. Leave out for no stars.","type":"integer","minimum":1,"maximum":5},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["quote","name","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"chat"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"messages":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"from":{"type":"string","enum":["left","right"],"description":"Which side the bubble is on."},"name":{"description":"Shown above the bubble.","type":"string","minLength":1,"maxLength":20},"text":{"type":"string","minLength":1,"maxLength":120},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["from","text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","messages"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"team"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"members":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":32},"role":{"type":"string","minLength":1,"maxLength":40},"icon":{"description":"The avatar. Default: the first letter of the name.","type":"string","minLength":1,"maxLength":8},"text":{"type":"string","minLength":1,"maxLength":80},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["name","role","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","members"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"faq"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"question":{"type":"string","minLength":1,"maxLength":90},"answer":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["question","answer","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"bullets"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"marker":{"description":"What stands before each point. Default `dot`.","type":"string","enum":["dot","number","tick","arrow"]},"items":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":150},"icon":{"description":"An emoji shown instead of the marker.","type":"string","minLength":1,"maxLength":8},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"steps"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"time":{"description":"A short chip such as `5 min` or `Day 1`.","type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"schedule"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":2,"maxItems":7,"type":"array","items":{"type":"object","properties":{"time":{"type":"string","minLength":1,"maxLength":14,"description":"`08:30`, `Mon`, `Week 2`, ..."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":90},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["time","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"calendar"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"month":{"type":"integer","minimum":1,"maximum":12,"description":"1 is January."},"year":{"type":"integer","minimum":1900,"maximum":2200},"weekStart":{"description":"The first column. Default `monday`.","type":"string","enum":["monday","sunday"]},"events":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"day":{"type":"integer","minimum":1,"maximum":31},"label":{"type":"string","minLength":1,"maxLength":36},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["day","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","month","year","events"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"timer"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"phases":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":20},"seconds":{"type":"integer","minimum":1,"maximum":3600,"description":"How long the phase lasts, in seconds (up to an hour)."},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","seconds","say"],"additionalProperties":false}},"rounds":{"description":"How many times the whole cycle of phases repeats. Default 1: shown only when more than 1.","type":"integer","minimum":1,"maximum":60},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","phases"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"columns"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"columns":{"minItems":2,"maxItems":3,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":32},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour of the column. `emerald` suits a good list, `rose` a bad one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"items":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","items","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","columns"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"compare"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"columns":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":24},"description":"The names of the options."},"highlight":{"description":"Index (from 0) of the option to emphasise.","type":"integer","minimum":0,"maximum":3},"rows":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"maxLength":40},"values":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":28},"description":"One per column: `yes`, `no`, `partial` or a few words."},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["feature","values","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","columns","rows"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"tags"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":3,"maxItems":14,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":24},"weight":{"description":"Size: 1 small, 2 medium (default), 3 large.","type":"integer","minimum":1,"maximum":3},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]}},"required":["text"],"additionalProperties":false}},"say":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"description":"One to four narration lines."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"flashcards"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"cards":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"question":{"type":"string","minLength":1,"maxLength":90},"answer":{"type":"string","minLength":1,"maxLength":90},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"Narration while the question is showing."},"sayAnswer":{"type":"string","minLength":1,"maxLength":500,"description":"Narration while the answer is showing."}},"required":["question","answer","say","sayAnswer"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","cards"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"waffle"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"shape":{"description":"The marks of the grid. Default `circle`.","type":"string","enum":["circle","square"]},"items":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100,"description":"How many of the 100 marks light up."},"label":{"type":"string","minLength":1,"maxLength":60},"display":{"description":"The big number. Default: the value with a percent sign.","type":"string","minLength":1,"maxLength":10},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["value","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"profile"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"name":{"type":"string","minLength":1,"maxLength":40},"role":{"type":"string","minLength":1,"maxLength":48},"icon":{"description":"The avatar: an emoji. Default: the first letter of the name.","type":"string","minLength":1,"maxLength":8},"quote":{"description":"A line shown under the name.","type":"string","minLength":1,"maxLength":120},"facts":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":24},"value":{"type":"string","minLength":1,"maxLength":40},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","value","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","name","facts"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"social"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"posts":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":32},"handle":{"type":"string","minLength":1,"maxLength":24,"description":"Without the @, it is added."},"avatar":{"description":"An emoji. Default: the first letter of the name.","type":"string","minLength":1,"maxLength":8},"text":{"type":"string","minLength":1,"maxLength":180},"time":{"description":"`2h`, `Mar 4`, ...","type":"string","minLength":1,"maxLength":16},"verified":{"description":"Adds a small tick to the name.","type":"boolean"},"likes":{"type":"string","minLength":1,"maxLength":10},"comments":{"type":"string","minLength":1,"maxLength":10},"shares":{"type":"string","minLength":1,"maxLength":10},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["name","handle","text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","posts"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"headline"},"label":{"description":"The red tag. Default `Breaking`.","type":"string","minLength":1,"maxLength":24},"title":{"type":"string","minLength":1,"maxLength":100},"deck":{"description":"The standfirst under the headline.","type":"string","minLength":1,"maxLength":160},"source":{"description":"Shown small, for example `City Desk · 18:30`.","type":"string","minLength":1,"maxLength":40},"ticker":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":80},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","title","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"storyboard"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"panels":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":12,"description":"The picture of the panel: one to three emoji."},"caption":{"type":"string","minLength":1,"maxLength":90},"bubble":{"description":"Words a character says.","type":"string","minLength":1,"maxLength":60},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["icon","caption","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","panels"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"tree"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"root":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":40},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"text":{"type":"string","minLength":1,"maxLength":60}},"required":["title"],"additionalProperties":false},"branches":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":32},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"children":{"description":"Short labels under the branch.","maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":32}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","root","branches"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"receipt"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"paper":{"description":"The title printed at the top of the paper, for example the shop. Default: none.","type":"string","minLength":1,"maxLength":40},"lines":{"minItems":2,"maxItems":7,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":36},"qty":{"description":"`2x`, `1 kg`, ...","type":"string","minLength":1,"maxLength":8},"amount":{"type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","amount","say"],"additionalProperties":false}},"total":{"type":"object","properties":{"label":{"description":"Default `Total`.","type":"string","minLength":1,"maxLength":16},"amount":{"type":"string","minLength":1,"maxLength":14},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["amount","say"],"additionalProperties":false},"note":{"description":"A line printed under the total, for example `Thank you!`.","type":"string","minLength":1,"maxLength":60},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","lines","total"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"checklist"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"detail":{"description":"A small note on the right, such as an amount.","type":"string","minLength":1,"maxLength":28},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"shortcuts"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"items":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"keys":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":10},"description":"The keys to press together, in order: `[\"Ctrl\", \"C\"]`."},"action":{"type":"string","minLength":1,"maxLength":40},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["keys","action","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"email"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"from":{"type":"string","minLength":1,"maxLength":48,"description":"The sender, a name or an address."},"to":{"type":"string","minLength":1,"maxLength":48,"description":"The recipient."},"subject":{"type":"string","minLength":1,"maxLength":90},"time":{"description":"`09:41`, `Mon`, ...","type":"string","minLength":1,"maxLength":16},"body":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":220},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"attachments":{"description":"File names shown as chips under the message.","maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":32}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","from","to","subject","body"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"search"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"query":{"type":"string","minLength":1,"maxLength":60},"count":{"description":"The line under the bar, for example `About 2.4 million results`.","type":"string","minLength":1,"maxLength":32},"results":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":60},"site":{"type":"string","minLength":1,"maxLength":40},"snippet":{"type":"string","minLength":1,"maxLength":140},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","site","snippet","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","query","results"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"ticket"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"carrier":{"description":"The airline, the event or the company, shown on the top of the ticket.","type":"string","minLength":1,"maxLength":32},"from":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":5},"city":{"type":"string","minLength":1,"maxLength":24}},"required":["code","city"],"additionalProperties":false},"to":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":5},"city":{"type":"string","minLength":1,"maxLength":24}},"required":["code","city"],"additionalProperties":false},"fields":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":16},"value":{"type":"string","minLength":1,"maxLength":24},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","value","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","from","to","fields"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"podium"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"places":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":28},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"score":{"type":"string","minLength":1,"maxLength":14},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["name","say"],"additionalProperties":false},"description":"First, second and third place, in that order."},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","places"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"scoreboard"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"home":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":24},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"score":{"type":"string","minLength":1,"maxLength":6}},"required":["name","score"],"additionalProperties":false},"away":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":24},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"score":{"type":"string","minLength":1,"maxLength":6}},"required":["name","score"],"additionalProperties":false},"status":{"type":"string","minLength":1,"maxLength":24},"moments":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"time":{"type":"string","minLength":1,"maxLength":8},"text":{"type":"string","minLength":1,"maxLength":60},"side":{"description":"Which side the moment belongs to. Default: neither.","type":"string","enum":["home","away"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["time","text","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","home","away","moments"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"bracket"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"rounds":{"minItems":2,"maxItems":3,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":20},"matches":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"a":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":14},"score":{"type":"string","minLength":1,"maxLength":4}},"required":["name"],"additionalProperties":false},"b":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":14},"score":{"type":"string","minLength":1,"maxLength":4}},"required":["name"],"additionalProperties":false},"winner":{"description":"Which side won, `a` or `b`. Leave out for a match that has not been played yet.","type":"string","enum":["a","b"]}},"required":["a","b"],"additionalProperties":false}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["name","matches","say"],"additionalProperties":false},"description":"The rounds from the first to the final. The winner of a match plays on in the next round: matches 1 and 2 feed match 1 there, matches 3 and 4 feed match 2."},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","rounds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"rating"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"score":{"type":"number","minimum":0,"maximum":5,"description":"The overall score from 0 to 5; halves are drawn as half stars."},"reviews":{"description":"`2,314 reviews`.","type":"string","minLength":1,"maxLength":24},"aspects":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":28},"value":{"type":"number","minimum":0,"maximum":5,"description":"From 0 to 5."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","value","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","score","aspects"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"forecast"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"place":{"description":"The place, shown above the days.","type":"string","minLength":1,"maxLength":32},"days":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"day":{"type":"string","minLength":1,"maxLength":12},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"A weather emoji such as ☀️ or 🌧️."},"high":{"type":"string","minLength":1,"maxLength":8},"low":{"type":"string","minLength":1,"maxLength":8},"note":{"type":"string","minLength":1,"maxLength":32},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["day","icon","high","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","days"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"playlist"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"label":{"description":"A small title above the rows, for example `Course · 4 lessons`.","type":"string","minLength":1,"maxLength":32},"items":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":48},"length":{"type":"string","minLength":1,"maxLength":8,"description":"`12:30`, `45 min`, ..."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","length","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"decision"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"question":{"type":"string","minLength":1,"maxLength":90},"options":{"minItems":2,"maxItems":3,"type":"array","items":{"type":"object","properties":{"answer":{"type":"string","minLength":1,"maxLength":24},"outcome":{"type":"string","minLength":1,"maxLength":70},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["answer","outcome","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","heading","question","options"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"hero"},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"The product picture. A cut-out with a transparent background looks best.","pictureSource":true},"name":{"type":"string","minLength":1,"maxLength":32,"description":"The product name."},"tagline":{"description":"One line that says what it does or why it matters.","type":"string","minLength":1,"maxLength":80},"badge":{"description":"A small label: `New`, `Best seller`, `-30%`.","type":"string","minLength":1,"maxLength":16},"price":{"type":"object","properties":{"now":{"type":"string","minLength":1,"maxLength":14,"description":"The price to pay, as written: `$49`, `€9.90`, `From $9`."},"was":{"description":"The old price, shown struck through.","type":"string","minLength":1,"maxLength":14},"period":{"description":"What the price covers: `/month`, `per box`.","type":"string","minLength":1,"maxLength":12}},"required":["now"],"additionalProperties":false},"stage":{"description":"The setting. `spotlight` (default) a pool of light, `pedestal` a round plinth, `orbit` rings circling the product, `burst` rays, for a sale, `reveal` the product comes out of the dark as a band of light sweeps across it and it stands on a glowing, reflective floor (the drop of a launch ad), `depth` the name in giant letters behind the product, which stands in front of it.","type":"string","enum":["spotlight","pedestal","orbit","burst","reveal","depth"]},"motion":{"description":"How the product moves. Default `float`; `reveal` and `depth` keep the product still unless you ask.","type":"string","enum":["float","sway","turn","pulse","still"]},"side":{"description":"Which side the product is on in a wide frame. Default `right`.","type":"string","enum":["left","right"]},"say":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","picture","name","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"hotspots"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"The product picture the pins sit on.","pictureSource":true},"points":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"at":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":100,"description":"Distance from the left edge of the picture, as a percentage of its width."},"y":{"type":"number","minimum":0,"maximum":100,"description":"Distance from the top edge of the picture, as a percentage of its height."},"width":{"type":"number","minimum":0,"maximum":100,"description":"Width of the area, as a percentage of the picture width."},"height":{"type":"number","minimum":0,"maximum":100,"description":"Height of the area, as a percentage of the picture height."}},"required":["x","y","width","height"],"additionalProperties":false,"regionOf":"picture","description":"The part of the picture the pin marks. The pin sits in the middle of this area."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":150},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["at","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","picture","points"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"device"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"device":{"description":"The frame around the screenshot. Default `phone`.","type":"string","enum":["phone","laptop","tablet","browser"]},"screen":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A screenshot of the app, site or dashboard.","pictureSource":true},"motion":{"description":"`zoom` (default) pushes slowly in, `scroll` moves a tall screenshot up through the screen, `still` holds it.","type":"string","enum":["scroll","zoom","still"]},"chips":{"description":"Short feature labels that pop up next to the device, one per narrated passage.","minItems":0,"maxItems":4,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"text":{"type":"string","minLength":1,"maxLength":28},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","screen","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"offer"},"eyebrow":{"description":"A small label above the title: `Limited time`, `Launch offer`.","type":"string","minLength":1,"maxLength":32},"title":{"type":"string","minLength":1,"maxLength":60,"description":"What the offer is, in a few words."},"badge":{"description":"The headline number: `-30%`, `2 for 1`, `FREE`.","type":"string","minLength":1,"maxLength":12},"price":{"type":"object","properties":{"now":{"type":"string","minLength":1,"maxLength":14,"description":"The price to pay, as written: `$49`, `€9.90`, `From $9`."},"was":{"description":"The old price, shown struck through.","type":"string","minLength":1,"maxLength":14},"period":{"description":"What the price covers: `/month`, `per box`.","type":"string","minLength":1,"maxLength":12}},"required":["now"],"additionalProperties":false},"code":{"description":"A coupon code, shown as a ticket.","type":"string","minLength":1,"maxLength":16},"ends":{"description":"The deadline: `Ends Sunday`.","type":"string","minLength":1,"maxLength":32},"perks":{"description":"Extras that come with it: `Free shipping`.","minItems":0,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"say":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","title","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"kinetic"},"lines":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":48,"description":"The words on screen. A short sentence reads best."},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["text","say"],"additionalProperties":false}},"layout":{"description":"`swap` (default) shows one line at a time, `stack` keeps the earlier lines above the current one.","type":"string","enum":["swap","stack"]},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","lines"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"montage"},"cuts":{"minItems":3,"maxItems":8,"type":"array","items":{"type":"object","properties":{"word":{"type":"string","minLength":1,"maxLength":22,"description":"The giant word of this cut."},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"The picture of this cut. Without one, the cut is a block of colour.","pictureSource":true},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["word","say"],"additionalProperties":false},"pictureList":"picture"},"fit":{"description":"`cover` (default) fills the frame with each picture, `contain` shows all of it on a block of colour: for cut-outs of the product.","type":"string","enum":["cover","contain"]},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","cuts"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"trust"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"rating":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":5,"description":"The average rating out of 5, such as 4.8."},"count":{"type":"string","minLength":1,"maxLength":24,"description":"How many ratings it is based on: `12,400 reviews`."},"source":{"description":"Where the rating comes from: `Trustpilot`.","type":"string","minLength":1,"maxLength":24},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["value","count","say"],"additionalProperties":false},"badges":{"minItems":0,"maxItems":4,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"title":{"type":"string","minLength":1,"maxLength":28},"text":{"type":"string","minLength":1,"maxLength":60},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["icon","title","say"],"additionalProperties":false},"description":"Trust badges. Needed when there is no `rating`."},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","badges"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"brandreveal"},"tagline":{"description":"Shown under the logo. Default: `brand.tagline`.","type":"string","minLength":1,"maxLength":60},"reveal":{"description":"How the logo arrives. `burst` (default) a flash of light, `sweep` a glint across it, `rise` from below, `zoom` from far away.","type":"string","enum":["burst","sweep","rise","zoom"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"showcase"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"layout":{"description":"`coverflow` (default) a row of pictures tilted in 3D, `filmstrip` a strip that slides, `mosaic` a grid that fills in.","type":"string","enum":["coverflow","filmstrip","mosaic"]},"fit":{"description":"`cover` (default) fills each frame with the picture, `contain` shows all of it: for cut-outs and products on plain backgrounds.","type":"string","enum":["cover","contain"]},"items":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A picture of this one.","pictureSource":true},"title":{"type":"string","minLength":1,"maxLength":32},"text":{"description":"One line of detail.","type":"string","minLength":1,"maxLength":60},"price":{"description":"Its price, as written.","type":"string","minLength":1,"maxLength":14},"tag":{"description":"A small label: `New`, `Best seller`.","type":"string","minLength":1,"maxLength":16},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["picture","title","say"],"additionalProperties":false},"pictureList":"picture"},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"specs"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"The product picture beside the facts. A cut-out looks best.","pictureSource":true},"layout":{"description":"`tiles` (default) a grid of big values, `rows` a list with the value at the end of each row.","type":"string","enum":["tiles","rows"]},"items":{"minItems":3,"maxItems":6,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"label":{"type":"string","minLength":1,"maxLength":24,"description":"What it measures: `Battery life`."},"value":{"type":"string","minLength":1,"maxLength":16,"description":"The figure, as written: `40 h`, `3 beds`."},"note":{"description":"A few words of detail.","type":"string","minLength":1,"maxLength":40},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["label","value","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"menu"},"eyebrow":{"description":"A small label above the heading: `Today's specials`.","type":"string","minLength":1,"maxLength":32},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A picture beside the list: a dish, a treatment, a room.","pictureSource":true},"items":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":32},"text":{"description":"What is in it, or what it includes.","type":"string","minLength":1,"maxLength":60},"price":{"type":"string","minLength":1,"maxLength":14,"description":"The price, as written: `$12`, `from €30`."},"tag":{"type":"string","minLength":1,"maxLength":16},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["name","price","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"event"},"eyebrow":{"description":"A small label above the title: `You are invited`.","type":"string","minLength":1,"maxLength":32},"title":{"type":"string","minLength":1,"maxLength":60,"description":"What the event is."},"date":{"type":"object","properties":{"day":{"type":"string","minLength":1,"maxLength":4,"description":"The day of the month, as written: `14`."},"month":{"type":"string","minLength":1,"maxLength":10,"description":"The month, as written: `NOV`, `November`."},"weekday":{"description":"`Friday`.","type":"string","minLength":1,"maxLength":12},"year":{"type":"string","minLength":1,"maxLength":6}},"required":["day","month"],"additionalProperties":false},"time":{"description":"`7 pm`, `10:00 - 16:00`.","type":"string","minLength":1,"maxLength":24},"place":{"description":"Where it is: `Café Aurora, Berlin`, `Online`.","type":"string","minLength":1,"maxLength":40},"host":{"description":"Who is hosting.","type":"string","minLength":1,"maxLength":40},"perks":{"description":"Why to come: `Free entry`, `Live music`.","minItems":0,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":28}},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A picture of the place or the host.","pictureSource":true},"say":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","title","date","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"reviews"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"rating":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":5,"description":"The average rating out of 5."},"count":{"type":"string","minLength":1,"maxLength":24,"description":"`12,400 reviews`."}},"required":["value","count"],"additionalProperties":false},"items":{"minItems":3,"maxItems":6,"type":"array","items":{"type":"object","properties":{"quote":{"type":"string","minLength":1,"maxLength":150},"name":{"type":"string","minLength":1,"maxLength":32},"role":{"description":"Who they are: `Verified buyer`, `Head of design`.","type":"string","minLength":1,"maxLength":40},"stars":{"description":"Its stars, 1 to 5. Leave out to show none.","type":"integer","minimum":1,"maximum":5},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["quote","name","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"orbit"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"hub":{"type":"object","properties":{"label":{"description":"Text in the middle. Default: the brand name, or nothing when there is a logo.","type":"string","minLength":1,"maxLength":24},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A picture in the middle. Default: `brand.logo`.","pictureSource":true}},"additionalProperties":false},"items":{"minItems":3,"maxItems":8,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"title":{"type":"string","minLength":1,"maxLength":24},"text":{"type":"string","minLength":1,"maxLength":48},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["icon","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"appui"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"title":{"type":"string","minLength":1,"maxLength":32,"description":"The title of the window: `Listening`, `New alert`, `Settings`."},"status":{"description":"A small live badge next to the title with a pulsing dot: `Live`, `Recording`.","type":"string","minLength":1,"maxLength":16},"surface":{"description":"The window itself: `light` (default) or `dark`, whatever the video looks like.","type":"string","enum":["light","dark"]},"rows":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["field","toggle","chips","button","item","note","progress"],"description":"What the row is. `field` a labelled input whose `value` is typed in with a caret, `toggle` a switch that flips (`on`, default true), `chips` a row of `options` with `pick` selected, `button` a pill button that is tapped, `item` a list entry with an `icon`, a title (`label`), a detail (`text`) and an amount (`value`), `note` a message such as an insight (`label` is its small title, `text` its body), `progress` a bar that fills to `percent`."},"label":{"type":"string","minLength":1,"maxLength":40,"description":"The label of the field, toggle or bar, the text of the button, the title of the item or the small title of the note."},"value":{"description":"A `field`: the text that is typed. An `item`: the amount at its end. A `progress`: the figure shown, such as `72%`.","type":"string","minLength":1,"maxLength":80},"text":{"description":"An `item`: the line under its title. A `note`: the message. Not used by the others.","type":"string","minLength":1,"maxLength":120},"options":{"description":"A `chips` row: the choices.","minItems":2,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":20}},"pick":{"description":"A `chips` row: which choice (counting from 0) is selected. Default 0.","type":"integer","minimum":0,"maximum":4},"on":{"description":"A `toggle`: whether it ends switched on. Default true.","type":"boolean"},"percent":{"description":"A `progress`: how full the bar gets, 0 to 100.","type":"number","minimum":0,"maximum":100},"icon":{"description":"An `item`: the symbol at its start. A `field` or `note`: a symbol beside its label.","type":"string","minLength":1,"maxLength":8},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["type","label","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","title","rows"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"cascade"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"layout":{"description":"`stack` (default), `wall` or `feed`.","type":"string","enum":["stack","wall","feed"]},"items":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"object","properties":{"meta":{"description":"A small line above the title: `Posted 2 minutes ago`.","type":"string","minLength":1,"maxLength":40},"title":{"type":"string","minLength":1,"maxLength":56},"text":{"description":"A line of detail under the title.","type":"string","minLength":1,"maxLength":110},"foot":{"description":"A small line at the bottom: `Payment verified`.","type":"string","minLength":1,"maxLength":40},"badge":{"description":"A pill at the bottom right: `Proposals: 50+`, `New`.","type":"string","minLength":1,"maxLength":20},"icon":{"description":"A symbol at the start of the card. Always shown in the `feed` layout.","type":"string","minLength":1,"maxLength":8},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"notify"},"heading":{"type":"string","minLength":1,"maxLength":60,"description":"Scene heading shown at the top."},"layout":{"description":"`lockscreen` (default) or `toasts`.","type":"string","enum":["lockscreen","toasts"]},"time":{"description":"The clock of the lock screen, as written. Default `9:41`.","type":"string","minLength":1,"maxLength":8},"date":{"description":"The date under the clock, as written: `Tuesday, 20 October`.","type":"string","minLength":1,"maxLength":24},"items":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"app":{"type":"string","minLength":1,"maxLength":24,"description":"The app it comes from: `Slack`, `Calendar`."},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"title":{"type":"string","minLength":1,"maxLength":48},"text":{"type":"string","minLength":1,"maxLength":100},"when":{"description":"When it arrived: `now`, `2m ago`.","type":"string","minLength":1,"maxLength":12},"tone":{"description":"Accent colour. `rose` marks a negative item (cross), `emerald` a positive one.","type":"string","enum":["violet","emerald","amber","rose","sky","fuchsia","teal","orange"]},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."}},"required":["app","icon","title","say"],"additionalProperties":false}},"lead":{"description":"Narration before the first item appears.","type":"string","minLength":1,"maxLength":500},"outro":{"description":"Narration after the last item.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","items"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"constellation"},"text":{"type":"string","minLength":1,"maxLength":60,"description":"The promise in the middle: `Connects to ==everything== you use`."},"items":{"minItems":4,"maxItems":14,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A logo or picture instead of the symbol.","pictureSource":true},"label":{"description":"Its name, under it.","type":"string","minLength":1,"maxLength":16}},"additionalProperties":false}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","text","items","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"endcard"},"headline":{"type":"string","minLength":1,"maxLength":80,"description":"The one thing to do, as a headline: `Get Aurora One today`."},"text":{"type":"string","minLength":1,"maxLength":150},"picture":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"A small picture of the product next to the headline.","pictureSource":true},"button":{"type":"string","minLength":1,"maxLength":24,"description":"The label of the button: `Shop now`, `Start free`."},"link":{"description":"The address to visit, as it should be read: `aurora.audio/one`.","type":"string","minLength":1,"maxLength":48},"offer":{"description":"A line about the offer, in a ribbon: `Free shipping this week`.","type":"string","minLength":1,"maxLength":40},"badges":{"description":"Where to get it: `App Store`, `Google Play`.","minItems":0,"maxItems":3,"type":"array","items":{"type":"string","minLength":1,"maxLength":20}},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","headline","button","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"cta"},"title":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":150},"button":{"description":"Label of the (decorative) button, for example `Subscribe`.","type":"string","minLength":1,"maxLength":24},"handle":{"description":"A handle or address, for example `@learnwithus` or `example.com`.","type":"string","minLength":1,"maxLength":40},"icon":{"type":"string","minLength":1,"maxLength":8,"description":"An emoji or a short symbol."},"say":{"type":"string","minLength":1,"maxLength":500,"description":"The narration for this item. It is spoken, and shown as the caption. With the premium voice, a tag such as `<sigh>`, `<laugh>` or `<short pause>` is performed at that spot and is not shown."},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","title","say"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"outro"},"lead":{"type":"string","minLength":1,"maxLength":500,"description":"Spoken as the card appears, e.g. `Let us recap.`"},"recap":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":150},"description":"The takeaways. Each is shown on the card and spoken."},"next":{"description":"Teaser for what comes next.","type":"string","minLength":1,"maxLength":500},"delivery":{"description":"Premium voice only: how this scene is spoken, added to the delivery of the whole video, e.g. \"building excitement\" or \"quiet and sincere\". Leave out to keep the video's delivery.","type":"string","minLength":1,"maxLength":120},"hold":{"description":"Extra seconds the scene stays on screen after its narration ends, so a chart, a picture or a clip can be looked at. Leave out for none.","type":"number","minimum":0,"maximum":60},"transition":{"description":"Overrides `style.transition` for the way this scene comes in.","type":"string","enum":["rise","fade","slide-left","slide-right","slide-up","slide-down","zoom-in","zoom-out","blur","blur-zoom","whip","flip","cube","wipe","wipe-up","iris","diamond","split-h","swirl","drop","bounce","elastic","through","burn","dip","flash","glitch","tv","none"]},"enter":{"description":"Overrides `style.enter` for the items of this scene.","type":"string","enum":["pop","fade","slide-up","slide-left","slide-right","slide-blur","drift","zoom","focus-pull","blur","flip","tilt","rotate","swing","bounce","drop","elastic","grow","launch","reveal","reveal-up","curtain","iris","warp-in","flash","glitch","none"]},"image":{"description":"A picture behind or beside this scene.","type":"object","properties":{"src":{"type":"string","pattern":"^(https?:\\/\\/|data:image\\/|\\/)","description":"Address of the picture: one made or uploaded in the editor (`/api/assets/<id>`), or an http(s) link."},"alt":{"description":"What the picture shows.","type":"string","minLength":1,"maxLength":150},"mode":{"description":"`backdrop` (default) fills the whole frame behind the scene, softened so the text stays readable. `cutout` is a picture with a transparent background that floats beside the content. `card` is a framed photo, slightly tilted, beside the content.","type":"string","enum":["backdrop","cutout","card"]},"side":{"description":"Which side a `cutout` or `card` sits on. Default `right`. Ignored for a backdrop.","type":"string","enum":["left","right"]},"motion":{"description":"How the picture moves. Backdrop: `zoom-in` or `zoom-out` (default, they alternate), `pan`, `still`. Cut-out and card: `float` (default), `sway`, `spin` (turns round), `turn` (swings like a 3D display), `pulse`, `bounce`, `still`.","type":"string","enum":["zoom-in","zoom-out","pan","float","sway","spin","turn","pulse","bounce","still"]},"prompt":{"description":"What the AI was asked to paint. Kept so the picture can be made again; it is not shown.","type":"string","minLength":1,"maxLength":600}},"required":["src"],"additionalProperties":false},"header":{"description":"`false` hides the top bar (host, title, kicker, brand) during this scene; `true` shows it where it would not be, such as on the title card. See `style.header` for the video as a whole.","type":"boolean"},"progress":{"description":"`false` hides the progress indicator during this scene; `true` shows it (as a bar when the video has no `style.progress`).","type":"boolean"}},"required":["kind","lead","recap"],"additionalProperties":false}]}}},"required":["title","scenes"],"additionalProperties":false}