Engineering & product
Personalized video, shipped as a feature.
Store one template, POST per-user variables, and hand your product a hosted video or image URL. Rendered async on FFmpeg, signed back to your webhook, safe to retry.
For builders
Make video a shippable feature, not a project
Your product already has the data for a wrapped, a milestone recap, or an in-app share card. Zvid turns that data into media: store a template with up to 200 {{placeholders}} nested up to 8 levels, POST the variables for one user, and get back a 202 with a job id and reserved credits. Everything resolves server-side before validation, so a malformed payload fails fast instead of burning a render.
Rendering is asynchronous by design. Zvid runs FFmpeg — not a headless browser — so output is frame-accurate and reproducible, and the finished file is hosted and returned as an absolute cdn.zvid.io URL. Subscribe to render.completed and render.failed webhooks, verify the HMAC-SHA256 signature, and drop the URL straight into an email, a push, or an in-app share sheet.
What you get
What ships to production
Template plus variables
Store a project once and personalize per user with {{placeholder}} substitution — up to 200 type-preserving variables, nested up to 8 levels, all resolved server-side.
Async by webhook
POST returns a job id immediately; render.completed and render.failed fire an HMAC-SHA256 signed webhook so your product reacts to the hosted URL without polling.
Hosted output URL
Every render comes back as an absolute cdn.zvid.io URL you can embed in an email, share card, or app view — no storage or CDN of your own to wire up.
Safe retries
Idempotency keys make retries safe, and webhook delivery runs 5 retries with exponential backoff before an endpoint auto-disables after 20 consecutive failures.
Fan out in one call
Generate a whole cohort's recaps with bulk render — up to 500 items per call, best-effort per-item validation returning invalid rows in itemErrors by index under one batch id.
Images on the same API
Render in-app share cards and OG images from the same templates at 10 images per credit, resolution-independent, as PNG/JPG/WebP with transparency on PNG and WebP.
500
Renders per call
200
Template variables
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.
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.
Hosting & Delivery
Every render is hosted for you on a global CDN and returned as a ready-to-use URL, with an automatic thumbnail and poster — no storage to wire up.
Put it to work
Popular use cases for this team
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 →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 →Explainer & demo videos
Build a product explainer once on the multi-track timeline, then turn it into a template your changelog and feature-launch videos render from on every release.
Explore →More roles
More for teams like yours
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 →No-code & automation builders
Wire Zvid into your automations with no backend. Trigger renders from a spreadsheet, CRM, or form via n8n or Make, get pinged on completion, and fan out with a single bulk call.
Explore →AI engineers & agent builders
Your agent authors the JSON; Zvid renders it deterministically with FFmpeg — video or images, never text-to-video. The MCP server ships 30 tools plus a free pre-flight validator, so you catch errors before a credit is spent.
Explore →FAQ
Frequently asked questions
How do we authenticate this from our backend? +
Use an API key (zvid_...) for server-to-server calls; the dashboard and editor use JWT or cookie auth. Idempotency keys make retried requests safe.
How do we get the finished file into our product? +
Renders are async. Subscribe to the render.completed webhook — HMAC-SHA256 signed over timestamp and body — and read the hosted cdn.zvid.io URL from the payload. You can also set a per-request webhookUrl.
Can one endpoint handle both video and images? +
Yes. The same authenticated API renders video (mp4/mov/avi/webm, 1-60 fps) and images (PNG/JPG/WebP, 10 per credit) from the same templates, so share cards and recap videos share one integration.
Explore more: see every roles
Ready to ship video at scale?
Start free — your first render is only a JSON payload away.