[{"data":1,"prerenderedAt":295},["ShallowReactive",2],{"\u002Fdocs\u002Fgenerate-video-templates":3},{"id":4,"title":5,"body":6,"category":284,"date":285,"description":286,"extension":287,"heroImage":288,"meta":289,"navigation":290,"path":291,"readingMinutes":204,"seo":292,"stem":293,"tool":284,"__hash__":294},"docs\u002Fdocs\u002Fgenerate-video-templates.md","Generate video templates",{"type":7,"value":8,"toc":277},"minimark",[9,14,18,40,43,47,56,109,116,120,131,220,233,237,262,266,273],[10,11,13],"h2",{"id":12},"what-a-video-template-is","What a video template is",[15,16,17],"p",{},"A video template is a reusable design that becomes a different video every time you feed it new data. In Bluepic it is not a special object: it is a normal, reactive template with two things added.",[19,20,21,34],"ol",{},[22,23,24,28,29,33],"li",{},[25,26,27],"strong",{},"An animation."," A duration and a frame rate, and one or more properties that change over a ",[30,31,32],"code",{},"TIME"," clock.",[22,35,36,39],{},[25,37,38],{},"Connected input fields."," The parts you want to vary per render (a headline, a photo, a price) exposed as fields your data fills.",[15,41,42],{},"Because the template is reactive, its properties are expressions, not fixed values. That is what lets one template produce a thousand on-brand clips: change the data, get a fresh video, with the layout re-fitting itself so long or translated text never clips.",[10,44,46],{"id":45},"how-to-create-one","How to create one",[15,48,49,50,55],{},"You build a video template visually in ",[51,52,54],"a",{"href":53},"\u002Fdocs\u002Fbuilding-templates-in-bluepic-studio","Bluepic Studio",". The short version:",[19,57,58,64,82,93,99],{},[22,59,60,63],{},[25,61,62],{},"Design the layout"," and connect the fields you want to fill from data (text, images).",[22,65,66,69,70,73,74,77,78,81],{},[25,67,68],{},"Set a video format"," (",[30,71,72],{},"mp4",") in Project Settings, then set a ",[25,75,76],{},"Duration"," and ",[25,79,80],{},"FPS",". That turns the design into a video template.",[22,83,84,87,88,92],{},[25,85,86],{},"Animate a property."," Click the ",[89,90,91],"em",{},"Animate a property"," button, click a numeric property (position, size, rotation, opacity), and Studio freezes its current value as the first keyframe.",[22,94,95,98],{},[25,96,97],{},"Keyframe it on the timeline."," Move the playhead, change the value, and add keyframes with linear or eased interpolation.",[22,100,101,104,105,108],{},[25,102,103],{},"Preview"," by scrubbing, then ",[25,106,107],{},"publish",".",[15,110,111,112,108],{},"For the full walkthrough with screenshots of each step, follow ",[51,113,115],{"href":114},"\u002Fdocs\u002Fhow-to-video-templates","how to build a video template in Studio",[10,117,119],{"id":118},"how-to-drive-it","How to drive it",[15,121,122,123,126,127,130],{},"Once published, a video template is rendered from your code by its ",[30,124,125],{},"templateId",", with the fields supplied as ",[30,128,129],{},"data",":",[132,133,138],"pre",{"className":134,"code":135,"language":136,"meta":137,"style":137},"language-bash shiki shiki-themes github-dark","curl -N -X POST \"https:\u002F\u002Fapi.bluepic.io\u002Fapi\u002Frender\" \\\n  -H \"Authorization: \u003Cyour API key>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"templateId\": \"\u003Cyour template id>\",\n    \"data\": { \"headline\": \"Launch day\", \"photo\": { \"src\": \"https:\u002F\u002F…\u002Fimg.jpg\" } },\n    \"format\": \"mp4\"\n  }'\n","bash","",[30,139,140,166,177,187,196,202,208,214],{"__ignoreMap":137},[141,142,145,149,153,156,160,163],"span",{"class":143,"line":144},"line",1,[141,146,148],{"class":147},"svObZ","curl",[141,150,152],{"class":151},"sDLfK"," -N",[141,154,155],{"class":151}," -X",[141,157,159],{"class":158},"sU2Wk"," POST",[141,161,162],{"class":158}," \"https:\u002F\u002Fapi.bluepic.io\u002Fapi\u002Frender\"",[141,164,165],{"class":151}," \\\n",[141,167,169,172,175],{"class":143,"line":168},2,[141,170,171],{"class":151},"  -H",[141,173,174],{"class":158}," \"Authorization: \u003Cyour API key>\"",[141,176,165],{"class":151},[141,178,180,182,185],{"class":143,"line":179},3,[141,181,171],{"class":151},[141,183,184],{"class":158}," \"Content-Type: application\u002Fjson\"",[141,186,165],{"class":151},[141,188,190,193],{"class":143,"line":189},4,[141,191,192],{"class":151},"  -d",[141,194,195],{"class":158}," '{\n",[141,197,199],{"class":143,"line":198},5,[141,200,201],{"class":158},"    \"templateId\": \"\u003Cyour template id>\",\n",[141,203,205],{"class":143,"line":204},6,[141,206,207],{"class":158},"    \"data\": { \"headline\": \"Launch day\", \"photo\": { \"src\": \"https:\u002F\u002F…\u002Fimg.jpg\" } },\n",[141,209,211],{"class":143,"line":210},7,[141,212,213],{"class":158},"    \"format\": \"mp4\"\n",[141,215,217],{"class":143,"line":216},8,[141,218,219],{"class":158},"  }'\n",[15,221,222,223,227,228,232],{},"The response streams progress and ends with a hosted MP4 URL. See ",[51,224,226],{"href":225},"\u002Fdocs\u002Fgenerate-video-via-api","generate video via API"," for the response shape, and ",[51,229,231],{"href":230},"\u002Fdocs\u002Fbatch-animate-videos","batch animate videos"," to render one per row of data.",[10,234,236],{"id":235},"why-templates-not-one-off-edits","Why templates, not one-off edits",[238,239,240,246,252],"ul",{},[22,241,242,245],{},[25,243,244],{},"One design, every variation."," A single template covers every recipient, product, or language. You maintain one thing, not a folder of exported clips.",[22,247,248,251],{},[25,249,250],{},"On-brand by construction."," The layout, fonts, and colours are fixed in the template; only the data changes, so nothing drifts off-brand.",[22,253,254,257,258,108],{},[25,255,256],{},"Stills and video from the same source."," The same template renders a PNG or an MP4 by switching the format, so your static and motion assets always match. See ",[51,259,261],{"href":260},"\u002Fdocs\u002Fone-template-two-outputs","one template, two outputs",[10,263,265],{"id":264},"what-a-video-template-is-not","What a video template is not",[15,267,268,269,108],{},"It is not a video editor. A Bluepic video template animates a designed layout; it does not cut, trim, or stitch footage. If your job is assembling clips on a timeline, a timeline-editing tool fits better. See the ",[51,270,272],{"href":271},"\u002Fcompare\u002Fvideo-generation-apis","honest comparison of video-generation APIs",[274,275,276],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":137,"searchDepth":168,"depth":168,"links":278},[279,280,281,282,283],{"id":12,"depth":168,"text":13},{"id":45,"depth":168,"text":46},{"id":118,"depth":168,"text":119},{"id":235,"depth":168,"text":236},{"id":264,"depth":168,"text":265},"platform","2026-07-26","What a video template is and how to create one you can drive from data. Design a reactive layout in Studio, animate its properties over a TIME clock, connect input fields, then render a personalized MP4 per data row over the API.","md","\u002Fdocs-images\u002Fgenerate-video-templates.svg",{},true,"\u002Fdocs\u002Fgenerate-video-templates",{"title":5,"description":286},"docs\u002Fgenerate-video-templates","dOPBX-VBKf2uKaHWSt90qJuxEnvZ7l1riLk6afZVK80",1785414150322]