# Luxury Car Walk Around (video template) > A luxury-style walkaround edit for a single vehicle: exterior and detail shots cut together with model and spec text. Replace the footage and details per car to give premium listings a video that matches the price tag. ## Overview - **Page**: https://shotstack.io/studio/templates/car-walkaround-video-v2/ - **Output**: MP4, 1280x720 (16:9), 25 fps - **Length**: 13s - **Timeline**: 14 clips on 13 tracks; assets: audio, rich-text, video - **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=eyJ0aW1lbGluZSI6eyJmb250cyI6W3sic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2Nhci13YWxrYXJvdW5kLXZpZGVvLzg5OTNhZGYwLWQ4YTMtNDQ5Yi05NmQ2LWQ2M2JjOTEyYzMzZC9Nb250c2VycmF0LVNlbWlCb2xkLnR0ZiJ9LHsic3JjIjoiaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1eFc1cnlnYmk0OWMudHRmIn1dLCJiYWNrZ3JvdW5kIjoiIzAwMDAwMCIsInRyYWNrcyI6W3siY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJyaWNoLXRleHQiLCJ0ZXh0IjoiWUVBUiIsImZvbnQiOnsiZmFtaWx5IjoiSlRVU2pJZzFfaTZ0OGtDSEttNDV4VzVyeWdiaTQ5YyIsInNpemUiOjE4LCJ3ZWlnaHQiOjUwMCwiY29sb3IiOiIjZjBjNDBmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sIm9mZnNldCI6eyJ4IjowLjM0NiwieSI6MC40Mjh9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsInBvc2l0aW9uIjoiY2VudGVyIiwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGUifSwic3RhcnQiOjAuMSwibGVuZ3RoIjoxMi45LCJ3aWR0aCI6MzIwLCJoZWlnaHQiOjMyfV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJyaWNoLXRleHQiLCJ0ZXh0Ijoie3sgWUVBUiB9fSIsImZvbnQiOnsiZmFtaWx5IjoiSlRVU2pJZzFfaTZ0OGtDSEttNDV4VzVyeWdiaTQ5YyIsInNpemUiOjI4LCJ3ZWlnaHQiOjUwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sIm9mZnNldCI6eyJ4IjowLjM0NiwieSI6MC4zOH0sInRyYW5zaXRpb24iOnsiaW4iOiJzbGlkZUxlZnQifSwiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJwb3NpdGlvbiI6ImNlbnRlciIsInN0YXJ0IjowLjEsImxlbmd0aCI6MTIuOSwid2lkdGgiOjMyMCwiaGVpZ2h0Ijo0NX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoicmljaC10ZXh0IiwidGV4dCI6Ik9ET01FVEVSIiwiZm9udCI6eyJmYW1pbHkiOiJKVFVTaklnMV9pNnQ4a0NIS200NXhXNXJ5Z2JpNDljIiwic2l6ZSI6MTgsIndlaWdodCI6NTAwLCJjb2xvciI6IiNmMGM0MGYiLCJvcGFjaXR5IjoxfSwic3R5bGUiOnsibGV0dGVyU3BhY2luZyI6MCwid29yZFNwYWNpbmciOjAsImxpbmVIZWlnaHQiOjEuMiwidGV4dFRyYW5zZm9ybSI6Im5vbmUiLCJ0ZXh0RGVjb3JhdGlvbiI6Im5vbmUifSwiYWxpZ24iOnsiaG9yaXpvbnRhbCI6ImxlZnQiLCJ2ZXJ0aWNhbCI6Im1pZGRsZSJ9fSwib2Zmc2V0Ijp7IngiOjAuMzQ2LCJ5IjowLjMyN30sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwicG9zaXRpb24iOiJjZW50ZXIiLCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJzdGFydCI6MC4yLCJsZW5ndGgiOjEyLjgsIndpZHRoIjozMjAsImhlaWdodCI6MzN9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJ7eyBPRE9NRVRFUiB9fSBrbXMiLCJmb250Ijp7ImZhbWlseSI6IkpUVVNqSWcxX2k2dDhrQ0hLbTQ1eFc1cnlnYmk0OWMiLCJzaXplIjoyOCwid2VpZ2h0Ijo1MDAsImNvbG9yIjoiI2ZmZmZmZiIsIm9wYWNpdHkiOjF9LCJzdHlsZSI6eyJsZXR0ZXJTcGFjaW5nIjowLCJ3b3JkU3BhY2luZyI6MCwibGluZUhlaWdodCI6MS4yLCJ0ZXh0VHJhbnNmb3JtIjoibm9uZSIsInRleHREZWNvcmF0aW9uIjoibm9uZSJ9LCJhbGlnbiI6eyJob3Jpem9udGFsIjoibGVmdCIsInZlcnRpY2FsIjoibWlkZGxlIn19LCJvZmZzZXQiOnsieCI6MC4zNDYsInkiOjAuMjh9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVMZWZ0In0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwicG9zaXRpb24iOiJjZW50ZXIiLCJzdGFydCI6MC4yLCJsZW5ndGgiOjEyLjgsIndpZHRoIjozMjAsImhlaWdodCI6NDB9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJTUEVDUyIsImZvbnQiOnsiZmFtaWx5IjoiSlRVU2pJZzFfaTZ0OGtDSEttNDV4VzVyeWdiaTQ5YyIsInNpemUiOjE4LCJ3ZWlnaHQiOjUwMCwiY29sb3IiOiIjZjBjNDBmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sIm9mZnNldCI6eyJ4IjowLjM0NiwieSI6MC4yMn0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwicG9zaXRpb24iOiJjZW50ZXIiLCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJzdGFydCI6MC4zLCJsZW5ndGgiOjEyLjcsIndpZHRoIjozMjAsImhlaWdodCI6NDZ9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJ7eyBTUEVDUyB9fSIsImZvbnQiOnsiZmFtaWx5IjoiSlRVU2pJZzFfaTZ0OGtDSEttNDV4VzVyeWdiaTQ5YyIsInNpemUiOjI4LCJ3ZWlnaHQiOjUwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sIm9mZnNldCI6eyJ4IjowLjM0NiwieSI6MC4xNDV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVMZWZ0In0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwicG9zaXRpb24iOiJjZW50ZXIiLCJzdGFydCI6MC4zLCJsZW5ndGgiOjEyLjcsIndpZHRoIjozMjAsImhlaWdodCI6NjB9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJFTlFVSVJJRVMiLCJmb250Ijp7ImZhbWlseSI6IkpUVVNqSWcxX2k2dDhrQ0hLbTQ1eFc1cnlnYmk0OWMiLCJzaXplIjoxOCwid2VpZ2h0Ijo1MDAsImNvbG9yIjoiI2YwYzQwZiIsIm9wYWNpdHkiOjF9LCJzdHlsZSI6eyJsZXR0ZXJTcGFjaW5nIjowLCJ3b3JkU3BhY2luZyI6MCwibGluZUhlaWdodCI6MS4yLCJ0ZXh0VHJhbnNmb3JtIjoibm9uZSIsInRleHREZWNvcmF0aW9uIjoibm9uZSJ9LCJhbGlnbiI6eyJob3Jpem9udGFsIjoibGVmdCIsInZlcnRpY2FsIjoibWlkZGxlIn19LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIm9mZnNldCI6eyJ4IjowLjM0NiwieSI6LTAuMzU0fSwicG9zaXRpb24iOiJjZW50ZXIiLCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJzdGFydCI6MC40LCJsZW5ndGgiOjEyLjYsIndpZHRoIjozMjAsImhlaWdodCI6NDZ9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJ7eyBDT05UQUNUIH19IiwiZm9udCI6eyJmYW1pbHkiOiJKVFVTaklnMV9pNnQ4a0NIS200NXhXNXJ5Z2JpNDljIiwic2l6ZSI6MjQsIndlaWdodCI6NTAwLCJjb2xvciI6IiNmZmZmZmYiLCJvcGFjaXR5IjoxfSwic3R5bGUiOnsibGV0dGVyU3BhY2luZyI6MCwid29yZFNwYWNpbmciOjAsImxpbmVIZWlnaHQiOjEuMiwidGV4dFRyYW5zZm9ybSI6Im5vbmUiLCJ0ZXh0RGVjb3JhdGlvbiI6Im5vbmUifSwiYWxpZ24iOnsiaG9yaXpvbnRhbCI6ImxlZnQiLCJ2ZXJ0aWNhbCI6Im1pZGRsZSJ9fSwiZml0Ijoibm9uZSIsInNjYWxlIjoxLCJvZmZzZXQiOnsieCI6MC4zNDYsInkiOi0wLjQzMX0sInBvc2l0aW9uIjoiY2VudGVyIiwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlTGVmdCJ9LCJzdGFydCI6MC40LCJsZW5ndGgiOjEyLjYsIndpZHRoIjozMjAsImhlaWdodCI6NjV9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJ7eyBNQUtFIH19IHt7IE1PREVMIH19IiwiZm9udCI6eyJmYW1pbHkiOiJKVFVTaklnMV9pNnQ4a0NIS200NXhXNXJ5Z2JpNDljIiwic2l6ZSI6MTAwLCJ3ZWlnaHQiOjcwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifSwiYW5pbWF0aW9uIjp7InByZXNldCI6ImZhZGVJbiIsInN0eWxlIjoid29yZCIsImRpcmVjdGlvbiI6InJpZ2h0In19LCJzdGFydCI6MCwib2Zmc2V0Ijp7IngiOi0wLjE0NCwieSI6LTAuMDA0fSwidHJhbnNpdGlvbiI6eyJpbiI6InNsaWRlUmlnaHQiLCJvdXQiOiJmYWRlIn0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwicG9zaXRpb24iOiJjZW50ZXIiLCJsZW5ndGgiOjQsIndpZHRoIjo4MDYsImhlaWdodCI6NjM0fSx7ImFzc2V0Ijp7InR5cGUiOiJyaWNoLXRleHQiLCJ0ZXh0Ijoie3sgTUFLRSB9fSB7eyBNT0RFTCB9fSIsImZvbnQiOnsiZmFtaWx5IjoiSlRVU2pJZzFfaTZ0OGtDSEttNDV4VzVyeWdiaTQ5YyIsInNpemUiOjQyLCJ3ZWlnaHQiOjcwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifSwiYW5pbWF0aW9uIjp7InByZXNldCI6ImZhZGVJbiIsInN0eWxlIjoid29yZCJ9fSwib2Zmc2V0Ijp7IngiOi0wLjIxMywieSI6LTAuMTh9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVSaWdodCJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsInBvc2l0aW9uIjoiY2VudGVyIiwic3RhcnQiOjQsImxlbmd0aCI6OSwid2lkdGgiOjY2NCwiaGVpZ2h0IjozNTh9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoie3sgVklERU9fMSB9fSIsInZvbHVtZSI6MX0sInN0YXJ0IjowLCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSIsIm91dCI6ImZhZGUifSwicG9zaXRpb24iOiJjZW50ZXIiLCJzY2FsZSI6MSwibGVuZ3RoIjo1LCJmaXQiOiJjb250YWluIiwid2lkdGgiOjEyODAsImhlaWdodCI6NzIwLCJvZmZzZXQiOnsieCI6MCwieSI6MH19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoie3sgVklERU9fMiB9fSIsInZvbHVtZSI6MX0sInN0YXJ0Ijo0LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSIsIm91dCI6ImZhZGUifSwicG9zaXRpb24iOiJjZW50ZXIiLCJmaXQiOiJjb250YWluIiwic2NhbGUiOjEsImxlbmd0aCI6NSwid2lkdGgiOjEyODAsImhlaWdodCI6NzIwLCJvZmZzZXQiOnsieCI6MCwieSI6MH19XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoie3sgVklERU9fMyB9fSIsInZvbHVtZSI6MX0sInN0YXJ0Ijo4LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJwb3NpdGlvbiI6ImNlbnRlciIsImxlbmd0aCI6NSwiZml0IjoiY29udGFpbiIsIndpZHRoIjoxMjgwLCJoZWlnaHQiOjcyMCwib2Zmc2V0Ijp7IngiOjAsInkiOjB9fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJhdWRpbyIsInNyYyI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9jYXItd2Fsa2Fyb3VuZC12aWRlby9mYjRiZWFlNi05ZDNjLTRjZGEtOWZmZS04NDc4ZmExNzM1YzEvc291cmNlLm1wMyIsInZvbHVtZSI6MSwiZWZmZWN0IjoiZmFkZU91dCJ9LCJzdGFydCI6MCwibGVuZ3RoIjoxM31dfV19LCJvdXRwdXQiOnsiZm9ybWF0IjoibXA0IiwiZnBzIjoyNSwic2l6ZSI6eyJ3aWR0aCI6MTI4MCwiaGVpZ2h0Ijo3MjB9LCJkZXN0aW5hdGlvbnMiOlt7InByb3ZpZGVyIjoic2hvdHN0YWNrIn1dfSwibWVyZ2UiOlt7ImZpbmQiOiJWSURFT18xIiwicmVwbGFjZSI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9jYXItd2Fsa2Fyb3VuZC12aWRlby80YTNkMzMwMC05NzhlLTQ4NjYtODczMS1iMGQ1OTk3NTA4MDQvenp5OGZ5Z2EtM3Z1Zy1qNzByLWQ5ZHEtMW1jYWZtNGphM2d3Lm1wNCJ9LHsiZmluZCI6IlZJREVPXzIiLCJyZXBsYWNlIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL2Nhci13YWxrYXJvdW5kLXZpZGVvLzgyYTc1ODAwLThlODktNGFmMi1hNjlmLTI2NTA4Yjk4NzUyMS96enk4Znllci0yb2w0LXIxNHktbDdtaC0xendoeWgxb3o5OXYubXA0In0seyJmaW5kIjoiVklERU9fMyIsInJlcGxhY2UiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vY2FyLXdhbGthcm91bmQtdmlkZW8vNWNlMDM2NTItMDhjYy00MTBkLWE4ZDItY2Y1ZWNmOTY2ZWMzL3p6eThmeWNhLTQ1bXYtNnQzcy05N2tkLTFsa3duNTRsMzgxYy5tcDQifSx7ImZpbmQiOiJNQUtFIiwicmVwbGFjZSI6IkxhbWJvcmdoaW5pIn0seyJmaW5kIjoiTU9ERUwiLCJyZXBsYWNlIjoiSHVyYWNhbiBFVk8gQXV0byBBV0QifSx7ImZpbmQiOiJZRUFSIiwicmVwbGFjZSI6IjIwMjMifSx7ImZpbmQiOiJTUEVDUyIsInJlcGxhY2UiOiIxMENZTCA1LjJMIFBFVFJPTCJ9LHsiZmluZCI6Ik9ET01FVEVSIiwicmVwbGFjZSI6IjE3LDEwMCJ9LHsiZmluZCI6IkNPTlRBQ1QiLCJyZXBsYWNlIjoiREVBTiBAIDcwMy00MzgtNTczNiJ9XX0 - **Edit and save to an account**: https://dashboard.shotstack.io/studio/editor/car-walkaround-video-v2 ## 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 | | --- | --- | | `{{ VIDEO_1 }}` | https://templates.shotstack.io/car-walkaround-video/4a3d3300-978e-4866-8731-b0d599750804/zzy8fyga-3vug-j70r-d9dq-1mcafm4ja3gw.mp4 | | `{{ VIDEO_2 }}` | https://templates.shotstack.io/car-walkaround-video/82a75800-8e89-4af2-a69f-26508b987521/zzy8fyer-2ol4-r14y-l7mh-1zwhyh1oz99v.mp4 | | `{{ VIDEO_3 }}` | https://templates.shotstack.io/car-walkaround-video/5ce03652-08cc-410d-a8d2-cf5ecf966ec3/zzy8fyca-45mv-6t3s-97kd-1lkwn54l381c.mp4 | | `{{ MAKE }}` | Lamborghini | | `{{ MODEL }}` | Huracan EVO Auto AWD | | `{{ YEAR }}` | 2023 | | `{{ SPECS }}` | 10CYL 5.2L PETROL | | `{{ ODOMETER }}` | 17,100 | | `{{ CONTACT }}` | DEAN @ 703-438-5736 | ## Template JSON ```json { "timeline": { "fonts": [ { "src": "https://templates.shotstack.io/car-walkaround-video/8993adf0-d8a3-449b-96d6-d63bc912c33d/Montserrat-SemiBold.ttf" }, { "src": "https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf" } ], "background": "#000000", "tracks": [ { "clips": [ { "asset": { "type": "rich-text", "text": "YEAR", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 18, "weight": 500, "color": "#f0c40f", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "offset": { "x": 0.346, "y": 0.428 }, "fit": "none", "scale": 1, "position": "center", "transition": { "in": "fade" }, "start": 0.1, "length": 12.9, "width": 320, "height": 32 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ YEAR }}", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 28, "weight": 500, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "offset": { "x": 0.346, "y": 0.38 }, "transition": { "in": "slideLeft" }, "fit": "none", "scale": 1, "position": "center", "start": 0.1, "length": 12.9, "width": 320, "height": 45 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "ODOMETER", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 18, "weight": 500, "color": "#f0c40f", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "offset": { "x": 0.346, "y": 0.327 }, "fit": "none", "scale": 1, "position": "center", "transition": { "in": "fade" }, "start": 0.2, "length": 12.8, "width": 320, "height": 33 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ ODOMETER }} kms", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 28, "weight": 500, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "offset": { "x": 0.346, "y": 0.28 }, "transition": { "in": "slideLeft" }, "fit": "none", "scale": 1, "position": "center", "start": 0.2, "length": 12.8, "width": 320, "height": 40 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "SPECS", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 18, "weight": 500, "color": "#f0c40f", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "offset": { "x": 0.346, "y": 0.22 }, "fit": "none", "scale": 1, "position": "center", "transition": { "in": "fade" }, "start": 0.3, "length": 12.7, "width": 320, "height": 46 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ SPECS }}", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 28, "weight": 500, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "offset": { "x": 0.346, "y": 0.145 }, "transition": { "in": "slideLeft" }, "fit": "none", "scale": 1, "position": "center", "start": 0.3, "length": 12.7, "width": 320, "height": 60 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "ENQUIRIES", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 18, "weight": 500, "color": "#f0c40f", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "fit": "none", "scale": 1, "offset": { "x": 0.346, "y": -0.354 }, "position": "center", "transition": { "in": "fade" }, "start": 0.4, "length": 12.6, "width": 320, "height": 46 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ CONTACT }}", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 24, "weight": 500, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "fit": "none", "scale": 1, "offset": { "x": 0.346, "y": -0.431 }, "position": "center", "transition": { "in": "slideLeft" }, "start": 0.4, "length": 12.6, "width": 320, "height": 65 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ MAKE }} {{ MODEL }}", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 100, "weight": 700, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" }, "animation": { "preset": "fadeIn", "style": "word", "direction": "right" } }, "start": 0, "offset": { "x": -0.144, "y": -0.004 }, "transition": { "in": "slideRight", "out": "fade" }, "fit": "none", "scale": 1, "position": "center", "length": 4, "width": 806, "height": 634 }, { "asset": { "type": "rich-text", "text": "{{ MAKE }} {{ MODEL }}", "font": { "family": "JTUSjIg1_i6t8kCHKm45xW5rygbi49c", "size": 42, "weight": 700, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" }, "animation": { "preset": "fadeIn", "style": "word" } }, "offset": { "x": -0.213, "y": -0.18 }, "transition": { "in": "slideRight" }, "fit": "none", "scale": 1, "position": "center", "start": 4, "length": 9, "width": 664, "height": 358 } ] }, { "clips": [ { "asset": { "type": "video", "src": "{{ VIDEO_1 }}", "volume": 1 }, "start": 0, "transition": { "in": "fade", "out": "fade" }, "position": "center", "scale": 1, "length": 5, "fit": "contain", "width": 1280, "height": 720, "offset": { "x": 0, "y": 0 } } ] }, { "clips": [ { "asset": { "type": "video", "src": "{{ VIDEO_2 }}", "volume": 1 }, "start": 4, "transition": { "in": "fade", "out": "fade" }, "position": "center", "fit": "contain", "scale": 1, "length": 5, "width": 1280, "height": 720, "offset": { "x": 0, "y": 0 } } ] }, { "clips": [ { "asset": { "type": "video", "src": "{{ VIDEO_3 }}", "volume": 1 }, "start": 8, "transition": { "in": "fade" }, "position": "center", "length": 5, "fit": "contain", "width": 1280, "height": 720, "offset": { "x": 0, "y": 0 } } ] }, { "clips": [ { "asset": { "type": "audio", "src": "https://templates.shotstack.io/car-walkaround-video/fb4beae6-9d3c-4cda-9ffe-8478fa1735c1/source.mp3", "volume": 1, "effect": "fadeOut" }, "start": 0, "length": 13 } ] } ] }, "output": { "format": "mp4", "fps": 25, "size": { "width": 1280, "height": 720 }, "destinations": [ { "provider": "shotstack" } ] }, "merge": [ { "find": "VIDEO_1", "replace": "https://templates.shotstack.io/car-walkaround-video/4a3d3300-978e-4866-8731-b0d599750804/zzy8fyga-3vug-j70r-d9dq-1mcafm4ja3gw.mp4" }, { "find": "VIDEO_2", "replace": "https://templates.shotstack.io/car-walkaround-video/82a75800-8e89-4af2-a69f-26508b987521/zzy8fyer-2ol4-r14y-l7mh-1zwhyh1oz99v.mp4" }, { "find": "VIDEO_3", "replace": "https://templates.shotstack.io/car-walkaround-video/5ce03652-08cc-410d-a8d2-cf5ecf966ec3/zzy8fyca-45mv-6t3s-97kd-1lkwn54l381c.mp4" }, { "find": "MAKE", "replace": "Lamborghini" }, { "find": "MODEL", "replace": "Huracan EVO Auto AWD" }, { "find": "YEAR", "replace": "2023" }, { "find": "SPECS", "replace": "10CYL 5.2L PETROL" }, { "find": "ODOMETER", "replace": "17,100" }, { "find": "CONTACT", "replace": "DEAN @ 703-438-5736" } ] } ``` ## 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