Scale & automation
Every user's year, rendered from their data.
Build one recap template, bind it to each user's numbers, and let Zvid render personalized wrapped and milestone videos for every user — triggered on an event, delivered by webhook as a hosted URL.
Use case
Wrapped-style videos your product makes for every user
Design the recap once as a JSON template, then feed it each user's stats. Up to 200 {{placeholders}} — nested 8 levels deep and type-preserving — carry names, totals, streaks and rankings straight into the scenes, while iterate expands one scene per item in a list (top tracks, biggest months, milestones hit) with auto-chaining transitions and an auto index. Conditional scenes drop in or hide based on the data, so a power user and a first-timer get videos built from the same template but shaped to their year.
Because Zvid is API-first, this runs inside your product with no manual step. An event fires — end of year, a milestone crossed, a subscription anniversary — your backend POSTs the template id plus that user's variables with an API key, and gets back a job id and reserved credits. Renders run async on FFmpeg for frame-accurate, reproducible output; when each one lands, an HMAC-signed render.completed webhook delivers the hosted cdn.zvid.io URL so you can notify the user and let them share it.
What you get
Personalized video from each user's data
Bind the user's numbers
Up to 200 type-preserving {{placeholders}}, nested 8 levels deep, drop each user's names, totals and streaks straight into one shared recap template.
One scene per stat
iterate expands a scene per array item — top tracks, biggest months, badges earned — with an auto index and auto-chaining transitions, so a variable-length list becomes a variable-length video.
Shape it to each user
The condition field shows or hides scenes and elements per user, so a first-timer and a power user get different videos from the same template.
Trigger, then walk away
POST the template id plus variables with your API key on any in-app event; you get a job id and reserved credits back, and the render runs async.
Webhook when it's ready
An HMAC-SHA256-signed render.completed event delivers the hosted cdn.zvid.io URL with 5 retries and exponential backoff, so you can notify and share the moment it lands.
Whole cohorts at once
Send up to 500 renders in a single bulk call with one batch id; valid items queue and any bad rows come back in itemErrors by index for fix-and-resubmit.
200
Variables per template
500
Renders per bulk call
FFmpeg
Frame-accurate engine
1,200 free
Credits to start
Under the hood
The features that make it work
JSON Video API
Render a finished, hosted video from one authenticated POST. Send an inline JSON project or a template id and get back a job you can poll or get pinged about.
Templates, Variables & Logic
Save a project once, render it with different data forever. Placeholders, conditional scenes, and array iteration resolve server-side before validation.
Webhooks
Skip the polling loop. Zvid calls your endpoint the moment a render completes or fails, with every delivery HMAC-signed so you can verify it came from us.
Image Rendering
Generate still images — thumbnails, banners, OG cards — from the same JSON that renders video. PNG, JPG, or WebP, with transparency, at 10 images per credit.
Who it's for
Teams that build this with Zvid
Product & engineering teams
Ship personalized video and images as a product feature. Store a template once, POST variables per user, and deliver a hosted cdn.zvid.io URL back to your app — rendered async on FFmpeg, no browser farm to run.
Explore →Developers
Make rendering an HTTP call. One authenticated POST returns a 202 with a job id, and a per-request webhook pings you when your hosted cdn.zvid.io URL is ready — no polling, no headless browser.
Explore →Growth & performance marketers
Spin up dozens of ad-creative variants from one JSON template and a variables map. Bulk up to 500 renders per call, each returned as a hosted cdn.zvid.io URL ready for the ad network.
Explore →Related use cases
More for teams like yours
Personalized video at scale
One video per lead, customer, or account — your rows merged into a template and rendered at scale. POST up to 500 renders in a single call, each pulling {{variables}} from one row, and get back hosted cdn.zvid.io URLs.
Explore →Data-driven & report videos
Turn a metrics feed into per-account report videos. Bind your numbers to a template, fan it out with one bulk call, and get back hosted MP4s or images — rendered by FFmpeg, so every figure lands frame-accurate.
Explore →AI-generated video
Let an AI agent author the JSON project through the MCP server, then Zvid renders it deterministically with FFmpeg. No diffusion, no generated pixels — reproducible, frame-accurate output your brand can trust.
Explore →FAQ
Frequently asked questions
Can each user get a different video from one template? +
Yes. One JSON template plus per-user variables produces a distinct render each time. iterate makes the length track the data, and the condition field hides or shows scenes, so every user's recap is shaped to their own numbers.
How does my app know when a user's video is finished? +
Renders run async and Zvid sends an HMAC-SHA256-signed render.completed webhook carrying the hosted cdn.zvid.io URL. It retries 5 times with exponential backoff, and render.failed fires on failure so you can handle both paths.
Can I generate a matching share image alongside the video? +
Yes. Zvid has dedicated image endpoints — 10 images to 1 credit, resolution-independent — or you can snapshot a frame of the video with snapshotTime to produce a PNG, JPG or WebP thumbnail for the share card.
Explore more: see every use cases
Ready to ship video at scale?
Start free — your first render is only a JSON payload away.