# Kinetic text (video template) > Thirty-five clips of pure kinetic typography — words that move, scale and snap to a beat. It is the most animation-dense template in the library and a working reference for how far text motion can go in a single JSON timeline. ## Overview - **Page**: https://shotstack.io/templates/kinetic-text/ - **Output**: MP4, 1024x576 (16:9) - **Length**: 16.9s - **Timeline**: 35 clips on 3 tracks; assets: html, image - **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=eyJ0aW1lbGluZSI6eyJzb3VuZHRyYWNrIjp7InNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy1hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL3ByaXZhdGUvc3RvbXAud2F2IiwiZWZmZWN0IjoiZmFkZU91dCJ9LCJmb250cyI6W3sic3JjIjoiaHR0cHM6Ly9zaG90c3RhY2staW5nZXN0LWFwaS12MS1zb3VyY2VzLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vd3pyNnkwd3R0aS96enk5ajh5bi0zaDVkLXhlNGQtZHcway0yYWl1OGQycHF5eGgvc291cmNlLnR0ZiJ9LHsic3JjIjoiaHR0cHM6Ly9zaG90c3RhY2staW5nZXN0LWFwaS12MS1zb3VyY2VzLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vd3pyNnkwd3R0aS96enk5ajh5Yy0xY25pLW10MnctM29ncy0yZ3Z4Y2UzZ2doaHUvc291cmNlLnR0ZiJ9LHsic3JjIjoiaHR0cHM6Ly9zaG90c3RhY2staW5nZXN0LWFwaS12MS1zb3VyY2VzLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vd3pyNnkwd3R0aS96enk5ajh5NC0wdnM5LW95MHAteWFiMi0wODRqb3UxYjZtMXMvc291cmNlLnR0ZiJ9XSwiYmFja2dyb3VuZCI6IiMwMDAwMDAiLCJ0cmFja3MiOlt7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5DcmVhdGU8L3A-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiBcIkxhdG9cIjsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgICAgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6MC4wOTYsImxlbmd0aCI6MC42LCJ0cmFuc2l0aW9uIjp7ImluIjoiem9vbSJ9fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPnZpZGVvczwvcD4iLCJjc3MiOiJwIHsgZm9udC1mYW1pbHk6IFwiTGF0b1wiOyBjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAzMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyAgICB9Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0IjoxMDAsInBvc2l0aW9uIjoiY2VudGVyIn0sInN0YXJ0IjowLjcyLCJsZW5ndGgiOjAuNjJ9LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-dXNpbmc8L3A-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiBcIkxhdG9cIjsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgICAgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6MS4zOCwibGVuZ3RoIjowLjIyfSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPnVzaW5nIGh0bWw8L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDMwcHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjEuNjQsImxlbmd0aCI6MC4zMX0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj51c2luZyBodG1sIGFuZDwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6MS45OSwibGVuZ3RoIjowLjI2fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPnVzaW5nIGh0bWwgYW5kIGNzczwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6Mi4yOSwibGVuZ3RoIjowLjMxfSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPndpdGg8L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjMDAwMDAwOyBmb250LXNpemU6IDMwcHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjIuNjQsImxlbmd0aCI6MC41NiwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlTGVmdCJ9fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPnRoZTwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6My4yNCwibGVuZ3RoIjowLjY4fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPlNob3RzdGFjazwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzRweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6My45OCwibGVuZ3RoIjowLjU0LCJlZmZlY3QiOiJ6b29tSW4ifSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPkFQSTwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6ZTogMzhweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6NC41NiwibGVuZ3RoIjowLjYsInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZUxlZnQifX0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5BUDwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6ZTogMzhweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6NS4yLCJsZW5ndGgiOjAuMDR9LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHAgZGF0YS1odG1sLXR5cGU9XCJ0ZXh0XCI-STwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6ZTogMzhweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6NS4yOCwibGVuZ3RoIjowLjA0fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPnVzZTwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6NS4zNiwibGVuZ3RoIjowLjIyfSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPnlvdXI8L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDMwcHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjUuNjIsImxlbmd0aCI6MC4yMn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5vd248L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDMwcHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjUuODYsImxlbmd0aCI6MC4yMn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5mb250PC9wPiIsImNzcyI6InAgeyBjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAzMHB4OyBmb250LWZhbWlseTogTGF0bzsgdGV4dC1hbGlnbjogY2VudGVyOyB9Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0IjoxMDAsInBvc2l0aW9uIjoiY2VudGVyIn0sInN0YXJ0Ijo2LjEyLCJsZW5ndGgiOjAuMn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5mb250PC9wPiIsImNzcyI6InAgeyBjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAzMHB4OyBmb250LWZhbWlseTogUGVybWFuZW50IE1hcmtlcjsgdGV4dC1hbGlnbjogY2VudGVyOyB9Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0IjoxMDAsInBvc2l0aW9uIjoiY2VudGVyIn0sInN0YXJ0Ijo2LjM2LCJsZW5ndGgiOjAuMjYsImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwib2Zmc2V0Ijp7IngiOjAsInkiOjB9LCJwb3NpdGlvbiI6ImNlbnRlciJ9LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHAgZGF0YS1odG1sLXR5cGU9XCJ0ZXh0XCI-YW5kPC9wPiIsImNzcyI6InAgeyBjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAzMHB4OyBmb250LWZhbWlseTogTGF0bzsgdGV4dC1hbGlnbjogY2VudGVyOyB9Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0IjoxMDAsInBvc2l0aW9uIjoiY2VudGVyIn0sInN0YXJ0Ijo2LjY2LCJsZW5ndGgiOjAuM30seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5hZGQ8L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDMwcHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjcsImxlbmd0aCI6MC40Nn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5jb2xvcjwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICMyNWQzZDA7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6Ny41LCJsZW5ndGgiOjAuM30seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5jb2xvciBhbmQ8L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjMjVkM2QwOyBmb250LXNpemU6IDMwcHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjcuODQsImxlbmd0aCI6MC40fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPmNvbG9yIGFuZCBzdHlsZTwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmYzczYjQ7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6OC4yOCwibGVuZ3RoIjowLjM4fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPmNvbG9yIGFuZCBzdHlsZTwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICM3MmZkZDM7IGZvbnQtc2l6ZTogMzBweDsgZm9udC1mYW1pbHk6IExhdG87IHRleHQtYWxpZ246IGNlbnRlcjsgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6OC43LCJsZW5ndGgiOjAuMzh9LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHAgZGF0YS1odG1sLXR5cGU9XCJ0ZXh0XCI-dG88L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDMycHg7IGZvbnQtZmFtaWx5OiBMYXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjkuMTIsImxlbmd0aCI6MC42MiwiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJvZmZzZXQiOnsieCI6MCwieSI6MH0sInBvc2l0aW9uIjoiY2VudGVyIn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD5vbmU8L3A-IiwiY3NzIjoicCB7IGZvbnQtZmFtaWx5OiBcIkxhdG9cIjsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzJweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgICAgfSIsIndpZHRoIjo0NTAsImhlaWdodCI6MTAwLCJwb3NpdGlvbiI6ImNlbnRlciJ9LCJzdGFydCI6OS43OCwibGVuZ3RoIjowLjU4fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwIGRhdGEtaHRtbC10eXBlPVwidGV4dFwiPnRlbjwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzJweDsgZm9udC1mYW1pbHk6IFwiTGF0b1wiOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjEwLjQsImxlbmd0aCI6MC4yNn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj5odW5kcmVkczwvcD4iLCJjc3MiOiJwIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMzJweDsgZm9udC1mYW1pbHk6IFwiTGF0b1wiOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjEwLjcsImxlbmd0aCI6MC4yNn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cCBkYXRhLWh0bWwtdHlwZT1cInRleHRcIj50aG91c2FuZHM8L3A-IiwiY3NzIjoicCB7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDMycHg7IGZvbnQtZmFtaWx5OiBcIkxhdG9cIjsgdGV4dC1hbGlnbjogY2VudGVyOyB9Iiwid2lkdGgiOjQ1MCwiaGVpZ2h0IjoxMDAsInBvc2l0aW9uIjoiY2VudGVyIn0sInN0YXJ0IjoxMSwibGVuZ3RoIjowLjU4fSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPm9mPC9wPiIsImNzcyI6InAgeyBmb250LWZhbWlseTogXCJMYXRvXCI7IGNvbG9yOiAjMDAwMDAwOyBmb250LXNpemU6IDM0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC13ZWlnaHQ6IGJvbGQ7ICAgIH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjExLjYyLCJsZW5ndGgiOjAuMTh9LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-dmlkZW9zPC9wPiIsImNzcyI6InAgeyBmb250LWZhbWlseTogXCJMYXRvXCI7IGNvbG9yOiAjMDAwMDAwOyBmb250LXNpemU6IDM0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC13ZWlnaHQ6IGJvbGQ7ICAgIH0iLCJ3aWR0aCI6NDUwLCJoZWlnaHQiOjEwMCwicG9zaXRpb24iOiJjZW50ZXIifSwic3RhcnQiOjExLjg0LCJsZW5ndGgiOjEsImVmZmVjdCI6Inpvb21JbiIsInRyYW5zaXRpb24iOnsib3V0Ijoiem9vbSJ9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPiZuYnNwOzwvcD4iLCJ3aWR0aCI6MTAyNCwiaGVpZ2h0Ijo1NzYsImJhY2tncm91bmQiOiIjZmZmZmZmIn0sInN0YXJ0IjoyLjY0LCJsZW5ndGgiOjEuMzJ9LHsiYXNzZXQiOnsidHlwZSI6Imh0bWwiLCJodG1sIjoiPHA-Jm5ic3A7PC9wPiIsIndpZHRoIjoxMDI0LCJoZWlnaHQiOjU3NiwiYmFja2dyb3VuZCI6IiNmZmZmZmYifSwic3RhcnQiOjQuNTYsImxlbmd0aCI6MC43Nn0seyJhc3NldCI6eyJ0eXBlIjoiaHRtbCIsImh0bWwiOiI8cD4mbmJzcDs8L3A-Iiwid2lkdGgiOjEwMjQsImhlaWdodCI6NTc2LCJiYWNrZ3JvdW5kIjoiIzI1ZDNkMCJ9LCJzdGFydCI6OS4xMiwibGVuZ3RoIjoyLjQ2LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIm9mZnNldCI6eyJ4IjowLCJ5IjowfSwicG9zaXRpb24iOiJjZW50ZXIifSx7ImFzc2V0Ijp7InR5cGUiOiJodG1sIiwiaHRtbCI6IjxwPiZuYnNwOzwvcD4iLCJ3aWR0aCI6MTAyNCwiaGVpZ2h0Ijo1NzYsImJhY2tncm91bmQiOiIjZmM3M2I0In0sInN0YXJ0IjoxMS42MiwibGVuZ3RoIjoxLjIyfV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy1hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2JyYW5kaW5nL2xvZ28tcmV2ZXJzZS5wbmcifSwic3RhcnQiOjEyLjg4LCJsZW5ndGgiOjQsImZpdCI6Im5vbmUiLCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVVcCJ9fV19XX0sIm91dHB1dCI6eyJmb3JtYXQiOiJtcDQiLCJzaXplIjp7IndpZHRoIjoxMDI0LCJoZWlnaHQiOjU3Nn19fQ ## 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: 34 html, 1 image, 1 soundtrack. ## Template JSON ```json { "timeline": { "soundtrack": { "src": "https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/private/stomp.wav", "effect": "fadeOut" }, "fonts": [ { "src": "https://shotstack-ingest-api-v1-sources.s3.ap-southeast-2.amazonaws.com/wzr6y0wtti/zzy9j8yn-3h5d-xe4d-dw0k-2aiu8d2pqyxh/source.ttf" }, { "src": "https://shotstack-ingest-api-v1-sources.s3.ap-southeast-2.amazonaws.com/wzr6y0wtti/zzy9j8yc-1cni-mt2w-3ogs-2gvxce3gghhu/source.ttf" }, { "src": "https://shotstack-ingest-api-v1-sources.s3.ap-southeast-2.amazonaws.com/wzr6y0wtti/zzy9j8y4-0vs9-oy0p-yab2-084jou1b6m1s/source.ttf" } ], "background": "#000000", "tracks": [ { "clips": [ { "asset": { "type": "html", "html": "
Create
", "css": "p { font-family: \"Lato\"; color: #ffffff; font-size: 30px; text-align: center; font-weight: bold; }", "width": 450, "height": 100, "position": "center" }, "start": 0.096, "length": 0.6, "transition": { "in": "zoom" } }, { "asset": { "type": "html", "html": "videos
", "css": "p { font-family: \"Lato\"; color: #ffffff; font-size: 30px; text-align: center; font-weight: bold; }", "width": 450, "height": 100, "position": "center" }, "start": 0.72, "length": 0.62 }, { "asset": { "type": "html", "html": "using
", "css": "p { font-family: \"Lato\"; color: #ffffff; font-size: 30px; text-align: center; font-weight: bold; }", "width": 450, "height": 100, "position": "center" }, "start": 1.38, "length": 0.22 }, { "asset": { "type": "html", "html": "using html
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 1.64, "length": 0.31 }, { "asset": { "type": "html", "html": "using html and
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 1.99, "length": 0.26 }, { "asset": { "type": "html", "html": "using html and css
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 2.29, "length": 0.31 }, { "asset": { "type": "html", "html": "with
", "css": "p { color: #000000; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 2.64, "length": 0.56, "transition": { "in": "slideLeft" } }, { "asset": { "type": "html", "html": "the
", "css": "p { color: #000000; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 3.24, "length": 0.68 }, { "asset": { "type": "html", "html": "Shotstack
", "css": "p { color: #ffffff; font-size: 34px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 3.98, "length": 0.54, "effect": "zoomIn" }, { "asset": { "type": "html", "html": "API
", "css": "p { color: #000000; font-size: 38px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 4.56, "length": 0.6, "transition": { "in": "slideLeft" } }, { "asset": { "type": "html", "html": "AP
", "css": "p { color: #000000; font-size: 38px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 5.2, "length": 0.04 }, { "asset": { "type": "html", "html": "I
", "css": "p { color: #000000; font-size: 38px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 5.28, "length": 0.04 }, { "asset": { "type": "html", "html": "use
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 5.36, "length": 0.22 }, { "asset": { "type": "html", "html": "your
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 5.62, "length": 0.22 }, { "asset": { "type": "html", "html": "own
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 5.86, "length": 0.22 }, { "asset": { "type": "html", "html": "font
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 6.12, "length": 0.2 }, { "asset": { "type": "html", "html": "font
", "css": "p { color: #ffffff; font-size: 30px; font-family: Permanent Marker; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 6.36, "length": 0.26, "fit": "none", "scale": 1, "offset": { "x": 0, "y": 0 }, "position": "center" }, { "asset": { "type": "html", "html": "and
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 6.66, "length": 0.3 }, { "asset": { "type": "html", "html": "add
", "css": "p { color: #ffffff; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 7, "length": 0.46 }, { "asset": { "type": "html", "html": "color
", "css": "p { color: #25d3d0; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 7.5, "length": 0.3 }, { "asset": { "type": "html", "html": "color and
", "css": "p { color: #25d3d0; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 7.84, "length": 0.4 }, { "asset": { "type": "html", "html": "color and style
", "css": "p { color: #fc73b4; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 8.28, "length": 0.38 }, { "asset": { "type": "html", "html": "color and style
", "css": "p { color: #72fdd3; font-size: 30px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 8.7, "length": 0.38 }, { "asset": { "type": "html", "html": "to
", "css": "p { color: #ffffff; font-size: 32px; font-family: Lato; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 9.12, "length": 0.62, "fit": "none", "scale": 1, "offset": { "x": 0, "y": 0 }, "position": "center" }, { "asset": { "type": "html", "html": "one
", "css": "p { font-family: \"Lato\"; color: #ffffff; font-size: 32px; text-align: center; font-weight: bold; }", "width": 450, "height": 100, "position": "center" }, "start": 9.78, "length": 0.58 }, { "asset": { "type": "html", "html": "ten
", "css": "p { color: #ffffff; font-size: 32px; font-family: \"Lato\"; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 10.4, "length": 0.26 }, { "asset": { "type": "html", "html": "hundreds
", "css": "p { color: #ffffff; font-size: 32px; font-family: \"Lato\"; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 10.7, "length": 0.26 }, { "asset": { "type": "html", "html": "thousands
", "css": "p { color: #ffffff; font-size: 32px; font-family: \"Lato\"; text-align: center; }", "width": 450, "height": 100, "position": "center" }, "start": 11, "length": 0.58 }, { "asset": { "type": "html", "html": "of
", "css": "p { font-family: \"Lato\"; color: #000000; font-size: 34px; text-align: center; font-weight: bold; }", "width": 450, "height": 100, "position": "center" }, "start": 11.62, "length": 0.18 }, { "asset": { "type": "html", "html": "videos
", "css": "p { font-family: \"Lato\"; color: #000000; font-size: 34px; text-align: center; font-weight: bold; }", "width": 450, "height": 100, "position": "center" }, "start": 11.84, "length": 1, "effect": "zoomIn", "transition": { "out": "zoom" } } ] }, { "clips": [ { "asset": { "type": "html", "html": "", "width": 1024, "height": 576, "background": "#ffffff" }, "start": 2.64, "length": 1.32 }, { "asset": { "type": "html", "html": "
", "width": 1024, "height": 576, "background": "#ffffff" }, "start": 4.56, "length": 0.76 }, { "asset": { "type": "html", "html": "
", "width": 1024, "height": 576, "background": "#25d3d0" }, "start": 9.12, "length": 2.46, "fit": "none", "scale": 1, "offset": { "x": 0, "y": 0 }, "position": "center" }, { "asset": { "type": "html", "html": "
", "width": 1024, "height": 576, "background": "#fc73b4" }, "start": 11.62, "length": 1.22 } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/branding/logo-reverse.png" }, "start": 12.88, "length": 4, "fit": "none", "transition": { "in": "slideUp" } } ] } ] }, "output": { "format": "mp4", "size": { "width": 1024, "height": 576 } } } ``` ## 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