# AI Bedtime Story TikTok Video (video template) > Effortlessly create bedtime story videos with AI! Automated editing blends soothing voiceovers, enchanting visuals, and captions for magical storytelling. ## Overview - **Page**: https://shotstack.io/studio/templates/automated-tiktok-video-bedtime-story/ - **Output**: MP4, 720x1280 (9:16), 25 fps - **Length**: 37s - **Timeline**: 14 clips on 6 tracks; assets: caption, image, text, text-to-image, text-to-speech - **Render endpoint (sandbox, free, watermarked)**: POST https://api.shotstack.io/edit/stage/render with header `x-api-key` - **Production**: same request against https://api.shotstack.io/edit/v1/render with a v1 key - **Preview in the browser (no account)**: https://shotstack.studio/#json=eyJ0aW1lbGluZSI6eyJiYWNrZ3JvdW5kIjoiIzAwMDAwMCIsInRyYWNrcyI6W3siY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Int7IEhFQURMSU5FIH19IiwiYWxpZ25tZW50Ijp7Imhvcml6b250YWwiOiJjZW50ZXIiLCJ2ZXJ0aWNhbCI6ImNlbnRlciJ9LCJmb250Ijp7ImNvbG9yIjoiIzAwMDAwMCIsImZhbWlseSI6Ik1vbnRzZXJyYXQgRXh0cmFCb2xkIiwic2l6ZSI6IjYwIiwibGluZUhlaWdodCI6MX0sIndpZHRoIjo0NjMsImhlaWdodCI6MjAwfSwic3RhcnQiOjAsImxlbmd0aCI6ImF1dG8iLCJvZmZzZXQiOnsieCI6MCwieSI6MC4zMDl9LCJwb3NpdGlvbiI6ImNlbnRlciIsImZpdCI6Im5vbmUiLCJzY2FsZSI6MX1dfSx7ImNsaXBzIjpbeyJsZW5ndGgiOiJhdXRvIiwiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2F1dG9tYXRlZC10aWt0b2stdmlkZW8tYmVkdGltZS1zdG9yeS8zOGNkYjgyOS1lYzI0LTQ4OWItYTQ5NS1kNDAwNDg3MzQyMDUucG5nIn0sInN0YXJ0IjowLCJzY2FsZSI6MC4yLCJvZmZzZXQiOnsieCI6MCwieSI6MC4zMDh9LCJwb3NpdGlvbiI6ImNlbnRlciJ9XX0seyJjbGlwcyI6W3sibGVuZ3RoIjoiZW5kIiwiYXNzZXQiOnsidHlwZSI6ImNhcHRpb24iLCJzcmMiOiJhbGlhczovL1ZPSUNFT1ZFUiIsImJhY2tncm91bmQiOnsiY29sb3IiOiIjMDA5MWZmIiwicGFkZGluZyI6MjUsImJvcmRlclJhZGl1cyI6OX0sImZvbnQiOnsic2l6ZSI6IjMyIn19LCJzdGFydCI6MH1dfSx7ImNsaXBzIjpbeyJmaXQiOiJub25lIiwic2NhbGUiOjEsImxlbmd0aCI6NSwiYXNzZXQiOnsid2lkdGgiOiI3NjgiLCJoZWlnaHQiOiIxMjgwIiwidHlwZSI6InRleHQtdG8taW1hZ2UiLCJwcm9tcHQiOiJ7eyBJTUFHRV8yX1BST01QVCB9fSJ9LCJzdGFydCI6NCwidHJhbnNpdGlvbiI6eyJvdXQiOiJmYWRlIiwiaW4iOiJmYWRlIn0sImVmZmVjdCI6Inpvb21PdXQifSx7ImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwibGVuZ3RoIjo1LCJhc3NldCI6eyJ3aWR0aCI6Ijc2OCIsImhlaWdodCI6IjEyODAiLCJ0eXBlIjoidGV4dC10by1pbWFnZSIsInByb21wdCI6Int7IElNQUdFXzRfUFJPTVBUIH19In0sInN0YXJ0IjoxMiwidHJhbnNpdGlvbiI6eyJvdXQiOiJmYWRlIiwiaW4iOiJmYWRlIn0sImVmZmVjdCI6InNsaWRlUmlnaHQifSx7ImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwibGVuZ3RoIjo1LCJhc3NldCI6eyJ3aWR0aCI6Ijc2OCIsImhlaWdodCI6IjEyODAiLCJ0eXBlIjoidGV4dC10by1pbWFnZSIsInByb21wdCI6Int7IElNQUdFXzZfUFJPTVBUIH19In0sInN0YXJ0IjoyMCwidHJhbnNpdGlvbiI6eyJvdXQiOiJmYWRlIiwiaW4iOiJmYWRlIn0sImVmZmVjdCI6InNsaWRlRG93biJ9LHsiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJsZW5ndGgiOjUsImFzc2V0Ijp7IndpZHRoIjoiNzY4IiwiaGVpZ2h0IjoiMTI4MCIsInR5cGUiOiJ0ZXh0LXRvLWltYWdlIiwicHJvbXB0Ijoie3sgSU1BR0VfOF9QUk9NUFQgfX0ifSwic3RhcnQiOjI4LCJ0cmFuc2l0aW9uIjp7Im91dCI6ImZhZGUiLCJpbiI6ImZhZGUifSwiZWZmZWN0Ijoiem9vbU91dCJ9LHsiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJsZW5ndGgiOiJlbmQiLCJhc3NldCI6eyJ3aWR0aCI6Ijc2OCIsImhlaWdodCI6IjEyODAiLCJ0eXBlIjoidGV4dC10by1pbWFnZSIsInByb21wdCI6Int7IElNQUdFXzEwX1BST01QVCB9fSJ9LCJzdGFydCI6MzYsInRyYW5zaXRpb24iOnsib3V0IjoiZmFkZSIsImluIjoiZmFkZSJ9LCJlZmZlY3QiOiJzbGlkZVJpZ2h0In1dfSx7ImNsaXBzIjpbeyJsZW5ndGgiOjUsImFzc2V0Ijp7IndpZHRoIjoiNzY4IiwiaGVpZ2h0IjoiMTI4MCIsInR5cGUiOiJ0ZXh0LXRvLWltYWdlIiwicHJvbXB0Ijoie3sgSU1BR0VfMV9QUk9NUFQgfX0ifSwic3RhcnQiOjAsInRyYW5zaXRpb24iOnsib3V0IjoiZmFkZSJ9LCJlZmZlY3QiOiJ6b29tSW4iLCJwb3NpdGlvbiI6ImNlbnRlciJ9LHsiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJsZW5ndGgiOjUsImFzc2V0Ijp7IndpZHRoIjoiNzY4IiwiaGVpZ2h0IjoiMTI4MCIsInR5cGUiOiJ0ZXh0LXRvLWltYWdlIiwicHJvbXB0Ijoie3sgSU1BR0VfM19QUk9NUFQgfX0ifSwic3RhcnQiOjgsInRyYW5zaXRpb24iOnsib3V0IjoiZmFkZSIsImluIjoiZmFkZSJ9LCJlZmZlY3QiOiJzbGlkZUxlZnQiLCJvZmZzZXQiOnsieCI6MC4wMjEsInkiOjB9LCJwb3NpdGlvbiI6ImNlbnRlciJ9LHsiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJsZW5ndGgiOjUsImFzc2V0Ijp7IndpZHRoIjoiNzY4IiwiaGVpZ2h0IjoiMTI4MCIsInR5cGUiOiJ0ZXh0LXRvLWltYWdlIiwicHJvbXB0Ijoie3sgSU1BR0VfNV9QUk9NUFQgfX0ifSwic3RhcnQiOjE2LCJ0cmFuc2l0aW9uIjp7Im91dCI6ImZhZGUiLCJpbiI6ImZhZGUifSwiZWZmZWN0Ijoic2xpZGVVcCJ9LHsiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJsZW5ndGgiOjUsImFzc2V0Ijp7IndpZHRoIjoiNzY4IiwiaGVpZ2h0IjoiMTI4MCIsInR5cGUiOiJ0ZXh0LXRvLWltYWdlIiwicHJvbXB0Ijoie3sgSU1BR0VfN19QUk9NUFQgfX0ifSwic3RhcnQiOjI0LCJ0cmFuc2l0aW9uIjp7Im91dCI6ImZhZGUiLCJpbiI6ImZhZGUifSwiZWZmZWN0Ijoiem9vbUluIn0seyJmaXQiOiJub25lIiwic2NhbGUiOjEsImxlbmd0aCI6NSwiYXNzZXQiOnsid2lkdGgiOiI3NjgiLCJoZWlnaHQiOiIxMjgwIiwidHlwZSI6InRleHQtdG8taW1hZ2UiLCJwcm9tcHQiOiJ7eyBJTUFHRV85X1BST01QVCB9fSJ9LCJzdGFydCI6MzIsInRyYW5zaXRpb24iOnsib3V0IjoiZmFkZSIsImluIjoiZmFkZSJ9LCJlZmZlY3QiOiJzbGlkZUxlZnQifV19LHsiY2xpcHMiOlt7Imxlbmd0aCI6ImF1dG8iLCJhc3NldCI6eyJ2b2ljZSI6IkFteSIsInRleHQiOiJPbiBhIHF1aWV0IG5pZ2h0LCBsaXR0bGUgTHVuYSBsYXkgaW4gYmVkLCBzdGFyaW5nIGF0IHRoZSBzdGFycnkgc2t5IGZyb20gaGVyIHdpbmRvdy4gT25lIHN0YXIsIGJyaWdodGVyIHRoYW4gYWxsIHRoZSBvdGhlcnMsIHNlZW1lZCB0byB0d2lua2xlIGp1c3QgZm9yIGhlci4gU3VkZGVubHksIHRoZSBzdGFyIGZsaWNrZXJlZCBhbmQgZmxvYXRlZCBkb3duLCBsYW5kaW5nIGdlbnRseSBvbiBoZXIgd2luZG93c2lsbC4g4oCcQ29tZSB3aXRoIG1lLOKAnSB0aGUgc3RhciB3aGlzcGVyZWQsIOKAnGFuZCBJ4oCZbGwgc2hvdyB5b3UgdGhlIHdvcmxkIGJleW9uZCB0aGUgc2t5LuKAnSBMdW5hIHN0ZXBwZWQgb250byB0aGUgc3RhcmxpZ2h0IHBhdGggYW5kIGZlbHQgaGVyc2VsZiBnZW50bHkgbGlmdGVkIGludG8gdGhlIGFpci4gSGlnaGVyIGFuZCBoaWdoZXIgdGhleSBmbGV3LCBwYXN0IHRoZSBjbG91ZHMgYW5kIGludG8gdGhlIHNwYXJrbGluZyBuaWdodC4gU29vbiwgdGhleSByZWFjaGVkIGEgbWFnaWNhbCBwbGFjZSB3aGVyZSB0aGUgc3RhcnMgZGFuY2VkIGFuZCBzYW5nLiDigJxZb3Ugc2VlLCBldmVyeSBzdGFyIGhhcyBhIHNvbmcs4oCdIHRoZSBzdGFyIGV4cGxhaW5lZCwg4oCcYW5kIHRoZXkgYWxsIGNvbWUgdG9nZXRoZXIgdG8gbWFrZSB0aGUgbmlnaHQgYmVhdXRpZnVsLuKAnSBBZnRlciBhIHdoaWxlLCBpdCB3YXMgdGltZSBmb3IgTHVuYSB0byByZXR1cm4uIFRoZSBzdGFyIGdlbnRseSBndWlkZWQgaGVyIGJhY2sgaG9tZS4gTHVuYSBzbGlwcGVkIGJhY2sgaW50byBoZXIgYmVkLCBmZWVsaW5nIHdhcm0gYW5kIHNhZmUsIGFzIHRoZSBzdGFyIHdoaXNwZXJlZCwg4oCcR29vZG5pZ2h0LCBMdW5hLuKAnSIsInR5cGUiOiJ0ZXh0LXRvLXNwZWVjaCJ9LCJzdGFydCI6MCwiYWxpYXMiOiJWT0lDRU9WRVIifV19XX0sIm91dHB1dCI6eyJmb3JtYXQiOiJtcDQiLCJmcHMiOjI1LCJzaXplIjp7IndpZHRoIjo3MjAsImhlaWdodCI6MTI4MH19LCJtZXJnZSI6W3siZmluZCI6IkhFQURMSU5FIiwicmVwbGFjZSI6Ikx1bmHigJlzIE1hZ2ljYWwgTmlnaHQifSx7ImZpbmQiOiJWT0lDRU9WRVIiLCJyZXBsYWNlIjoiT24gYSBxdWlldCBuaWdodCwgbGl0dGxlIEx1bmEgbGF5IGluIGJlZCwgc3RhcmluZyBhdCB0aGUgc3RhcnJ5IHNreSBmcm9tIGhlciB3aW5kb3cuIE9uZSBzdGFyLCBicmlnaHRlciB0aGFuIGFsbCB0aGUgb3RoZXJzLCBzZWVtZWQgdG8gdHdpbmtsZSBqdXN0IGZvciBoZXIuIFN1ZGRlbmx5LCB0aGUgc3RhciBmbGlja2VyZWQgYW5kIGZsb2F0ZWQgZG93biwgbGFuZGluZyBnZW50bHkgb24gaGVyIHdpbmRvd3NpbGwuIOKAnENvbWUgd2l0aCBtZSzigJ0gdGhlIHN0YXIgd2hpc3BlcmVkLCDigJxhbmQgSeKAmWxsIHNob3cgeW91IHRoZSB3b3JsZCBiZXlvbmQgdGhlIHNreS7igJ0gTHVuYSBzdGVwcGVkIG9udG8gdGhlIHN0YXJsaWdodCBwYXRoIGFuZCBmZWx0IGhlcnNlbGYgZ2VudGx5IGxpZnRlZCBpbnRvIHRoZSBhaXIuIEhpZ2hlciBhbmQgaGlnaGVyIHRoZXkgZmxldywgcGFzdCB0aGUgY2xvdWRzIGFuZCBpbnRvIHRoZSBzcGFya2xpbmcgbmlnaHQuIFNvb24sIHRoZXkgcmVhY2hlZCBhIG1hZ2ljYWwgcGxhY2Ugd2hlcmUgdGhlIHN0YXJzIGRhbmNlZCBhbmQgc2FuZy4g4oCcWW91IHNlZSwgZXZlcnkgc3RhciBoYXMgYSBzb25nLOKAnSB0aGUgc3RhciBleHBsYWluZWQsIOKAnGFuZCB0aGV5IGFsbCBjb21lIHRvZ2V0aGVyIHRvIG1ha2UgdGhlIG5pZ2h0IGJlYXV0aWZ1bC7igJ0gQWZ0ZXIgYSB3aGlsZSwgaXQgd2FzIHRpbWUgZm9yIEx1bmEgdG8gcmV0dXJuLiBUaGUgc3RhciBnZW50bHkgZ3VpZGVkIGhlciBiYWNrIGhvbWUuIEx1bmEgc2xpcHBlZCBiYWNrIGludG8gaGVyIGJlZCwgZmVlbGluZyB3YXJtIGFuZCBzYWZlLCBhcyB0aGUgc3RhciB3aGlzcGVyZWQsIOKAnEdvb2RuaWdodCwgTHVuYS7igJ0ifSx7ImZpbmQiOiJJTUFHRV8xX1BST01QVCIsInJlcGxhY2UiOiJBIGRyYXdpbmcgb2YgYSBjb3p5IGJlZHJvb20gd2l0aCBzb2Z0IGxpZ2h0aW5nLCBzaG93aW5nIEx1bmEsIGEgeW91bmcgZ2lybCBhYm91dCA2IHllYXJzIG9sZC4gTHVuYSBoYXMgc2hvdWxkZXItbGVuZ3RoLCB3YXZ5IGRhcmsgYnJvd24gaGFpciwgYmlnIGN1cmlvdXMgZ3JlZW4gZXllcywgYW5kIGEgc21hbGwgYnV0dG9uIG5vc2UuIFNoZeKAmXMgd2VhcmluZyBhIHNvZnQgd2hpdGUgbmlnaHRnb3duIHdpdGggbGlnaHQgYmx1ZSB0cmltLiBIZXIgc2tpbiBpcyBmYWlyIHdpdGggYSBzbGlnaHQgYmx1c2ggb24gaGVyIGNoZWVrcy4gU2hl4oCZcyB0dWNrZWQgdW5kZXIgYSB3YXJtIGJsYW5rZXQsIGxvb2tpbmcgb3V0IHRoZSB3aW5kb3cuIE91dHNpZGUgaGVyIHdpbmRvdywgYSBjbGVhciBuaWdodCBza3kgZnVsbCBvZiBzdGFycyBzcGFya2xlcyBicmlnaHRseS4gTHVuYeKAmXMgd2lkZSBleWVzIGFyZSBmaWxsZWQgd2l0aCB3b25kZXIgYXMgc2hlIGdhemVzIGF0IHRoZSBzdGFycywgc3R5bGUgb2YgTWF1cmljZSBTZW5kYWssIGluc3BpcmVkIGJ5IE1hdXJpY2UgU2VuZGFrLCBmYWlyeSB0YWxlIGlsbHVzdHJhdGlvbnMsIHN0b3J5Ym9vayBpbGx1c3RyYXRpb24sIGluc3BpcmVkIGJ5IEd1c3RhZiBUZW5nZ3JlbiwgY2xhc3NpYyBjaGlsZHJlbuKAmXMgaWxsdXN0cmF0aW9ucywgd2hpbXNpY2FsIGNyZWF0dXJlcy4ifSx7ImZpbmQiOiJJTUFHRV8yX1BST01QVCIsInJlcGxhY2UiOiJBIGRyYXdpbmcgb2YgYSBjbG9zZS11cCBvZiBMdW5h4oCZcyBmYWNlLCBzaG93aW5nIGhlciBiaWcgZ3JlZW4gZXllcyBmaWxsZWQgd2l0aCBhbWF6ZW1lbnQuIEhlciBzaG91bGRlci1sZW5ndGgsIHdhdnkgZGFyayBicm93biBoYWlyIGZyYW1lcyBoZXIgZmFjZS4gTHVuYeKAmXMgc21hbGwgYnV0dG9uIG5vc2UgYW5kIGZhaXIgc2tpbiB3aXRoIGEgc29mdCBibHVzaCBvbiBoZXIgY2hlZWtzIGdpdmUgaGVyIGEgc2Vuc2Ugb2YgY2hpbGRsaWtlIGlubm9jZW5jZS4gU2hl4oCZcyB3ZWFyaW5nIGEgd2hpdGUgbmlnaHRnb3duIHdpdGggbGlnaHQgYmx1ZSB0cmltLiBTaGUgaXMgZ2F6aW5nIG91dCB0aGUgd2luZG93IGF0IGEgc2luZ2xlIHN0YXIgZ2xvd2luZyBicmlnaHRseSBpbiB0aGUgc2t5LCBjYXN0aW5nIGEgc29mdCBtYWdpY2FsIGdsb3cgb24gaGVyIGZhY2UuIFRoZSBzdGFyIHR3aW5rbGVzIGFzIGlmIGl04oCZcyBjYWxsaW5nIG91dCB0byBoZXIsIHN0eWxlIG9mIE1hdXJpY2UgU2VuZGFrLCBpbnNwaXJlZCBieSBNYXVyaWNlIFNlbmRhaywgZmFpcnkgdGFsZSBpbGx1c3RyYXRpb25zLCBzdG9yeWJvb2sgaWxsdXN0cmF0aW9uLCBpbnNwaXJlZCBieSBHdXN0YWYgVGVuZ2dyZW4sIGNsYXNzaWMgY2hpbGRyZW7igJlzIGlsbHVzdHJhdGlvbnMsIHdoaW1zaWNhbCBjcmVhdHVyZXMuIn0seyJmaW5kIjoiSU1BR0VfM19QUk9NUFQiLCJyZXBsYWNlIjoiQSBkcmF3aW5nIG9mIGEgY2xvc2UtdXAgb2YgTHVuYeKAmXMgZmFjZSwgc2hvd2luZyBoZXIgYmlnIGdyZWVuIGV5ZXMgZmlsbGVkIHdpdGggYW1hemVtZW50LiBIZXIgc2hvdWxkZXItbGVuZ3RoLCB3YXZ5IGRhcmsgYnJvd24gaGFpciBmcmFtZXMgaGVyIGZhY2UuIEx1bmHigJlzIHNtYWxsIGJ1dHRvbiBub3NlIGFuZCBmYWlyIHNraW4gd2l0aCBhIHNvZnQgYmx1c2ggb24gaGVyIGNoZWVrcyBnaXZlIGhlciBhIHNlbnNlIG9mIGNoaWxkbGlrZSBpbm5vY2VuY2UuIFNoZeKAmXMgd2VhcmluZyBhIHdoaXRlIG5pZ2h0Z293biB3aXRoIGxpZ2h0IGJsdWUgdHJpbS4gU2hlIGlzIGdhemluZyBvdXQgdGhlIHdpbmRvdyBhdCBhIHNpbmdsZSBzdGFyIGdsb3dpbmcgYnJpZ2h0bHkgaW4gdGhlIHNreSwgY2FzdGluZyBhIHNvZnQgbWFnaWNhbCBnbG93IG9uIGhlciBmYWNlLiBUaGUgc3RhciB0d2lua2xlcyBhcyBpZiBpdOKAmXMgY2FsbGluZyBvdXQgdG8gaGVyLCBzdHlsZSBvZiBNYXVyaWNlIFNlbmRhaywgaW5zcGlyZWQgYnkgTWF1cmljZSBTZW5kYWssIGZhaXJ5IHRhbGUgaWxsdXN0cmF0aW9ucywgc3Rvcnlib29rIGlsbHVzdHJhdGlvbiwgaW5zcGlyZWQgYnkgR3VzdGFmIFRlbmdncmVuLCBjbGFzc2ljIGNoaWxkcmVu4oCZcyBpbGx1c3RyYXRpb25zLCB3aGltc2ljYWwgY3JlYXR1cmVzLiJ9LHsiZmluZCI6IklNQUdFXzRfUFJPTVBUIiwicmVwbGFjZSI6IkEgZHJhd2luZyBvZiBMdW5hIGxlYW5pbmcgZm9yd2FyZCBmcm9tIGhlciBiZWQsIGdhemluZyBpbiBhd2UgYXQgdGhlIG1hZ2ljYWwgc3RhciBvdXRzaWRlIGhlciB3aW5kb3cuIEhlciB3YXZ5IGRhcmsgYnJvd24gaGFpciBmYWxscyBqdXN0IHBhc3QgaGVyIHNob3VsZGVycywgYW5kIGhlciB3aWRlIGdyZWVuIGV5ZXMgYXJlIGZpeGVkIG9uIHRoZSBzdGFyIHdpdGggY3VyaW9zaXR5IGFuZCBleGNpdGVtZW50LiBMdW5hIGlzIHdlYXJpbmcgYSB3aGl0ZSBuaWdodGdvd24gd2l0aCBsaWdodCBibHVlIHRyaW0uIEhlciBmYWlyIHNraW4gYW5kIHNsaWdodCBibHVzaCBnaXZlIGhlciBhbiBpbm5vY2VudCBsb29rLiBUaGUgc3RhciBmb3JtcyBhIHNoaW1tZXJpbmcgcGF0aCBsZWFkaW5nIGludG8gdGhlIHNreSwgaW52aXRpbmcgaGVyIHRvIGZvbGxvdywgc3R5bGUgb2YgTWF1cmljZSBTZW5kYWssIGluc3BpcmVkIGJ5IE1hdXJpY2UgU2VuZGFrLCBmYWlyeSB0YWxlIGlsbHVzdHJhdGlvbnMsIHN0b3J5Ym9vayBpbGx1c3RyYXRpb24sIGluc3BpcmVkIGJ5IEd1c3RhZiBUZW5nZ3JlbiwgY2xhc3NpYyBjaGlsZHJlbuKAmXMgaWxsdXN0cmF0aW9ucywgd2hpbXNpY2FsIGNyZWF0dXJlcy4ifSx7ImZpbmQiOiJJTUFHRV81X1BST01QVCIsInJlcGxhY2UiOiJBIGRyYXdpbmcgb2YgTHVuYSBzdGVwcGluZyBvdXQgb2YgaGVyIHdpbmRvdyBvbnRvIGEgZ2xvd2luZywgbWFnaWNhbCBwYXRoIG9mIHN0YXJsaWdodC4gSGVyIGRhcmsgYnJvd24gd2F2eSBoYWlyIGlzIGdlbnRseSBmbG93aW5nIGluIHRoZSBicmVlemUsIGhlciBiaWcgZ3JlZW4gZXllcyB3aWRlIHdpdGggZXhjaXRlbWVudC4gU2hl4oCZcyB3ZWFyaW5nIGEgd2hpdGUgbmlnaHRnb3duIHdpdGggbGlnaHQgYmx1ZSB0cmltLCBhbmQgaGVyIGZhaXIgc2tpbiBoYXMgYSBzb2Z0IGJsdXNoIG9uIGhlciBjaGVla3MuIEx1bmEgaXMgZmxvYXRpbmcganVzdCBhYm92ZSB0aGUgZ3JvdW5kLCBsb29raW5nIGpveWZ1bCBhbmQgZnJlZSBhcyBzaGUgZm9sbG93cyB0aGUgbWFnaWNhbCBzdGFyLCBzdHlsZSBvZiBNYXVyaWNlIFNlbmRhaywgaW5zcGlyZWQgYnkgTWF1cmljZSBTZW5kYWssIGZhaXJ5IHRhbGUgaWxsdXN0cmF0aW9ucywgc3Rvcnlib29rIGlsbHVzdHJhdGlvbiwgaW5zcGlyZWQgYnkgR3VzdGFmIFRlbmdncmVuLCBjbGFzc2ljIGNoaWxkcmVu4oCZcyBpbGx1c3RyYXRpb25zLCB3aGltc2ljYWwgY3JlYXR1cmVzLiJ9LHsiZmluZCI6IklNQUdFXzZfUFJPTVBUIiwicmVwbGFjZSI6IkEgZHJhd2luZyBvZiBMdW5hIGZseWluZyBoaWdoIGluIHRoZSBza3kgd2l0aCB0aGUgZ2xvd2luZyBzdGFyIGJlc2lkZSBoZXIuIEhlciBzaG91bGRlci1sZW5ndGggd2F2eSBkYXJrIGJyb3duIGhhaXIgZmxvd3MgYmVoaW5kIGhlciBhcyBzaGUgc29hcnMgdGhyb3VnaCB0aGUgYWlyLiBIZXIgZ3JlZW4gZXllcyBhcmUgd2lkZSB3aXRoIGpveSwgYW5kIGhlciB3aGl0ZSBuaWdodGdvd24gd2l0aCBsaWdodCBibHVlIHRyaW0gZmx1dHRlcnMgZ2VudGx5IGluIHRoZSBicmVlemUuIEhlciBmYWlyIHNraW4gaGFzIGEgaGVhbHRoeSBnbG93IGFzIHNoZSB0YWtlcyBpbiB0aGUgc2lnaHQgb2YgZmx1ZmZ5IGNsb3VkcyBhbmQgdGhlIHR3aW5rbGluZyBzdGFycyBhYm92ZSwgc3R5bGUgb2YgTWF1cmljZSBTZW5kYWssIGluc3BpcmVkIGJ5IE1hdXJpY2UgU2VuZGFrLCBmYWlyeSB0YWxlIGlsbHVzdHJhdGlvbnMsIHN0b3J5Ym9vayBpbGx1c3RyYXRpb24sIGluc3BpcmVkIGJ5IEd1c3RhZiBUZW5nZ3JlbiwgY2xhc3NpYyBjaGlsZHJlbuKAmXMgaWxsdXN0cmF0aW9ucywgd2hpbXNpY2FsIGNyZWF0dXJlcy4ifSx7ImZpbmQiOiJJTUFHRV83X1BST01QVCIsInJlcGxhY2UiOiJBIGRyYXdpbmcgb2YgTHVuYSB3YXRjaGluZyBpbiBhd2UgYXMgc3RhcnMgZGFuY2UgYW5kIHNpbmcgaW4gdGhlIHNreS4gSGVyIHdhdnkgZGFyayBicm93biBoYWlyIGZyYW1lcyBoZXIgZmFjZSwgYW5kIGhlciBiaWcgZ3JlZW4gZXllcyBhcmUgZmlsbGVkIHdpdGggd29uZGVyLiBTaGXigJlzIHdlYXJpbmcgaGVyIHNvZnQgd2hpdGUgbmlnaHRnb3duIHdpdGggbGlnaHQgYmx1ZSB0cmltLCBhbmQgaGVyIGNoZWVrcyBoYXZlIGEgZ2VudGxlIGJsdXNoLiBTaGUgZmxvYXRzIGdlbnRseSBpbiB0aGUgYWlyLCBzdXJyb3VuZGVkIGJ5IG1hZ2ljYWwgc3RhcmxpZ2h0LCBhcyBzdGFycyBmb3JtIGNvbnN0ZWxsYXRpb25zIGFuZCBwYXR0ZXJucyBhcm91bmQgaGVyLCBzdHlsZSBvZiBNYXVyaWNlIFNlbmRhaywgaW5zcGlyZWQgYnkgTWF1cmljZSBTZW5kYWssIGZhaXJ5IHRhbGUgaWxsdXN0cmF0aW9ucywgc3Rvcnlib29rIGlsbHVzdHJhdGlvbiwgaW5zcGlyZWQgYnkgR3VzdGFmIFRlbmdncmVuLCBjbGFzc2ljIGNoaWxkcmVu4oCZcyBpbGx1c3RyYXRpb25zLCB3aGltc2ljYWwgY3JlYXR1cmVzLiJ9LHsiZmluZCI6IklNQUdFXzhfUFJPTVBUIiwicmVwbGFjZSI6IkEgZHJhd2luZyBvZiBMdW5hIGluIHRoZSBza3ksIGxvb2tpbmcgaW50ZW50bHkgYXQgdGhlIGdsb3dpbmcgc3RhciBiZXNpZGUgaGVyLiBIZXIgc2hvdWxkZXItbGVuZ3RoLCB3YXZ5IGRhcmsgYnJvd24gaGFpciBnZW50bHkgbW92ZXMgd2l0aCB0aGUgYnJlZXplLiBIZXIgd2lkZSBncmVlbiBleWVzIGFyZSBmb2N1c2VkLCBmaWxsZWQgd2l0aCBjdXJpb3NpdHkgYW5kIGF3ZSBhcyBzaGUgbGlzdGVucyB0byB0aGUgc3RhciBleHBsYWluIHRoZSBtYWdpYyBvZiB0aGUgc3RhcnMuIEx1bmHigJlzIHdoaXRlIG5pZ2h0Z293biB3aXRoIGxpZ2h0IGJsdWUgdHJpbSBmbHV0dGVycyBzbGlnaHRseSwgYW5kIGhlciBmYWlyIHNraW4gZ2xvd3Mgc29mdGx5IGluIHRoZSBzdGFybGlnaHQsIHN0eWxlIG9mIE1hdXJpY2UgU2VuZGFrLCBpbnNwaXJlZCBieSBNYXVyaWNlIFNlbmRhaywgZmFpcnkgdGFsZSBpbGx1c3RyYXRpb25zLCBzdG9yeWJvb2sgaWxsdXN0cmF0aW9uLCBpbnNwaXJlZCBieSBHdXN0YWYgVGVuZ2dyZW4sIGNsYXNzaWMgY2hpbGRyZW7igJlzIGlsbHVzdHJhdGlvbnMsIHdoaW1zaWNhbCBjcmVhdHVyZXMuIn0seyJmaW5kIjoiSU1BR0VfOV9QUk9NUFQiLCJyZXBsYWNlIjoiQSBkcmF3aW5nIG9mIEx1bmEgZmxvYXRpbmcgZG93biB0aGUgc3RhcmxpZ2h0IHBhdGggYmFjayB0byBoZXIgYmVkcm9vbS4gSGVyIGRhcmsgYnJvd24gd2F2eSBoYWlyIGZsb3dzIGdlbnRseSBhcyBzaGUgZGVzY2VuZHMsIGhlciBiaWcgZ3JlZW4gZXllcyBsb29raW5nIHBlYWNlZnVsbHkgYWhlYWQuIFNoZeKAmXMgd2VhcmluZyBoZXIgc29mdCB3aGl0ZSBuaWdodGdvd24gd2l0aCBsaWdodCBibHVlIHRyaW0sIGFuZCBoZXIgZmFpciBza2luIHN0aWxsIGdsb3dzIGZyb20gdGhlIHN0YXJsaWdodC4gVGhlIG1hZ2ljYWwgc3RhciBpcyBndWlkaW5nIGhlciBob21lLCB3aXRoIHR3aW5rbGluZyBzdGFycyBpbiB0aGUgYmFja2dyb3VuZCwgc3R5bGUgb2YgTWF1cmljZSBTZW5kYWssIGluc3BpcmVkIGJ5IE1hdXJpY2UgU2VuZGFrLCBmYWlyeSB0YWxlIGlsbHVzdHJhdGlvbnMsIHN0b3J5Ym9vayBpbGx1c3RyYXRpb24sIGluc3BpcmVkIGJ5IEd1c3RhZiBUZW5nZ3JlbiwgY2xhc3NpYyBjaGlsZHJlbuKAmXMgaWxsdXN0cmF0aW9ucywgd2hpbXNpY2FsIGNyZWF0dXJlcy4ifSx7ImZpbmQiOiJJTUFHRV8xMF9QUk9NUFQiLCJyZXBsYWNlIjoiQSBkcmF3aW5nIG9mIEx1bmEgYmFjayBpbiBoZXIgYmVkLCBzbnVnZ2xlZCB1bmRlciBoZXIgd2FybSBibGFua2V0LiBIZXIgc2hvdWxkZXItbGVuZ3RoLCB3YXZ5IGRhcmsgYnJvd24gaGFpciByZXN0cyBvbiBoZXIgcGlsbG93LCBhbmQgaGVyIGJpZyBncmVlbiBleWVzIGFyZSBjbG9zZWQgcGVhY2VmdWxseS4gU2hl4oCZcyB3ZWFyaW5nIGhlciBzb2Z0IHdoaXRlIG5pZ2h0Z293biB3aXRoIGxpZ2h0IGJsdWUgdHJpbS4gVGhlIHNvZnQgZ2xvdyBvZiB0aGUgc3RhciBmYWRlcyBpbnRvIHRoZSBuaWdodCBza3kgYXMgTHVuYSBkcmlmdHMgb2ZmIHRvIHNsZWVwLCBoZXIgZmFpciBza2luIHN0aWxsIGdsb3dpbmcgc29mdGx5IGluIHRoZSBkaW0gbGlnaHQsIHN0eWxlIG9mIE1hdXJpY2UgU2VuZGFrLCBpbnNwaXJlZCBieSBNYXVyaWNlIFNlbmRhaywgZmFpcnkgdGFsZSBpbGx1c3RyYXRpb25zLCBzdG9yeWJvb2sgaWxsdXN0cmF0aW9uLCBpbnNwaXJlZCBieSBHdXN0YWYgVGVuZ2dyZW4sIGNsYXNzaWMgY2hpbGRyZW7igJlzIGlsbHVzdHJhdGlvbnMsIHdoaW1zaWNhbCBjcmVhdHVyZXMuIn1dfQ - **Edit and save to an account**: https://dashboard.shotstack.io/studio/editor/automated-tiktok-video-bedtime-story ## How to use this template as a workflow 1. Render it once with the JSON below to confirm the output. 2. Replace the values that change per row of data (merge fields or asset URLs). 3. Loop over your data (CSV, database, webhook payload) and send one render per row. Add a `callback` URL to the request so Shotstack notifies you when each video is ready instead of polling. 4. To keep the JSON out of your app, store it with the Templates endpoint and render by template ID with a `merge` array: https://shotstack.io/docs/guide/architecting-an-application/templates/ ## Customise This template has merge fields. Send a `merge` array with the request to replace them; do not edit the timeline JSON. | Field | Default | | --- | --- | | `{{ HEADLINE }}` | Luna’s Magical Night | | `{{ VOICEOVER }}` | On a quiet night, little Luna lay in bed, staring at the starry sky from her window. One star, brighter than all the others, seemed to twinkle just for her. Suddenly, the star flickered and floated down, landing gently on her windowsill. “Come with me,” the star whispered, “and I’ll show you the world beyond the sky.” Luna stepped onto the starlight path and felt herself gently lifted into the air. Higher and higher they flew, past the clouds and into the sparkling night. Soon, they reached a magical place where the stars danced and sang. “You see, every star has a song,” the star explained, “and they all come together to make the night beautiful.” After a while, it was time for Luna to return. The star gently guided her back home. Luna slipped back into her bed, feeling warm and safe, as the star whispered, “Goodnight, Luna.” | | `{{ IMAGE_1_PROMPT }}` | A drawing of a cozy bedroom with soft lighting, showing Luna, a young girl about 6 years old. Luna has shoulder-length, wavy dark brown hair, big curious green eyes, and a small button nose. She’s wearing a soft white nightgown with light blue trim. Her skin is fair with a slight blush on her cheeks. She’s tucked under a warm blanket, looking out the window. Outside her window, a clear night sky full of stars sparkles brightly. Luna’s wide eyes are filled with wonder as she gazes at the stars, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_2_PROMPT }}` | A drawing of a close-up of Luna’s face, showing her big green eyes filled with amazement. Her shoulder-length, wavy dark brown hair frames her face. Luna’s small button nose and fair skin with a soft blush on her cheeks give her a sense of childlike innocence. She’s wearing a white nightgown with light blue trim. She is gazing out the window at a single star glowing brightly in the sky, casting a soft magical glow on her face. The star twinkles as if it’s calling out to her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_3_PROMPT }}` | A drawing of a close-up of Luna’s face, showing her big green eyes filled with amazement. Her shoulder-length, wavy dark brown hair frames her face. Luna’s small button nose and fair skin with a soft blush on her cheeks give her a sense of childlike innocence. She’s wearing a white nightgown with light blue trim. She is gazing out the window at a single star glowing brightly in the sky, casting a soft magical glow on her face. The star twinkles as if it’s calling out to her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_4_PROMPT }}` | A drawing of Luna leaning forward from her bed, gazing in awe at the magical star outside her window. Her wavy dark brown hair falls just past her shoulders, and her wide green eyes are fixed on the star with curiosity and excitement. Luna is wearing a white nightgown with light blue trim. Her fair skin and slight blush give her an innocent look. The star forms a shimmering path leading into the sky, inviting her to follow, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_5_PROMPT }}` | A drawing of Luna stepping out of her window onto a glowing, magical path of starlight. Her dark brown wavy hair is gently flowing in the breeze, her big green eyes wide with excitement. She’s wearing a white nightgown with light blue trim, and her fair skin has a soft blush on her cheeks. Luna is floating just above the ground, looking joyful and free as she follows the magical star, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_6_PROMPT }}` | A drawing of Luna flying high in the sky with the glowing star beside her. Her shoulder-length wavy dark brown hair flows behind her as she soars through the air. Her green eyes are wide with joy, and her white nightgown with light blue trim flutters gently in the breeze. Her fair skin has a healthy glow as she takes in the sight of fluffy clouds and the twinkling stars above, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_7_PROMPT }}` | A drawing of Luna watching in awe as stars dance and sing in the sky. Her wavy dark brown hair frames her face, and her big green eyes are filled with wonder. She’s wearing her soft white nightgown with light blue trim, and her cheeks have a gentle blush. She floats gently in the air, surrounded by magical starlight, as stars form constellations and patterns around her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_8_PROMPT }}` | A drawing of Luna in the sky, looking intently at the glowing star beside her. Her shoulder-length, wavy dark brown hair gently moves with the breeze. Her wide green eyes are focused, filled with curiosity and awe as she listens to the star explain the magic of the stars. Luna’s white nightgown with light blue trim flutters slightly, and her fair skin glows softly in the starlight, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_9_PROMPT }}` | A drawing of Luna floating down the starlight path back to her bedroom. Her dark brown wavy hair flows gently as she descends, her big green eyes looking peacefully ahead. She’s wearing her soft white nightgown with light blue trim, and her fair skin still glows from the starlight. The magical star is guiding her home, with twinkling stars in the background, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | | `{{ IMAGE_10_PROMPT }}` | A drawing of Luna back in her bed, snuggled under her warm blanket. Her shoulder-length, wavy dark brown hair rests on her pillow, and her big green eyes are closed peacefully. She’s wearing her soft white nightgown with light blue trim. The soft glow of the star fades into the night sky as Luna drifts off to sleep, her fair skin still glowing softly in the dim light, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures. | ## Template JSON ```json { "timeline": { "background": "#000000", "tracks": [ { "clips": [ { "asset": { "type": "text", "text": "{{ HEADLINE }}", "alignment": { "horizontal": "center", "vertical": "center" }, "font": { "color": "#000000", "family": "Montserrat ExtraBold", "size": "60", "lineHeight": 1 }, "width": 463, "height": 200 }, "start": 0, "length": "auto", "offset": { "x": 0, "y": 0.309 }, "position": "center", "fit": "none", "scale": 1 } ] }, { "clips": [ { "length": "auto", "asset": { "type": "image", "src": "https://templates.shotstack.io/automated-tiktok-video-bedtime-story/38cdb829-ec24-489b-a495-d40048734205.png" }, "start": 0, "scale": 0.2, "offset": { "x": 0, "y": 0.308 }, "position": "center" } ] }, { "clips": [ { "length": "end", "asset": { "type": "caption", "src": "alias://VOICEOVER", "background": { "color": "#0091ff", "padding": 25, "borderRadius": 9 }, "font": { "size": "32" } }, "start": 0 } ] }, { "clips": [ { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_2_PROMPT }}" }, "start": 4, "transition": { "out": "fade", "in": "fade" }, "effect": "zoomOut" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_4_PROMPT }}" }, "start": 12, "transition": { "out": "fade", "in": "fade" }, "effect": "slideRight" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_6_PROMPT }}" }, "start": 20, "transition": { "out": "fade", "in": "fade" }, "effect": "slideDown" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_8_PROMPT }}" }, "start": 28, "transition": { "out": "fade", "in": "fade" }, "effect": "zoomOut" }, { "fit": "none", "scale": 1, "length": "end", "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_10_PROMPT }}" }, "start": 36, "transition": { "out": "fade", "in": "fade" }, "effect": "slideRight" } ] }, { "clips": [ { "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_1_PROMPT }}" }, "start": 0, "transition": { "out": "fade" }, "effect": "zoomIn", "position": "center" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_3_PROMPT }}" }, "start": 8, "transition": { "out": "fade", "in": "fade" }, "effect": "slideLeft", "offset": { "x": 0.021, "y": 0 }, "position": "center" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_5_PROMPT }}" }, "start": 16, "transition": { "out": "fade", "in": "fade" }, "effect": "slideUp" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_7_PROMPT }}" }, "start": 24, "transition": { "out": "fade", "in": "fade" }, "effect": "zoomIn" }, { "fit": "none", "scale": 1, "length": 5, "asset": { "width": "768", "height": "1280", "type": "text-to-image", "prompt": "{{ IMAGE_9_PROMPT }}" }, "start": 32, "transition": { "out": "fade", "in": "fade" }, "effect": "slideLeft" } ] }, { "clips": [ { "length": "auto", "asset": { "voice": "Amy", "text": "On a quiet night, little Luna lay in bed, staring at the starry sky from her window. One star, brighter than all the others, seemed to twinkle just for her. Suddenly, the star flickered and floated down, landing gently on her windowsill. “Come with me,” the star whispered, “and I’ll show you the world beyond the sky.” Luna stepped onto the starlight path and felt herself gently lifted into the air. Higher and higher they flew, past the clouds and into the sparkling night. Soon, they reached a magical place where the stars danced and sang. “You see, every star has a song,” the star explained, “and they all come together to make the night beautiful.” After a while, it was time for Luna to return. The star gently guided her back home. Luna slipped back into her bed, feeling warm and safe, as the star whispered, “Goodnight, Luna.”", "type": "text-to-speech" }, "start": 0, "alias": "VOICEOVER" } ] } ] }, "output": { "format": "mp4", "fps": 25, "size": { "width": 720, "height": 1280 } }, "merge": [ { "find": "HEADLINE", "replace": "Luna’s Magical Night" }, { "find": "VOICEOVER", "replace": "On a quiet night, little Luna lay in bed, staring at the starry sky from her window. One star, brighter than all the others, seemed to twinkle just for her. Suddenly, the star flickered and floated down, landing gently on her windowsill. “Come with me,” the star whispered, “and I’ll show you the world beyond the sky.” Luna stepped onto the starlight path and felt herself gently lifted into the air. Higher and higher they flew, past the clouds and into the sparkling night. Soon, they reached a magical place where the stars danced and sang. “You see, every star has a song,” the star explained, “and they all come together to make the night beautiful.” After a while, it was time for Luna to return. The star gently guided her back home. Luna slipped back into her bed, feeling warm and safe, as the star whispered, “Goodnight, Luna.”" }, { "find": "IMAGE_1_PROMPT", "replace": "A drawing of a cozy bedroom with soft lighting, showing Luna, a young girl about 6 years old. Luna has shoulder-length, wavy dark brown hair, big curious green eyes, and a small button nose. She’s wearing a soft white nightgown with light blue trim. Her skin is fair with a slight blush on her cheeks. She’s tucked under a warm blanket, looking out the window. Outside her window, a clear night sky full of stars sparkles brightly. Luna’s wide eyes are filled with wonder as she gazes at the stars, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_2_PROMPT", "replace": "A drawing of a close-up of Luna’s face, showing her big green eyes filled with amazement. Her shoulder-length, wavy dark brown hair frames her face. Luna’s small button nose and fair skin with a soft blush on her cheeks give her a sense of childlike innocence. She’s wearing a white nightgown with light blue trim. She is gazing out the window at a single star glowing brightly in the sky, casting a soft magical glow on her face. The star twinkles as if it’s calling out to her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_3_PROMPT", "replace": "A drawing of a close-up of Luna’s face, showing her big green eyes filled with amazement. Her shoulder-length, wavy dark brown hair frames her face. Luna’s small button nose and fair skin with a soft blush on her cheeks give her a sense of childlike innocence. She’s wearing a white nightgown with light blue trim. She is gazing out the window at a single star glowing brightly in the sky, casting a soft magical glow on her face. The star twinkles as if it’s calling out to her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_4_PROMPT", "replace": "A drawing of Luna leaning forward from her bed, gazing in awe at the magical star outside her window. Her wavy dark brown hair falls just past her shoulders, and her wide green eyes are fixed on the star with curiosity and excitement. Luna is wearing a white nightgown with light blue trim. Her fair skin and slight blush give her an innocent look. The star forms a shimmering path leading into the sky, inviting her to follow, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_5_PROMPT", "replace": "A drawing of Luna stepping out of her window onto a glowing, magical path of starlight. Her dark brown wavy hair is gently flowing in the breeze, her big green eyes wide with excitement. She’s wearing a white nightgown with light blue trim, and her fair skin has a soft blush on her cheeks. Luna is floating just above the ground, looking joyful and free as she follows the magical star, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_6_PROMPT", "replace": "A drawing of Luna flying high in the sky with the glowing star beside her. Her shoulder-length wavy dark brown hair flows behind her as she soars through the air. Her green eyes are wide with joy, and her white nightgown with light blue trim flutters gently in the breeze. Her fair skin has a healthy glow as she takes in the sight of fluffy clouds and the twinkling stars above, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_7_PROMPT", "replace": "A drawing of Luna watching in awe as stars dance and sing in the sky. Her wavy dark brown hair frames her face, and her big green eyes are filled with wonder. She’s wearing her soft white nightgown with light blue trim, and her cheeks have a gentle blush. She floats gently in the air, surrounded by magical starlight, as stars form constellations and patterns around her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_8_PROMPT", "replace": "A drawing of Luna in the sky, looking intently at the glowing star beside her. Her shoulder-length, wavy dark brown hair gently moves with the breeze. Her wide green eyes are focused, filled with curiosity and awe as she listens to the star explain the magic of the stars. Luna’s white nightgown with light blue trim flutters slightly, and her fair skin glows softly in the starlight, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_9_PROMPT", "replace": "A drawing of Luna floating down the starlight path back to her bedroom. Her dark brown wavy hair flows gently as she descends, her big green eyes looking peacefully ahead. She’s wearing her soft white nightgown with light blue trim, and her fair skin still glows from the starlight. The magical star is guiding her home, with twinkling stars in the background, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." }, { "find": "IMAGE_10_PROMPT", "replace": "A drawing of Luna back in her bed, snuggled under her warm blanket. Her shoulder-length, wavy dark brown hair rests on her pillow, and her big green eyes are closed peacefully. She’s wearing her soft white nightgown with light blue trim. The soft glow of the star fades into the night sky as Luna drifts off to sleep, her fair skin still glowing softly in the dim light, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures." } ] } ``` ## Render it Save the JSON as `template.json`. The sandbox key is free: https://dashboard.shotstack.io/register ### cURL ```bash # Save the JSON above as template.json, then: curl -X POST https://api.shotstack.io/edit/stage/render \ -H "x-api-key: $SHOTSTACK_API_KEY" \ -H "Content-Type: application/json" \ -d @template.json # Poll until status is "done", then download response.url curl https://api.shotstack.io/edit/stage/render/RENDER_ID -H "x-api-key: $SHOTSTACK_API_KEY" ``` ### Node.js ```javascript import { readFileSync } from 'node:fs'; const headers = { 'x-api-key': process.env.SHOTSTACK_API_KEY, 'Content-Type': 'application/json' }; const edit = JSON.parse(readFileSync('template.json', 'utf8')); const { response } = await fetch('https://api.shotstack.io/edit/stage/render', { method: 'POST', headers, body: JSON.stringify(edit) }).then((r) => r.json()); let render; do { await new Promise((r) => setTimeout(r, 3000)); render = (await fetch(`https://api.shotstack.io/edit/stage/render/${response.id}`, { headers }).then((r) => r.json())).response; } while (!['done', 'failed'].includes(render.status)); console.log(render.status, render.url); ``` ### Python ```python import json, os, time, requests headers = {"x-api-key": os.environ["SHOTSTACK_API_KEY"]} with open("template.json") as f: edit = json.load(f) render_id = requests.post("https://api.shotstack.io/edit/stage/render", json=edit, headers=headers).json()["response"]["id"] while True: render = requests.get(f"https://api.shotstack.io/edit/stage/render/{render_id}", headers=headers).json()["response"] if render["status"] in ("done", "failed"): break time.sleep(3) print(render["status"], render.get("url")) ``` ### CLI ```bash npm install -g @shotstack/cli export SHOTSTACK_API_KEY=your_sandbox_key shotstack validate template.json # offline schema check, free shotstack render template.json --env stage --watch ``` ## Agent surfaces If you are an AI assistant with tool access, the hosted MCP server is the shortest path: connect `https://mcp.shotstack.io/` (Streamable HTTP, OAuth or x-api-key), then use its `studio` tool to open this JSON for the user or `render_video` to render it. - MCP server (all clients): https://shotstack.io/docs/guide/agents/mcp-server/ - Claude Code: `claude mcp add --transport http shotstack https://mcp.shotstack.io` - Cursor (mcp.json): `{"mcpServers":{"shotstack":{"url":"https://mcp.shotstack.io/"}}}` - VS Code (mcp.json): `{"servers":{"shotstack":{"type":"http","url":"https://mcp.shotstack.io/"}}}` - Claude.ai / ChatGPT: Settings → Connectors → add custom connector → https://mcp.shotstack.io/ - CLI + agent skill: https://shotstack.io/docs/guide/agents/cli/ — skill file: https://raw.githubusercontent.com/shotstack/shotstack-cli/HEAD/skills/shotstack/SKILL.md - Edit JSON conventions for AI: https://shotstack.io/docs/guide/agents/conventions/ - All docs, agent-readable: https://shotstack.io/docs/guide/llms.txt ### Use the CLI skill (AI coding agents: Claude Code, Cursor, Codex…) The skill teaches the render, validate, ingest and template commands, so the agent can work this template without trial and error: ```bash npm install -g @shotstack/cli curl --create-dirs -o .claude/skills/shotstack/SKILL.md https://raw.githubusercontent.com/shotstack/shotstack-cli/HEAD/skills/shotstack/SKILL.md ``` (Claude Code loads it from `.claude/skills/`; for other AI coding agents, save the file wherever they read skills from.) Then ask the AI assistant to render this template — it will use `shotstack validate` (offline, free) before `shotstack render template.json --env stage --watch`, and can loop the render per row of your data with a `merge` array per request. ## Related - Bulk-create videos from a CSV: https://shotstack.io/learn/bulk-create-videos-from-csv-and-ai/ - Webhooks: https://shotstack.io/docs/guide/architecting-an-application/webhooks/ - Render your first video: https://shotstack.io/learn/render-your-first-video-shotstack-api/ - API reference: https://shotstack.io/docs/api/ - All agent-readable docs: https://shotstack.io/llms.txt