# Restaurant monthly specials (video template) > Restaurant video template with monthly specials and lunch menu. ## Overview - **Page**: https://shotstack.io/templates/restaurant-monthly-specials-video/ - **Output**: MP4, 1920x1080 (16:9) - **Length**: 19s - **Timeline**: 38 clips on 28 tracks; assets: html, image, luma - **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=eyJ0aW1lbGluZSI6eyJzb3VuZHRyYWNrIjp7InNyYyI6Imh0dHBzOi8vZmVlZHMuc291bmRjbG91ZC5jb20vc3RyZWFtLzEwMjkzNTI1ODItdW5taW51cy1uZXVyb24tcGFya2luZy5tcDMiLCJlZmZlY3QiOiJmYWRlT3V0In0sImZvbnRzIjpbeyJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vYmFzaWMvYXNzZXQvZm9udC9iYXJsb3ctZXh0cmFib2xkLnR0ZiJ9LHsic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2Jhc2ljL2Fzc2V0L2ZvbnQvYmFybG93LXJlZ3VsYXIudHRmIn1dLCJiYWNrZ3JvdW5kIjoiIzAwMDAwMCIsInRyYWNrcyI6W3siY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2xvZ29zL2NvbnRlbXBvcmFyeS1jb2xvci13aGl0ZS5wbmcifSwic3RhcnQiOjAsImxlbmd0aCI6MywiZml0Ijoibm9uZSIsInNjYWxlIjowLjgsIm9mZnNldCI6eyJ5IjowLjE2fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlRG93biIsIm91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5GZWJydWFyeSBhdCBUaGUgQXZpYXJ5PC9wPiIsImNzcyI6InAgeyBmb250LWZhbWlseTonQmFybG93IEV4dHJhQm9sZCc7IGNvbG9yOiAjRkZGRkZGOyBmb250LXNpemU6IDY4cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo4MDAsImhlaWdodCI6MTQwfSwic3RhcnQiOjAuOCwibGVuZ3RoIjoyLjIsIm9mZnNldCI6eyJ5IjotMC4xM30sInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZVVwIiwib3V0IjoiZmFkZSJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJsdW1hIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2Jhc2ljL2Fzc2V0L3ZpZGVvL2x1bWEvY2lyY2xlcy9jaXJjbGUtZXhwYW5kLXJpZ2h0Lm1wNCJ9LCJzdGFydCI6MywibGVuZ3RoIjoyfSx7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vaW1hZ2VzLnBleGVscy5jb20vcGhvdG9zLzMyNjI3OS9wZXhlbHMtcGhvdG8tMzI2Mjc5LmpwZWc_YXV0bz1jb21wcmVzcyZjcz10aW55c3JnYiZkcHI9MiZoPTc1MCZ3PTEyNjAifSwic3RhcnQiOjAsImxlbmd0aCI6NCwiZWZmZWN0Ijoiem9vbUluIn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5MdW5jaCBNZW51PC9wPiIsImNzcyI6InAgeyBmb250LWZhbWlseTogJ0JhcmxvdyBFeHRyYUJvbGQnOyBjb2xvcjogI0ZGRkZGRkZGOyBmb250LXNpemU6IDgwcHg7IHRleHQtYWxpZ246IGxlZnQ7IH0iLCJ3aWR0aCI6NjAwLCJoZWlnaHQiOjEwMH0sInN0YXJ0IjozLjQsImxlbmd0aCI6My4xLCJwb3NpdGlvbiI6InRvcExlZnQiLCJvZmZzZXQiOnsieCI6MC4wMiwieSI6LTAuMTV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCIsIm91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD4mbmJzcDs8L3A-Iiwid2lkdGgiOjY1MCwiaGVpZ2h0IjoxMjAsImJhY2tncm91bmQiOiIjRkYwMDAwIn0sInN0YXJ0IjozLCJsZW5ndGgiOjMsInBvc2l0aW9uIjoibGVmdCIsIm9mZnNldCI6eyJ5IjowLjN9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVMZWZ0Iiwib3V0Ijoic2xpZGVMZWZ0In19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly9pbWFnZXMucGV4ZWxzLmNvbS9waG90b3MvMzQzNDUyMy9wZXhlbHMtcGhvdG8tMzQzNDUyMy5qcGVnP2NzPXNyZ2ImZGw9cGV4ZWxzLW1pc3Rlci1taXN0ZXItMzQzNDUyMy5qcGcmZm09anBnIiwiY3JvcCI6eyJsZWZ0IjowLCJyaWdodCI6MH19LCJzdGFydCI6MywibGVuZ3RoIjozLjUsImZpdCI6ImNvbnRhaW4iLCJwb3NpdGlvbiI6ImxlZnQiLCJ0cmFuc2l0aW9uIjp7Im91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5TaHJpbXAgR3JpbGw8L3A-PGJyPjxkaXY-R3JpbGxlZCBzaHJpbXAgd2l0aCB0ZXJpeWFraSBzYXVjZTwvZGl2Pjxicj48YnI-PHA-U3ByaW5nIFJvbGw8L3A-PGJyPjxkaXY-U3ByaW5nIHJvbGwgZmlsbGVkIHdpdGggbWVhdCBhbmQgdmVnZXRhYmxlczwvZGl2Pjxicj48YnI-PHA-U3VzaGkgUm9sbDwvcD48YnI-PGRpdj5TdXNoaSByb2xsIGRpZmZlcmVudCBmbGF2b3JzPC9kaXY-PGJyPjxicj48cD5OaWd1aXJpPC9wPjxicj48ZGl2PlJpY2UgYmFsbHMgd2l0aCBzZWF3ZWVkPC9kaXY-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiAnQmFybG93IEV4dHJhQm9sZCc7IGNvbG9yOiAjRkYxYTFhMWE7IGZvbnQtc2l6ZTogNTBweDsgdGV4dC1hbGlnbjogbGVmdDsgbGluZS1oZWlnaHQ6IDgwJTt9IGRpdiB7IGZvbnQtZmFtaWx5OiAnQmFybG93IFJlZ3VsYXInOyBjb2xvcjogI0ZGMWExYTFhOyBmb250LXNpemU6IDQwcHg7IHRleHQtYWxpZ246IGxlZnQ7IGxpbmUtaGVpZ2h0OiA4MCU7fSBiciB7IGxpbmUtaGVpZ2h0OiA1MCV9Iiwid2lkdGgiOjYwMCwiaGVpZ2h0Ijo4NTB9LCJzdGFydCI6My41LCJsZW5ndGgiOjMsIm9mZnNldCI6eyJ4IjowLjF9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVMZWZ0Iiwib3V0IjoiZmFkZSJ9fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPiQxNi42MDwvcD48YnI-PGJyPjxicj48YnI-PGJyPjxicj48YnI-PGJyPjxwPiQxOS45MDwvcD48YnI-PGJyPjxicj48YnI-PGJyPjxicj48YnI-PHA-JDEyLjIwPC9wPjxicj48YnI-PGJyPjxicj48YnI-PGJyPjxicj48cD4kMTIuMjA8L3A-PGJyPjxicj4iLCJjc3MiOiJwIHsgZm9udC1mYW1pbHk6ICdCYXJsb3cgRXh0cmFCb2xkJzsgY29sb3I6ICNmZjY2MDA7IGZvbnQtc2l6ZTogNTBweDsgdGV4dC1hbGlnbjogbGVmdCA7bGluZS1oZWlnaHQ6IDgwJTt9IGJyIHsgbGluZS1oZWlnaHQ6IDEwMCV9ICIsIndpZHRoIjoxODAsImhlaWdodCI6ODUwfSwic3RhcnQiOjMuNSwibGVuZ3RoIjozLCJwb3NpdGlvbiI6InJpZ2h0Iiwib2Zmc2V0Ijp7IngiOi0wLjF9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVMZWZ0Iiwib3V0IjoiZmFkZSJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPiZuYnNwOzwvcD4iLCJ3aWR0aCI6OTAwLCJoZWlnaHQiOjkwMCwiYmFja2dyb3VuZCI6IiNGRkZGRkYifSwic3RhcnQiOjMsImxlbmd0aCI6My41LCJwb3NpdGlvbiI6InJpZ2h0Iiwib2Zmc2V0Ijp7IngiOi0wLjF9LCJ0cmFuc2l0aW9uIjp7Im91dCI6InNsaWRlTGVmdCJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJsdW1hIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2Jhc2ljL2Fzc2V0L3ZpZGVvL2x1bWEvY2lyY2xlcy9jaXJjbGUtZXhwYW5kLWxlZnQubXA0In0sInN0YXJ0Ijo2LCJsZW5ndGgiOjJ9LHsiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly9zaG90c3RhY2stYXNzZXRzLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vYmFja2dyb3VuZHMvYmctYXZpYXJ5LTEuanBnIn0sInN0YXJ0IjozLCJsZW5ndGgiOjQsImVmZmVjdCI6Inpvb21JbiJ9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-QXdhcmQgV2lubmluZyBDaGVmIFdvbiBDaGF3PC9wPjxicj48c3Bhbj5TcGVjaWFscyBvZiB0aGUgbW9udGg8L3NwYW4-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiAnQmFybG93IEV4dHJhQm9sZCc7IGNvbG9yOiAjRkZGRkZGOyBmb250LXNpemU6IDgwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDgwJTt9IHNwYW4geyBmb250LWZhbWlseTogJ0JhcmxvdyBSZWd1bGFyJzsgY29sb3I6ICNGRkZGRkY7IGZvbnQtc2l6ZTogNjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogODAlO30iLCJ3aWR0aCI6NzAwLCJoZWlnaHQiOjI1MH0sInN0YXJ0Ijo2LjgsImxlbmd0aCI6Mi4yLCJvZmZzZXQiOnsieCI6MC4yLCJ5IjowLjI1fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlVXAiLCJvdXQiOiJmYWRlIn19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-Jm5ic3A7PC9wPiIsIndpZHRoIjo2MCwiaGVpZ2h0IjozMDAsImJhY2tncm91bmQiOiIjZmY2NjAwIn0sInN0YXJ0Ijo2LCJsZW5ndGgiOjMsInBvc2l0aW9uIjoibGVmdCIsIm9mZnNldCI6eyJ5IjowLjI1fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlTGVmdCIsIm91dCI6InNsaWRlTGVmdCJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPiZuYnNwOzwvcD4iLCJ3aWR0aCI6NjAsImhlaWdodCI6MzAwLCJiYWNrZ3JvdW5kIjoiI2ZmNjYwMCJ9LCJzdGFydCI6NiwibGVuZ3RoIjozLCJwb3NpdGlvbiI6InJpZ2h0Iiwib2Zmc2V0Ijp7InkiOjAuMjV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVSaWdodCIsIm91dCI6InNsaWRlUmlnaHQifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoibHVtYSIsInNyYyI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9iYXNpYy9hc3NldC92aWRlby9sdW1hL2NpcmNsZXMvY2lyY2xlLWV4cGFuZC1yaWdodC5tcDQifSwic3RhcnQiOjksImxlbmd0aCI6Mn0seyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJodHRwczovL2ltYWdlcy5wZXhlbHMuY29tL3Bob3Rvcy8zODczOTczL3BleGVscy1waG90by0zODczOTczLmpwZWc_YXV0bz1jb21wcmVzcyZjcz10aW55c3JnYiZkcHI9MiZoPTc1MCZ3PTEyNjAifSwic3RhcnQiOjYsImxlbmd0aCI6NCwiZWZmZWN0Ijoiem9vbUluIn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJodHRwczovL3Nob3RzdGFjay1hc3NldHMuczMuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbS9pbWFnZXMvZGlzaDMucG5nIn0sInN0YXJ0Ijo5LCJsZW5ndGgiOjMuNSwiZml0IjoiY29udGFpbiIsInNjYWxlIjowLjM1LCJlZmZlY3QiOiJ6b29tSW4iLCJvZmZzZXQiOnsieCI6LTAuMjV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCIsIm91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5HcmlsbDwvcD4iLCJjc3MiOiJwIHsgZm9udC1mYW1pbHk6ICdCYXJsb3cgRXh0cmFCb2xkJzsgY29sb3I6ICMxMTAwMDAwMDsgZm9udC1zaXplOiAyNjBweDsgdGV4dC1hbGlnbjogbGVmdDsgfSIsIndpZHRoIjo1MDAsImhlaWdodCI6MzAwfSwic3RhcnQiOjkuNCwibGVuZ3RoIjozLjEsInBvc2l0aW9uIjoidG9wTGVmdCIsIm9mZnNldCI6eyJ4IjowLjA1fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlVXAiLCJvdXQiOiJmYWRlIn19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-R3JpbGxlZCBCYW5kZXJpbGxlczwvcD4iLCJjc3MiOiJwIHsgZm9udC1mYW1pbHk6ICdCYXJsb3cgRXh0cmFCb2xkJzsgY29sb3I6ICNGRmZmNjYwMDsgZm9udC1zaXplOiAxNDBweDsgdGV4dC1hbGlnbjogbGVmdDsgbGluZS1oZWlnaHQ6IDcwJTsgfSIsIndpZHRoIjo4MDAsImhlaWdodCI6MjgwfSwic3RhcnQiOjkuNSwibGVuZ3RoIjozLCJvZmZzZXQiOnsieCI6MC4xNiwieSI6MC4yNX0sInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZUxlZnQiLCJvdXQiOiJmYWRlIn19LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-U3dlZXQgYW5kIHNvdXIgcG9yayB3aXRoIHBlcHBlcnMsIG9uaW9ucyBhbmQgcGluZWFwcGxlIGJhdGhlZCBpbiBiYXJiZWN1ZSBzYXVjZS48L3A-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiAnQmFybG93IFJlZ3VsYXInOyBjb2xvcjogI0ZGMWExYTFhOyBmb250LXNpemU6IDUwcHg7IHRleHQtYWxpZ246IGxlZnQ7ICBsaW5lLWhlaWdodDogMTAwJTt9Iiwid2lkdGgiOjgwMCwiaGVpZ2h0IjozMDB9LCJzdGFydCI6OS41LCJsZW5ndGgiOjMuMSwib2Zmc2V0Ijp7IngiOjAuMTYsInkiOi0wLjA1fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlTGVmdCIsIm91dCI6ImZhZGUifX0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD4kMTguOTA8L3A-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiAnQmFybG93IEV4dHJhQm9sZCc7IGNvbG9yOiAjRkZGRjAwMDA7IGZvbnQtc2l6ZTogOTBweDsgdGV4dC1hbGlnbjogbGVmdDsgIGxpbmUtaGVpZ2h0OiAxMDAlO30iLCJ3aWR0aCI6ODAwLCJoZWlnaHQiOjEwMH0sInN0YXJ0Ijo5LjUsImxlbmd0aCI6My4xLCJvZmZzZXQiOnsieCI6MC4xNiwieSI6LTAuMjV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCIsIm91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD4mbmJzcDs8L3A-Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0Ijo0NTAsImJhY2tncm91bmQiOiIjRkYwMDAwIn0sInN0YXJ0Ijo5LCJsZW5ndGgiOjMsInBvc2l0aW9uIjoiYm90dG9tIiwib2Zmc2V0Ijp7IngiOi0wLjI1fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlVXAiLCJvdXQiOiJmYWRlIn19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-Jm5ic3A7PC9wPiIsIndpZHRoIjo5MDAsImhlaWdodCI6ODAwLCJiYWNrZ3JvdW5kIjoiI0ZGRkZGRiJ9LCJzdGFydCI6OSwibGVuZ3RoIjozLjUsInBvc2l0aW9uIjoicmlnaHQiLCJvZmZzZXQiOnsieCI6LTAuMX0sInRyYW5zaXRpb24iOnsib3V0Ijoic2xpZGVVcCJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJsdW1hIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2Jhc2ljL2Fzc2V0L3ZpZGVvL2x1bWEvY2lyY2xlcy9jaXJjbGUtZXhwYW5kLWxlZnQubXA0In0sInN0YXJ0IjoxMiwibGVuZ3RoIjoyfSx7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2JhY2tncm91bmRzL2JnLWF2aWFyeS0xLmpwZyJ9LCJzdGFydCI6OSwibGVuZ3RoIjo0LCJlZmZlY3QiOiJ6b29tSW4ifV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2ltYWdlcy9kaXNoNC5wbmcifSwic3RhcnQiOjEyLCJsZW5ndGgiOjMuNSwiZml0IjoiY29udGFpbiIsInNjYWxlIjowLjM1LCJlZmZlY3QiOiJ6b29tSW4iLCJvZmZzZXQiOnsieCI6MC4yNX0sInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZVVwIiwib3V0IjoiZmFkZSJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPlRvYXN0PC9wPiIsImNzcyI6InAgeyBmb250LWZhbWlseTogJ0JhcmxvdyBFeHRyYUJvbGQnOyBjb2xvcjogIzExMDAwMDAwOyBmb250LXNpemU6IDI2MHB4OyB0ZXh0LWFsaWduOiBsZWZ0OyB9Iiwid2lkdGgiOjgwMCwiaGVpZ2h0IjozMDB9LCJzdGFydCI6MTIuNCwibGVuZ3RoIjozLjEsInBvc2l0aW9uIjoidG9wUmlnaHQiLCJvZmZzZXQiOnsieCI6LTAuMDV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCIsIm91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5TbWFzaGVkIEF2byBUb2FzdDwvcD4iLCJjc3MiOiJwIHsgZm9udC1mYW1pbHk6ICdCYXJsb3cgRXh0cmFCb2xkJzsgY29sb3I6ICNmZjY2MDA7IGZvbnQtc2l6ZTogMTQwcHg7IHRleHQtYWxpZ246IGxlZnQ7IGxpbmUtaGVpZ2h0OiA3MCU7IH0iLCJ3aWR0aCI6ODAwLCJoZWlnaHQiOjI4MH0sInN0YXJ0IjoxMi41LCJsZW5ndGgiOjMsIm9mZnNldCI6eyJ4IjotMC4xNiwieSI6MC4yNX0sInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZUxlZnQiLCJvdXQiOiJmYWRlIn19LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-U2xpY2Ugb2YgdG9hc3RlZCBicmVhZCB3aXRoIGF2b2NhZG8sIGhvdXNlIGRyZXNzaW5nLCBlZ2cgdG8gdGFzdGUgYW5kIHdhdGVyY3Jlc3MgbGVhdmVzLjwvcD4iLCJjc3MiOiJwIHsgZm9udC1mYW1pbHk6ICdCYXJsb3cgUmVndWxhcic7IGNvbG9yOiAjRkYxYTFhMWE7IGZvbnQtc2l6ZTogNTBweDsgdGV4dC1hbGlnbjogbGVmdDsgIGxpbmUtaGVpZ2h0OiAxMDAlO30iLCJ3aWR0aCI6ODAwLCJoZWlnaHQiOjMwMH0sInN0YXJ0IjoxMi41LCJsZW5ndGgiOjMuMSwib2Zmc2V0Ijp7IngiOi0wLjE2LCJ5IjotMC4wNX0sInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZUxlZnQiLCJvdXQiOiJmYWRlIn19LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-JDE4LjkwPC9wPiIsImNzcyI6InAgeyBmb250LWZhbWlseTogJ0JhcmxvdyBFeHRyYUJvbGQnOyBjb2xvcjogI0ZGRkYwMDAwOyBmb250LXNpemU6IDkwcHg7IHRleHQtYWxpZ246IGxlZnQ7ICBsaW5lLWhlaWdodDogMTAwJTt9Iiwid2lkdGgiOjgwMCwiaGVpZ2h0IjoxMDB9LCJzdGFydCI6MTIuNSwibGVuZ3RoIjozLjEsIm9mZnNldCI6eyJ4IjotMC4xNiwieSI6LTAuMjV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCIsIm91dCI6ImZhZGUifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD4mbmJzcDs8L3A-Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0Ijo0NTAsImJhY2tncm91bmQiOiIjRkYwMDAwIn0sInN0YXJ0IjoxMiwibGVuZ3RoIjozLCJwb3NpdGlvbiI6ImJvdHRvbSIsIm9mZnNldCI6eyJ4IjowLjI1fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlVXAiLCJvdXQiOiJmYWRlIn19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-Jm5ic3A7PC9wPiIsIndpZHRoIjo5MDAsImhlaWdodCI6ODAwLCJiYWNrZ3JvdW5kIjoiI0ZGRkZGRiJ9LCJzdGFydCI6MTIsImxlbmd0aCI6My41LCJwb3NpdGlvbiI6ImxlZnQiLCJvZmZzZXQiOnsieCI6MC4xfSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlVXAiLCJvdXQiOiJmYWRlIn19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6Imx1bWEiLCJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vYmFzaWMvYXNzZXQvdmlkZW8vbHVtYS9jaXJjbGVzL2NpcmNsZS1leHBhbmQubXA0In0sInN0YXJ0IjoxNSwibGVuZ3RoIjoyfSx7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2JhY2tncm91bmRzL2JnLWF2aWFyeS0xLmpwZyAifSwic3RhcnQiOjEyLCJsZW5ndGgiOjQsImVmZmVjdCI6Inpvb21JbiJ9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly9zaG90c3RhY2stYXNzZXRzLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vbG9nb3MvY29udGVtcG9yYXJ5LWNvbG9yLWJsYWNrLnBuZyJ9LCJzdGFydCI6MTUsImxlbmd0aCI6NCwiZml0Ijoibm9uZSIsInNjYWxlIjowLjgsIm9mZnNldCI6eyJ5IjowLjF9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxzcGFuPjczNiBCcm9ja3RvbiBBdmVudWUsIEFiaW5ndG9uLCBNQSAyMzUxPC9zcGFuPjxicj48c3Bhbj41NDgtNTAwLTUyMjM8L3NwYW4-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiAnQmFybG93IEV4dHJhQm9sZCc7IGNvbG9yOiAjRkYxYTFhMWE7IGZvbnQtc2l6ZTogNTBweDsgdGV4dC1hbGlnbjogY2VudGVyO30gc3BhbiB7IGZvbnQtZmFtaWx5OiAnQmFybG93IFJlZ3VsYXInOyBjb2xvcjogI0ZGMWExYTFhOyBmb250LXNpemU6IDUwcHg7IHRleHQtYWxpZ246IGNlbnRlcjt9Iiwid2lkdGgiOjYwMCwiaGVpZ2h0IjozMDB9LCJzdGFydCI6MTUuOCwibGVuZ3RoIjozLjIsIm9mZnNldCI6eyJ5IjotMC4yfSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlVXAifX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJodHRwczovL3Nob3RzdGFjay1hc3NldHMuczMuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbS9iYWNrZ3JvdW5kcy9iZy1hdmlhcnktMS5qcGcgIn0sInN0YXJ0IjoxNSwibGVuZ3RoIjo0LCJlZmZlY3QiOiJ6b29tSW4ifV19XX0sIm91dHB1dCI6eyJmb3JtYXQiOiJtcDQiLCJyZXNvbHV0aW9uIjoiMTA4MCJ9fQ ## 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 no merge fields. Replace the asset URLs and text in the JSON with your own, or turn any value into a `{{ PLACEHOLDER }}` and pass a `merge` array per request. Swap points: 22 html, 11 image, 5 luma, 1 soundtrack. ## Template JSON ```json { "timeline": { "soundtrack": { "src": "https://feeds.soundcloud.com/stream/1029352582-unminus-neuron-parking.mp3", "effect": "fadeOut" }, "fonts": [ { "src": "https://templates.shotstack.io/basic/asset/font/barlow-extrabold.ttf" }, { "src": "https://templates.shotstack.io/basic/asset/font/barlow-regular.ttf" } ], "background": "#000000", "tracks": [ { "clips": [ { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/logos/contemporary-color-white.png" }, "start": 0, "length": 3, "fit": "none", "scale": 0.8, "offset": { "y": 0.16 }, "transition": { "in": "slideDown", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

