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

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.