Scale & automation
One video per customer, 500 per call.
Merge your rows into a template, POST up to 500 renders at once, and let per-item billing, a single batch id, and webhooks track the run — no video edited by hand.
Personalization
One template, one row of data, one video each
You author one JSON template with {{placeholder}} substitution — up to 200 variables, nested up to 8 levels, type-preserving — then POST a bulk array of up to 500 renders, one item per lead, customer, or account. Every placeholder resolves server-side before validation, so each row produces its own frame-accurate video, rendered by FFmpeg and returned as a hosted cdn.zvid.io URL.
Batches run best-effort, so one bad row never blocks the set: valid items queue and bill per item, while invalid ones come back in itemErrors by index for you to fix and resubmit. A single batch id rolls up status, render.completed and render.failed webhooks fire the moment each output is ready, and the dashboard gives you fix-and-resubmit plus CSV export for the whole run.
What you get
Built for one-per-customer output
500 per call
Submit up to 500 renders in a single bulk request — one video per lead or account — with per-plan caps of 5, 50, 200, and 500.
Merge your data
Bind up to 200 {{variables}} per template, nested up to 8 levels and type-preserving, so each row's name, offer, or metric lands in its own video.
Best-effort batches
Valid items queue and bill individually while invalid rows return in itemErrors by index, so one malformed record never blocks the rest of the run.
Notified on completion
HMAC-SHA256-signed render.completed and render.failed webhooks fire per item, with 5 retries and exponential backoff so your pipeline knows when each video is ready.
Hosted CDN output
Every finished render comes back as an absolute cdn.zvid.io URL — no storage to wire up before you drop the link into an email or CRM.
Fix and resubmit
A single batch id rolls up status across the run, and the dashboard adds fix-and-resubmit plus CSV export to reconcile every personalized render.
500
Renders per call
200
Variables per template
1 credit / s
At or below Full HD
8 levels
Nested variables
Under the hood
The features that make it work
Bulk Rendering
Fan one template out into up to 500 renders in a single call. Each item is validated and billed on its own, so one bad payload never sinks the batch.
Templates, Variables & Logic
Save a project once, render it with different data forever. Placeholders, conditional scenes, and array iteration resolve server-side before validation.
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.
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.
Who it's for
Teams that build this with Zvid
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 →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 →Sales teams
Send one warm, tailored video per account — name, logo, and use-case swapped from a template — triggered straight from your CRM and returned as a hosted cdn.zvid.io URL you can drop into any email or deal room.
Explore →Related use cases
More for teams like yours
Ad creative at scale
Turn one JSON template into dozens of performance-ad variants — video and static image, every aspect ratio. Bulk up to 500 renders per call, driven by type-preserving variables.
Explore →Localized & multilingual video
Author one master project, then localize it with variables, iterated language arrays, and per-language subtitles — and bulk render the whole set in a single authenticated call.
Explore →In-app personalized & recap video
Turn each user's data into their own recap video. Trigger a render on an event, bind the numbers to variables, and get a webhook the moment their finished, hosted clip is ready to share.
Explore →FAQ
Frequently asked questions
How do I generate one video per customer? +
Author a template with {{placeholder}} variables, then POST a bulk array where each item supplies one row's values. Zvid resolves every placeholder server-side and renders one video per item, returning a hosted cdn.zvid.io URL for each.
What happens if some rows in my batch are invalid? +
Bulk runs are best-effort: valid items queue and bill per item, while invalid ones come back in itemErrors keyed by index. One bad row never blocks the batch, and you can fix and resubmit from the dashboard.
How am I notified when a large run finishes? +
Point a webhook at your endpoint to receive render.completed and render.failed events, HMAC-SHA256 signed, with 5 retries and exponential backoff. A single batch id also rolls up status for the whole run.
Explore more: see every use cases
Ready to ship video at scale?
Start free — your first render is only a JSON payload away.