# Real Estate Slideshow with Overlays (video template) > A dynamic real estate video template with merge fields for images and real estate agent details for use with the Shotstack Studio online video editor ## Overview - **Page**: https://shotstack.io/studio/templates/real-estate-slideshow-sd-overlays-merge-v2/ - **Output**: MP4, 1024x576 (16:9), 25 fps - **Length**: 36s - **Timeline**: 28 clips on 17 tracks; assets: audio, image, luma, 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=eyJ0aW1lbGluZSI6eyJmb250cyI6W3sic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS80NWQ2MjRmZS1lZTRlLTRmOGMtODUzZC02ZGIwNWYwMGNmNmYvbWFucm9wZS1leHRyYWJvbGQudHRmIn0seyJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlL2FiN2JiNTRmLTUzNzItNDc0MC1iNTY1LTMxZmY4MTFkZTRlNy9tYW5yb3BlLWxpZ2h0LnR0ZiJ9XSwiYmFja2dyb3VuZCI6IiMwMDAwMDAiLCJ0cmFja3MiOlt7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoicmljaC10ZXh0IiwidGV4dCI6Int7IEFERFJFU1MgfX0iLCJmb250Ijp7ImZhbWlseSI6Ik1hbnJvcGUgRXh0cmFCb2xkIiwic2l6ZSI6NDAsIndlaWdodCI6ODAwLCJjb2xvciI6IiNmMGMyMGMiLCJvcGFjaXR5IjoxfSwic3R5bGUiOnsibGV0dGVyU3BhY2luZyI6MCwid29yZFNwYWNpbmciOjAsImxpbmVIZWlnaHQiOjEuMiwidGV4dFRyYW5zZm9ybSI6Im5vbmUiLCJ0ZXh0RGVjb3JhdGlvbiI6Im5vbmUifSwiYWxpZ24iOnsiaG9yaXpvbnRhbCI6ImxlZnQiLCJ2ZXJ0aWNhbCI6ImJvdHRvbSJ9LCJhbmltYXRpb24iOnsicHJlc2V0IjoiZmFkZUluIiwic3R5bGUiOiJ3b3JkIn19LCJzdGFydCI6MS4yLCJsZW5ndGgiOjQuMiwib2Zmc2V0Ijp7IngiOi0wLjMsInkiOjAuMjV9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVSaWdodCIsIm91dCI6InNsaWRlTGVmdCJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIndpZHRoIjozMjAsImhlaWdodCI6MTE4fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJyaWNoLXRleHQiLCJ0ZXh0Ijoie3sgU1VCVVJCIH19LCB7eyBTVEFURSB9fSB7eyBQT1NUQ09ERSB9fSIsImZvbnQiOnsiZmFtaWx5IjoiTWFucm9wZSBMaWdodCIsInNpemUiOjIyLCJ3ZWlnaHQiOjMwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJ0b3AifX0sInN0YXJ0IjoxLjMsImxlbmd0aCI6My45LCJvZmZzZXQiOnsieCI6LTAuMywieSI6MC4xMDF9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVSaWdodCIsIm91dCI6InNsaWRlTGVmdCJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIndpZHRoIjozMjAsImhlaWdodCI6NTB9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJ7eyBUWVBFIH19IiwiZm9udCI6eyJmYW1pbHkiOiJNYW5yb3BlIEV4dHJhQm9sZCIsInNpemUiOjIyLCJ3ZWlnaHQiOjgwMCwiY29sb3IiOiIjZjBjMjBjIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sInN0YXJ0IjoxLjQsImxlbmd0aCI6NCwib2Zmc2V0Ijp7IngiOi0wLjMsInkiOi0wLjJ9LCJ0cmFuc2l0aW9uIjp7ImluIjoic2xpZGVSaWdodCIsIm91dCI6InNsaWRlTGVmdCJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIndpZHRoIjozMjAsImhlaWdodCI6NzV9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJIT1VTRSIsImZvbnQiOnsiZmFtaWx5IjoiTWFucm9wZSBMaWdodCIsInNpemUiOjE3LCJ3ZWlnaHQiOjMwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sInN0YXJ0IjoxLjQsImxlbmd0aCI6NCwib2Zmc2V0Ijp7IngiOi0wLjMsInkiOi0wLjA2fSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGUiLCJvdXQiOiJmYWRlIn0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwid2lkdGgiOjMyMCwiaGVpZ2h0IjozMn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlLzQ3YjE4OGU2LWQyMmUtNGRjMC05NjE0LTU2N2E2M2UxY2I2OC9iZWQucG5nIn0sInN0YXJ0IjoxLjQsImxlbmd0aCI6NCwiZml0Ijoibm9uZSIsIm9mZnNldCI6eyJ4IjotMC40NDEsInkiOjB9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSIsIm91dCI6ImZhZGUifSwic2NhbGUiOjF9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS8yNWQwNDcyYi00ZTNhLTQwNjYtOWRhMy0yMzBlYzE1ODcwMTcvYmF0aC5wbmcifSwic3RhcnQiOjEuNCwibGVuZ3RoIjo0LCJmaXQiOiJub25lIiwib2Zmc2V0Ijp7IngiOi0wLjM0OCwieSI6MH0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlIiwib3V0IjoiZmFkZSJ9LCJzY2FsZSI6MX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlLzcxYzc5ODcxLWNmNTktNDZiMC1hMjU1LTYwYmE2OTEwOGRlMS9jYXIucG5nIn0sInN0YXJ0IjoxLjQsImxlbmd0aCI6NCwiZml0Ijoibm9uZSIsIm9mZnNldCI6eyJ4IjotMC4yNSwieSI6MH0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlIiwib3V0IjoiZmFkZSJ9LCJzY2FsZSI6MX1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoicmljaC10ZXh0IiwidGV4dCI6Int7IEJFRFJPT01TIH19IiwiZm9udCI6eyJmYW1pbHkiOiJNYW5yb3BlIEV4dHJhQm9sZCIsInNpemUiOjE4LCJ3ZWlnaHQiOjgwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJsZWZ0IiwidmVydGljYWwiOiJtaWRkbGUifX0sInN0YXJ0IjoxLjQsImxlbmd0aCI6NCwib2Zmc2V0Ijp7IngiOi0wLjM5NSwieSI6MH0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlIiwib3V0IjoiZmFkZSJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIndpZHRoIjozNiwiaGVpZ2h0IjoyNn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoicmljaC10ZXh0IiwidGV4dCI6Int7IEJBVEhST09NUyB9fSIsImZvbnQiOnsiZmFtaWx5IjoiTWFucm9wZSBFeHRyYUJvbGQiLCJzaXplIjoxOCwid2VpZ2h0Ijo4MDAsImNvbG9yIjoiI2ZmZmZmZiIsIm9wYWNpdHkiOjF9LCJzdHlsZSI6eyJsZXR0ZXJTcGFjaW5nIjowLCJ3b3JkU3BhY2luZyI6MCwibGluZUhlaWdodCI6MS4yLCJ0ZXh0VHJhbnNmb3JtIjoibm9uZSIsInRleHREZWNvcmF0aW9uIjoibm9uZSJ9LCJhbGlnbiI6eyJob3Jpem9udGFsIjoibGVmdCIsInZlcnRpY2FsIjoibWlkZGxlIn19LCJzdGFydCI6MS40LCJsZW5ndGgiOjQsIm9mZnNldCI6eyJ5IjowLCJ4IjotMC4zfSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGUiLCJvdXQiOiJmYWRlIn0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwid2lkdGgiOjM2LCJoZWlnaHQiOjI2fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJyaWNoLXRleHQiLCJ0ZXh0Ijoie3sgQ0FSUE9SVFMgfX0iLCJmb250Ijp7ImZhbWlseSI6Ik1hbnJvcGUgRXh0cmFCb2xkIiwic2l6ZSI6MTgsIndlaWdodCI6ODAwLCJjb2xvciI6IiNmZmZmZmYiLCJvcGFjaXR5IjoxfSwic3R5bGUiOnsibGV0dGVyU3BhY2luZyI6MCwid29yZFNwYWNpbmciOjAsImxpbmVIZWlnaHQiOjEuMiwidGV4dFRyYW5zZm9ybSI6Im5vbmUiLCJ0ZXh0RGVjb3JhdGlvbiI6Im5vbmUifSwiYWxpZ24iOnsiaG9yaXpvbnRhbCI6ImxlZnQiLCJ2ZXJ0aWNhbCI6Im1pZGRsZSJ9fSwic3RhcnQiOjEuNCwibGVuZ3RoIjo0LCJvZmZzZXQiOnsieSI6MCwieCI6LTAuMn0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlIiwib3V0IjoiZmFkZSJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIndpZHRoIjozNiwiaGVpZ2h0IjoyNn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoibHVtYSIsInNyYyI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9yZWFsLWVzdGF0ZS1zbGlkZXNob3ctc2Qtb3ZlcmxheXMtbWVyZ2UvNDg0ZDZmZTUtNjNjYS00ZWFiLTgwMzYtMzc4NjU3ODJkZDA0L2NpcmNsZS5qcGcifSwic3RhcnQiOjMwLCJsZW5ndGgiOjZ9LHsiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoie3sgQUdFTlRfUElDVFVSRSB9fSJ9LCJzdGFydCI6MzAsImxlbmd0aCI6NiwiZml0IjoiY29udGFpbiIsInNjYWxlIjoxLCJvZmZzZXQiOnsieCI6MCwieSI6MC4yNjI1ODgyNzEzMzg3MTg0fSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGUifSwicG9zaXRpb24iOiJjZW50ZXIiLCJ3aWR0aCI6MTgwLCJoZWlnaHQiOjE4MH1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoicmljaC10ZXh0IiwidGV4dCI6Int7IEFHRU5UX05BTUUgfX0iLCJmb250Ijp7ImZhbWlseSI6Ik1hbnJvcGUgRXh0cmFCb2xkIiwic2l6ZSI6MjYsIndlaWdodCI6ODAwLCJjb2xvciI6IiNmMGMyMGMiLCJvcGFjaXR5IjoxfSwic3R5bGUiOnsibGV0dGVyU3BhY2luZyI6MCwid29yZFNwYWNpbmciOjAsImxpbmVIZWlnaHQiOjEuMiwidGV4dFRyYW5zZm9ybSI6Im5vbmUiLCJ0ZXh0RGVjb3JhdGlvbiI6Im5vbmUifSwiYWxpZ24iOnsiaG9yaXpvbnRhbCI6ImNlbnRlciIsInZlcnRpY2FsIjoibWlkZGxlIn19LCJzdGFydCI6MzAsImxlbmd0aCI6Niwib2Zmc2V0Ijp7IngiOjAsInkiOjAuMDN9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJmaXQiOiJub25lIiwic2NhbGUiOjEsIndpZHRoIjo2MDAsImhlaWdodCI6MzZ9XX0seyJjbGlwcyI6W3siYXNzZXQiOnsidHlwZSI6InJpY2gtdGV4dCIsInRleHQiOiJ7eyBBR0VOVF9FTUFJTCB9fSIsImZvbnQiOnsiZmFtaWx5IjoiTWFucm9wZSBMaWdodCIsInNpemUiOjE4LCJ3ZWlnaHQiOjMwMCwiY29sb3IiOiIjZmZmZmZmIiwib3BhY2l0eSI6MX0sInN0eWxlIjp7ImxldHRlclNwYWNpbmciOjAsIndvcmRTcGFjaW5nIjowLCJsaW5lSGVpZ2h0IjoxLjIsInRleHRUcmFuc2Zvcm0iOiJub25lIiwidGV4dERlY29yYXRpb24iOiJub25lIn0sImFsaWduIjp7Imhvcml6b250YWwiOiJjZW50ZXIiLCJ2ZXJ0aWNhbCI6Im1pZGRsZSJ9fSwic3RhcnQiOjMwLCJsZW5ndGgiOjYsIm9mZnNldCI6eyJ4IjowLCJ5IjotMC4yNH0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlIn0sImZpdCI6Im5vbmUiLCJzY2FsZSI6MSwid2lkdGgiOjYwMCwiaGVpZ2h0Ijo2NH1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJ7eyBBR0VOQ1lfTE9HTyB9fSJ9LCJzdGFydCI6MzAsImxlbmd0aCI6NiwiZml0IjoiY29udGFpbiIsInNjYWxlIjoxLCJvZmZzZXQiOnsieCI6MCwieSI6LTAuMTE1MDg3NDkxNjQ4MjcxODR9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJwb3NpdGlvbiI6ImNlbnRlciIsIndpZHRoIjoxMDksImhlaWdodCI6MTA5fV19LHsiY2xpcHMiOlt7ImFzc2V0Ijp7InR5cGUiOiJ2aWRlbyIsInNyYyI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9yZWFsLWVzdGF0ZS1zbGlkZXNob3ctc2Qtb3ZlcmxheXMtbWVyZ2UvcTF3NTJkazJtbHRqOWNseTMwOXVucWRmL3NvdXJjZV83ZDk0M2ZiZi53ZWJtIn0sInN0YXJ0IjowLCJwb3NpdGlvbiI6ImNlbnRlciIsInNjYWxlIjoxLCJsZW5ndGgiOjQuNTJ9LHsiYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS9xMXc1MmRrMm1sdGo5Y2x5MzA5dW5xZGYvc291cmNlXzQ4NWM1NzNlLndlYm0ifSwic3RhcnQiOjQuNTIsImxlbmd0aCI6NC41MiwicG9zaXRpb24iOiJjZW50ZXIiLCJzY2FsZSI6MX0seyJhc3NldCI6eyJ0eXBlIjoidmlkZW8iLCJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlL3ExdzUyZGsybWx0ajljbHkzMDl1bnFkZi9zb3VyY2VfYWVjZDZhMjYud2VibSJ9LCJsZW5ndGgiOjMsInN0YXJ0IjoxMC41Niwic2NhbGUiOjF9LHsiYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS9xMXc1MmRrMm1sdGo5Y2x5MzA5dW5xZGYvc291cmNlXzg1Yzg3NTg5LndlYm0ifSwic3RhcnQiOjE2LjU2LCJsZW5ndGgiOjN9LHsiYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS9xMXc1MmRrMm1sdGo5Y2x5MzA5dW5xZGYvc291cmNlXzM5OTFhODkyLndlYm0ifSwibGVuZ3RoIjozLCJzdGFydCI6MjIuNTZ9LHsiYXNzZXQiOnsidHlwZSI6InZpZGVvIiwic3JjIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS9xMXc1MmRrMm1sdGo5Y2x5MzA5dW5xZGYvc291cmNlX2ZiOTA0NGRmLndlYm0ifSwic3RhcnQiOjI5LCJsZW5ndGgiOjcsInBvc2l0aW9uIjoiY2VudGVyIn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJ7eyBJTUFHRV8xIH19In0sInN0YXJ0IjowLCJsZW5ndGgiOjYsImVmZmVjdCI6Inpvb21JblNsb3ciLCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZSJ9LCJwb3NpdGlvbiI6ImNlbnRlciIsInNjYWxlIjoxfSx7ImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Int7IElNQUdFXzIgfX0ifSwic3RhcnQiOjYsImxlbmd0aCI6NiwiZWZmZWN0Ijoic2xpZGVMZWZ0U2xvdyIsInBvc2l0aW9uIjoiY2VudGVyIiwic2NhbGUiOjF9LHsiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoie3sgSU1BR0VfMyB9fSJ9LCJzdGFydCI6MTIsImxlbmd0aCI6NiwiZWZmZWN0Ijoic2xpZGVSaWdodFNsb3ciLCJwb3NpdGlvbiI6ImNlbnRlciJ9LHsiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoie3sgSU1BR0VfNCB9fSJ9LCJzdGFydCI6MTgsImxlbmd0aCI6NiwiZWZmZWN0Ijoic2xpZGVVcFNsb3ciLCJwb3NpdGlvbiI6ImNlbnRlciJ9LHsiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoie3sgSU1BR0VfNSB9fSJ9LCJzdGFydCI6MjQsImxlbmd0aCI6NiwiZWZmZWN0Ijoic2xpZGVMZWZ0U2xvdyJ9LHsiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoie3sgSU1BR0VfMSB9fSJ9LCJzdGFydCI6MzAsImxlbmd0aCI6NiwiZWZmZWN0Ijoiem9vbUluU2xvdyIsInBvc2l0aW9uIjoiY2VudGVyIn1dfSx7ImNsaXBzIjpbeyJhc3NldCI6eyJ0eXBlIjoiYXVkaW8iLCJzcmMiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlLzI2MWRhNGNjLTU3YTgtNDc1Ny04OGQyLTMzZDUxZThmNDdiYy9zb3VyY2UubXAzIiwidm9sdW1lIjoxLCJlZmZlY3QiOiJmYWRlT3V0In0sInN0YXJ0IjowLCJsZW5ndGgiOjM2fV19XX0sIm91dHB1dCI6eyJmb3JtYXQiOiJtcDQiLCJmcHMiOjI1LCJzaXplIjp7IndpZHRoIjoxMDI0LCJoZWlnaHQiOjU3Nn0sImRlc3RpbmF0aW9ucyI6W3sicHJvdmlkZXIiOiJzaG90c3RhY2sifV19LCJtZXJnZSI6W3siZmluZCI6IkFERFJFU1MiLCJyZXBsYWNlIjoiMTkyIFNUT1JFWSBTVFJFRVQifSx7ImZpbmQiOiJTVUJVUkIiLCJyZXBsYWNlIjoiTUFST1VCUkEifSx7ImZpbmQiOiJTVEFURSIsInJlcGxhY2UiOiJOU1cifSx7ImZpbmQiOiJQT1NUQ09ERSIsInJlcGxhY2UiOiIyMDM1In0seyJmaW5kIjoiQkVEUk9PTVMiLCJyZXBsYWNlIjoiNCJ9LHsiZmluZCI6IkJBVEhST09NUyIsInJlcGxhY2UiOiIyIn0seyJmaW5kIjoiQ0FSUE9SVFMiLCJyZXBsYWNlIjoiMSJ9LHsiZmluZCI6IlRZUEUiLCJyZXBsYWNlIjoiQVVDVElPTiJ9LHsiZmluZCI6IklNQUdFXzEiLCJyZXBsYWNlIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS9hOTUzOWY5MS02Yzk2LTQ0N2ItYjE0OC1hMTY0ODhiZDAwNzQvcmVhbGVzdGF0ZTEuanBnIn0seyJmaW5kIjoiSU1BR0VfMiIsInJlcGxhY2UiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlLzkxMGU0MzBjLTJhZWMtNDVhNy1hOTBjLTY4ZWQ0MmRjNjJlMC9yZWFsZXN0YXRlMi5qcGcifSx7ImZpbmQiOiJJTUFHRV8zIiwicmVwbGFjZSI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9yZWFsLWVzdGF0ZS1zbGlkZXNob3ctc2Qtb3ZlcmxheXMtbWVyZ2UvNWJhZjQ5MmMtOTFjNi00ZmU2LTllN2QtYmFjYjg2ZmYzZWY5L3JlYWxlc3RhdGUzLmpwZyJ9LHsiZmluZCI6IklNQUdFXzQiLCJyZXBsYWNlIjoiaHR0cHM6Ly90ZW1wbGF0ZXMuc2hvdHN0YWNrLmlvL3JlYWwtZXN0YXRlLXNsaWRlc2hvdy1zZC1vdmVybGF5cy1tZXJnZS9hZDE2MmM3NS00ODk4LTQ5ODYtYjY1Mi0yZjE2N2VhMTdmMjMvcmVhbGVzdGF0ZTQuanBnIn0seyJmaW5kIjoiSU1BR0VfNSIsInJlcGxhY2UiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlLzZiYmRiZWJkLTJiNTgtNDQ4MS04YjczLWIzYjg3OWUwNThkMC9yZWFsZXN0YXRlNS5qcGcifSx7ImZpbmQiOiJBR0VOVF9QSUNUVVJFIiwicmVwbGFjZSI6Imh0dHBzOi8vdGVtcGxhdGVzLnNob3RzdGFjay5pby9yZWFsLWVzdGF0ZS1zbGlkZXNob3ctc2Qtb3ZlcmxheXMtbWVyZ2UvN2JmMGExYjctMjlkNi00ZjljLWI1YjMtYTJjOTM1MzBkNmE0L3JlYWwtZXN0YXRlLWFnZW50LW1hbGUuanBnIn0seyJmaW5kIjoiQUdFTlRfTkFNRSIsInJlcGxhY2UiOiJKRVJFTVkgU0lNUFNPTiJ9LHsiZmluZCI6IkFHRU5UX0VNQUlMIiwicmVwbGFjZSI6ImplcmVteUBibG9ja3JlYWxlc3RhdGUuY28ifSx7ImZpbmQiOiJBR0VOQ1lfTE9HTyIsInJlcGxhY2UiOiJodHRwczovL3RlbXBsYXRlcy5zaG90c3RhY2suaW8vcmVhbC1lc3RhdGUtc2xpZGVzaG93LXNkLW92ZXJsYXlzLW1lcmdlL2U1NTc4NGI1LTc4M2ItNDdjNi04ZGI3LTVlYTQwNDM4NjBmNC9yZWFsLWVzdGF0ZS13aGl0ZS5wbmcifV19 - **Edit and save to an account**: https://dashboard.shotstack.io/studio/editor/real-estate-slideshow-sd-overlays-merge-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 | | --- | --- | | `{{ ADDRESS }}` | 192 STOREY STREET | | `{{ SUBURB }}` | MAROUBRA | | `{{ STATE }}` | NSW | | `{{ POSTCODE }}` | 2035 | | `{{ BEDROOMS }}` | 4 | | `{{ BATHROOMS }}` | 2 | | `{{ CARPORTS }}` | 1 | | `{{ TYPE }}` | AUCTION | | `{{ IMAGE_1 }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/a9539f91-6c96-447b-b148-a16488bd0074/realestate1.jpg | | `{{ IMAGE_2 }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/910e430c-2aec-45a7-a90c-68ed42dc62e0/realestate2.jpg | | `{{ IMAGE_3 }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/5baf492c-91c6-4fe6-9e7d-bacb86ff3ef9/realestate3.jpg | | `{{ IMAGE_4 }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/ad162c75-4898-4986-b652-2f167ea17f23/realestate4.jpg | | `{{ IMAGE_5 }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/6bbdbebd-2b58-4481-8b73-b3b879e058d0/realestate5.jpg | | `{{ AGENT_PICTURE }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/7bf0a1b7-29d6-4f9c-b5b3-a2c93530d6a4/real-estate-agent-male.jpg | | `{{ AGENT_NAME }}` | JEREMY SIMPSON | | `{{ AGENT_EMAIL }}` | jeremy@blockrealestate.co | | `{{ AGENCY_LOGO }}` | https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/e55784b5-783b-47c6-8db7-5ea4043860f4/real-estate-white.png | ## Template JSON ```json { "timeline": { "fonts": [ { "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/45d624fe-ee4e-4f8c-853d-6db05f00cf6f/manrope-extrabold.ttf" }, { "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/ab7bb54f-5372-4740-b565-31ff811de4e7/manrope-light.ttf" } ], "background": "#000000", "tracks": [ { "clips": [ { "asset": { "type": "rich-text", "text": "{{ ADDRESS }}", "font": { "family": "Manrope ExtraBold", "size": 40, "weight": 800, "color": "#f0c20c", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "bottom" }, "animation": { "preset": "fadeIn", "style": "word" } }, "start": 1.2, "length": 4.2, "offset": { "x": -0.3, "y": 0.25 }, "transition": { "in": "slideRight", "out": "slideLeft" }, "fit": "none", "scale": 1, "width": 320, "height": 118 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ SUBURB }}, {{ STATE }} {{ POSTCODE }}", "font": { "family": "Manrope Light", "size": 22, "weight": 300, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "top" } }, "start": 1.3, "length": 3.9, "offset": { "x": -0.3, "y": 0.101 }, "transition": { "in": "slideRight", "out": "slideLeft" }, "fit": "none", "scale": 1, "width": 320, "height": 50 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ TYPE }}", "font": { "family": "Manrope ExtraBold", "size": 22, "weight": 800, "color": "#f0c20c", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "start": 1.4, "length": 4, "offset": { "x": -0.3, "y": -0.2 }, "transition": { "in": "slideRight", "out": "slideLeft" }, "fit": "none", "scale": 1, "width": 320, "height": 75 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "HOUSE", "font": { "family": "Manrope Light", "size": 17, "weight": 300, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "start": 1.4, "length": 4, "offset": { "x": -0.3, "y": -0.06 }, "transition": { "in": "fade", "out": "fade" }, "fit": "none", "scale": 1, "width": 320, "height": 32 } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/47b188e6-d22e-4dc0-9614-567a63e1cb68/bed.png" }, "start": 1.4, "length": 4, "fit": "none", "offset": { "x": -0.441, "y": 0 }, "transition": { "in": "fade", "out": "fade" }, "scale": 1 } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/25d0472b-4e3a-4066-9da3-230ec1587017/bath.png" }, "start": 1.4, "length": 4, "fit": "none", "offset": { "x": -0.348, "y": 0 }, "transition": { "in": "fade", "out": "fade" }, "scale": 1 } ] }, { "clips": [ { "asset": { "type": "image", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/71c79871-cf59-46b0-a255-60ba69108de1/car.png" }, "start": 1.4, "length": 4, "fit": "none", "offset": { "x": -0.25, "y": 0 }, "transition": { "in": "fade", "out": "fade" }, "scale": 1 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ BEDROOMS }}", "font": { "family": "Manrope ExtraBold", "size": 18, "weight": 800, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "start": 1.4, "length": 4, "offset": { "x": -0.395, "y": 0 }, "transition": { "in": "fade", "out": "fade" }, "fit": "none", "scale": 1, "width": 36, "height": 26 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ BATHROOMS }}", "font": { "family": "Manrope ExtraBold", "size": 18, "weight": 800, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "start": 1.4, "length": 4, "offset": { "y": 0, "x": -0.3 }, "transition": { "in": "fade", "out": "fade" }, "fit": "none", "scale": 1, "width": 36, "height": 26 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ CARPORTS }}", "font": { "family": "Manrope ExtraBold", "size": 18, "weight": 800, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "left", "vertical": "middle" } }, "start": 1.4, "length": 4, "offset": { "y": 0, "x": -0.2 }, "transition": { "in": "fade", "out": "fade" }, "fit": "none", "scale": 1, "width": 36, "height": 26 } ] }, { "clips": [ { "asset": { "type": "luma", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/484d6fe5-63ca-4eab-8036-37865782dd04/circle.jpg" }, "start": 30, "length": 6 }, { "asset": { "type": "image", "src": "{{ AGENT_PICTURE }}" }, "start": 30, "length": 6, "fit": "contain", "scale": 1, "offset": { "x": 0, "y": 0.2625882713387184 }, "transition": { "in": "fade" }, "position": "center", "width": 180, "height": 180 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ AGENT_NAME }}", "font": { "family": "Manrope ExtraBold", "size": 26, "weight": 800, "color": "#f0c20c", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "center", "vertical": "middle" } }, "start": 30, "length": 6, "offset": { "x": 0, "y": 0.03 }, "transition": { "in": "fade" }, "fit": "none", "scale": 1, "width": 600, "height": 36 } ] }, { "clips": [ { "asset": { "type": "rich-text", "text": "{{ AGENT_EMAIL }}", "font": { "family": "Manrope Light", "size": 18, "weight": 300, "color": "#ffffff", "opacity": 1 }, "style": { "letterSpacing": 0, "wordSpacing": 0, "lineHeight": 1.2, "textTransform": "none", "textDecoration": "none" }, "align": { "horizontal": "center", "vertical": "middle" } }, "start": 30, "length": 6, "offset": { "x": 0, "y": -0.24 }, "transition": { "in": "fade" }, "fit": "none", "scale": 1, "width": 600, "height": 64 } ] }, { "clips": [ { "asset": { "type": "image", "src": "{{ AGENCY_LOGO }}" }, "start": 30, "length": 6, "fit": "contain", "scale": 1, "offset": { "x": 0, "y": -0.11508749164827184 }, "transition": { "in": "fade" }, "position": "center", "width": 109, "height": 109 } ] }, { "clips": [ { "asset": { "type": "video", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/q1w52dk2mltj9cly309unqdf/source_7d943fbf.webm" }, "start": 0, "position": "center", "scale": 1, "length": 4.52 }, { "asset": { "type": "video", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/q1w52dk2mltj9cly309unqdf/source_485c573e.webm" }, "start": 4.52, "length": 4.52, "position": "center", "scale": 1 }, { "asset": { "type": "video", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/q1w52dk2mltj9cly309unqdf/source_aecd6a26.webm" }, "length": 3, "start": 10.56, "scale": 1 }, { "asset": { "type": "video", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/q1w52dk2mltj9cly309unqdf/source_85c87589.webm" }, "start": 16.56, "length": 3 }, { "asset": { "type": "video", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/q1w52dk2mltj9cly309unqdf/source_3991a892.webm" }, "length": 3, "start": 22.56 }, { "asset": { "type": "video", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/q1w52dk2mltj9cly309unqdf/source_fb9044df.webm" }, "start": 29, "length": 7, "position": "center" } ] }, { "clips": [ { "asset": { "type": "image", "src": "{{ IMAGE_1 }}" }, "start": 0, "length": 6, "effect": "zoomInSlow", "transition": { "in": "fade" }, "position": "center", "scale": 1 }, { "asset": { "type": "image", "src": "{{ IMAGE_2 }}" }, "start": 6, "length": 6, "effect": "slideLeftSlow", "position": "center", "scale": 1 }, { "asset": { "type": "image", "src": "{{ IMAGE_3 }}" }, "start": 12, "length": 6, "effect": "slideRightSlow", "position": "center" }, { "asset": { "type": "image", "src": "{{ IMAGE_4 }}" }, "start": 18, "length": 6, "effect": "slideUpSlow", "position": "center" }, { "asset": { "type": "image", "src": "{{ IMAGE_5 }}" }, "start": 24, "length": 6, "effect": "slideLeftSlow" }, { "asset": { "type": "image", "src": "{{ IMAGE_1 }}" }, "start": 30, "length": 6, "effect": "zoomInSlow", "position": "center" } ] }, { "clips": [ { "asset": { "type": "audio", "src": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/261da4cc-57a8-4757-88d2-33d51e8f47bc/source.mp3", "volume": 1, "effect": "fadeOut" }, "start": 0, "length": 36 } ] } ] }, "output": { "format": "mp4", "fps": 25, "size": { "width": 1024, "height": 576 }, "destinations": [ { "provider": "shotstack" } ] }, "merge": [ { "find": "ADDRESS", "replace": "192 STOREY STREET" }, { "find": "SUBURB", "replace": "MAROUBRA" }, { "find": "STATE", "replace": "NSW" }, { "find": "POSTCODE", "replace": "2035" }, { "find": "BEDROOMS", "replace": "4" }, { "find": "BATHROOMS", "replace": "2" }, { "find": "CARPORTS", "replace": "1" }, { "find": "TYPE", "replace": "AUCTION" }, { "find": "IMAGE_1", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/a9539f91-6c96-447b-b148-a16488bd0074/realestate1.jpg" }, { "find": "IMAGE_2", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/910e430c-2aec-45a7-a90c-68ed42dc62e0/realestate2.jpg" }, { "find": "IMAGE_3", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/5baf492c-91c6-4fe6-9e7d-bacb86ff3ef9/realestate3.jpg" }, { "find": "IMAGE_4", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/ad162c75-4898-4986-b652-2f167ea17f23/realestate4.jpg" }, { "find": "IMAGE_5", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/6bbdbebd-2b58-4481-8b73-b3b879e058d0/realestate5.jpg" }, { "find": "AGENT_PICTURE", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/7bf0a1b7-29d6-4f9c-b5b3-a2c93530d6a4/real-estate-agent-male.jpg" }, { "find": "AGENT_NAME", "replace": "JEREMY SIMPSON" }, { "find": "AGENT_EMAIL", "replace": "jeremy@blockrealestate.co" }, { "find": "AGENCY_LOGO", "replace": "https://templates.shotstack.io/real-estate-slideshow-sd-overlays-merge/e55784b5-783b-47c6-8db7-5ea4043860f4/real-estate-white.png" } ] } ``` ## 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