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

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.