February at The Aviary

", "css": "p { font-family:'Barlow ExtraBold'; color: #FFFFFF; font-size: 68px; text-align: center; }", "width": 800, "height": 140 }, "start": 0.8, "length": 2.2, "offset": { "y": -0.13 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "luma", "src": "https://templates.shotstack.io/basic/asset/video/luma/circles/circle-expand-right.mp4" }, "start": 3, "length": 2 }, { "asset": { "type": "image", "src": "https://images.pexels.com/photos/326279/pexels-photo-326279.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260" }, "start": 0, "length": 4, "effect": "zoomIn" } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Lunch Menu

", "css": "p { font-family: 'Barlow ExtraBold'; color: #FFFFFFFF; font-size: 80px; text-align: left; }", "width": 600, "height": 100 }, "start": 3.4, "length": 3.1, "position": "topLeft", "offset": { "x": 0.02, "y": -0.15 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 650, "height": 120, "background": "#FF0000" }, "start": 3, "length": 3, "position": "left", "offset": { "y": 0.3 }, "transition": { "in": "slideLeft", "out": "slideLeft" } } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://images.pexels.com/photos/3434523/pexels-photo-3434523.jpeg?cs=srgb&dl=pexels-mister-mister-3434523.jpg&fm=jpg", "crop": { "left": 0, "right": 0 } }, "start": 3, "length": 3.5, "fit": "contain", "position": "left", "transition": { "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Shrimp Grill


Grilled shrimp with teriyaki sauce


Spring Roll


Spring roll filled with meat and vegetables


Sushi Roll


Sushi roll different flavors


Niguiri


Rice balls with seaweed
", "css": "p { font-family: 'Barlow ExtraBold'; color: #FF1a1a1a; font-size: 50px; text-align: left; line-height: 80%;} div { font-family: 'Barlow Regular'; color: #FF1a1a1a; font-size: 40px; text-align: left; line-height: 80%;} br { line-height: 50%}", "width": 600, "height": 850 }, "start": 3.5, "length": 3, "offset": { "x": 0.1 }, "transition": { "in": "slideLeft", "out": "fade" } }, { "asset": { "type": "html", "html": "

$16.60









$19.90








$12.20








$12.20



", "css": "p { font-family: 'Barlow ExtraBold'; color: #ff6600; font-size: 50px; text-align: left ;line-height: 80%;} br { line-height: 100%} ", "width": 180, "height": 850 }, "start": 3.5, "length": 3, "position": "right", "offset": { "x": -0.1 }, "transition": { "in": "slideLeft", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 900, "height": 900, "background": "#FFFFFF" }, "start": 3, "length": 3.5, "position": "right", "offset": { "x": -0.1 }, "transition": { "out": "slideLeft" } } ] }, { "clips": [ { "asset": { "type": "luma", "src": "https://templates.shotstack.io/basic/asset/video/luma/circles/circle-expand-left.mp4" }, "start": 6, "length": 2 }, { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/backgrounds/bg-aviary-1.jpg" }, "start": 3, "length": 4, "effect": "zoomIn" } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Award Winning Chef Won Chaw


Specials of the month", "css": "p { font-family: 'Barlow ExtraBold'; color: #FFFFFF; font-size: 80px; text-align: center; line-height: 80%;} span { font-family: 'Barlow Regular'; color: #FFFFFF; font-size: 60px; text-align: center; line-height: 80%;}", "width": 700, "height": 250 }, "start": 6.8, "length": 2.2, "offset": { "x": 0.2, "y": 0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 60, "height": 300, "background": "#ff6600" }, "start": 6, "length": 3, "position": "left", "offset": { "y": 0.25 }, "transition": { "in": "slideLeft", "out": "slideLeft" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 60, "height": 300, "background": "#ff6600" }, "start": 6, "length": 3, "position": "right", "offset": { "y": 0.25 }, "transition": { "in": "slideRight", "out": "slideRight" } } ] }, { "clips": [ { "asset": { "type": "luma", "src": "https://templates.shotstack.io/basic/asset/video/luma/circles/circle-expand-right.mp4" }, "start": 9, "length": 2 }, { "asset": { "type": "image", "src": "https://images.pexels.com/photos/3873973/pexels-photo-3873973.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260" }, "start": 6, "length": 4, "effect": "zoomIn" } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/dish3.png" }, "start": 9, "length": 3.5, "fit": "contain", "scale": 0.35, "effect": "zoomIn", "offset": { "x": -0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Grill

", "css": "p { font-family: 'Barlow ExtraBold'; color: #11000000; font-size: 260px; text-align: left; }", "width": 500, "height": 300 }, "start": 9.4, "length": 3.1, "position": "topLeft", "offset": { "x": 0.05 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Grilled Banderilles

", "css": "p { font-family: 'Barlow ExtraBold'; color: #FFff6600; font-size: 140px; text-align: left; line-height: 70%; }", "width": 800, "height": 280 }, "start": 9.5, "length": 3, "offset": { "x": 0.16, "y": 0.25 }, "transition": { "in": "slideLeft", "out": "fade" } }, { "asset": { "type": "html", "html": "

Sweet and sour pork with peppers, onions and pineapple bathed in barbecue sauce.

", "css": "p { font-family: 'Barlow Regular'; color: #FF1a1a1a; font-size: 50px; text-align: left; line-height: 100%;}", "width": 800, "height": 300 }, "start": 9.5, "length": 3.1, "offset": { "x": 0.16, "y": -0.05 }, "transition": { "in": "slideLeft", "out": "fade" } }, { "asset": { "type": "html", "html": "

$18.90

", "css": "p { font-family: 'Barlow ExtraBold'; color: #FFFF0000; font-size: 90px; text-align: left; line-height: 100%;}", "width": 800, "height": 100 }, "start": 9.5, "length": 3.1, "offset": { "x": 0.16, "y": -0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 450, "height": 450, "background": "#FF0000" }, "start": 9, "length": 3, "position": "bottom", "offset": { "x": -0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 900, "height": 800, "background": "#FFFFFF" }, "start": 9, "length": 3.5, "position": "right", "offset": { "x": -0.1 }, "transition": { "out": "slideUp" } } ] }, { "clips": [ { "asset": { "type": "luma", "src": "https://templates.shotstack.io/basic/asset/video/luma/circles/circle-expand-left.mp4" }, "start": 12, "length": 2 }, { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/backgrounds/bg-aviary-1.jpg" }, "start": 9, "length": 4, "effect": "zoomIn" } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/dish4.png" }, "start": 12, "length": 3.5, "fit": "contain", "scale": 0.35, "effect": "zoomIn", "offset": { "x": 0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Toast

", "css": "p { font-family: 'Barlow ExtraBold'; color: #11000000; font-size: 260px; text-align: left; }", "width": 800, "height": 300 }, "start": 12.4, "length": 3.1, "position": "topRight", "offset": { "x": -0.05 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

Smashed Avo Toast

", "css": "p { font-family: 'Barlow ExtraBold'; color: #ff6600; font-size: 140px; text-align: left; line-height: 70%; }", "width": 800, "height": 280 }, "start": 12.5, "length": 3, "offset": { "x": -0.16, "y": 0.25 }, "transition": { "in": "slideLeft", "out": "fade" } }, { "asset": { "type": "html", "html": "

Slice of toasted bread with avocado, house dressing, egg to taste and watercress leaves.

", "css": "p { font-family: 'Barlow Regular'; color: #FF1a1a1a; font-size: 50px; text-align: left; line-height: 100%;}", "width": 800, "height": 300 }, "start": 12.5, "length": 3.1, "offset": { "x": -0.16, "y": -0.05 }, "transition": { "in": "slideLeft", "out": "fade" } }, { "asset": { "type": "html", "html": "

$18.90

", "css": "p { font-family: 'Barlow ExtraBold'; color: #FFFF0000; font-size: 90px; text-align: left; line-height: 100%;}", "width": 800, "height": 100 }, "start": 12.5, "length": 3.1, "offset": { "x": -0.16, "y": -0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 450, "height": 450, "background": "#FF0000" }, "start": 12, "length": 3, "position": "bottom", "offset": { "x": 0.25 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "

 

", "width": 900, "height": 800, "background": "#FFFFFF" }, "start": 12, "length": 3.5, "position": "left", "offset": { "x": 0.1 }, "transition": { "in": "slideUp", "out": "fade" } } ] }, { "clips": [ { "asset": { "type": "luma", "src": "https://templates.shotstack.io/basic/asset/video/luma/circles/circle-expand.mp4" }, "start": 15, "length": 2 }, { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/backgrounds/bg-aviary-1.jpg " }, "start": 12, "length": 4, "effect": "zoomIn" } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/logos/contemporary-color-black.png" }, "start": 15, "length": 4, "fit": "none", "scale": 0.8, "offset": { "y": 0.1 }, "transition": { "in": "slideUp" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "736 Brockton Avenue, Abington, MA 2351
548-500-5223", "css": "p { font-family: 'Barlow ExtraBold'; color: #FF1a1a1a; font-size: 50px; text-align: center;} span { font-family: 'Barlow Regular'; color: #FF1a1a1a; font-size: 50px; text-align: center;}", "width": 600, "height": 300 }, "start": 15.8, "length": 3.2, "offset": { "y": -0.2 }, "transition": { "in": "slideUp" } } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/backgrounds/bg-aviary-1.jpg " }, "start": 15, "length": 4, "effect": "zoomIn" } ] } ] }, "output": { "format": "mp4", "resolution": "1080" } } ``` ## 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