JSON to Video

Render video from JSON

Use editor JSON to define scenes, layers, text, charts, and export specs, then turn that JSON to video through the public API or typed SDKs.

Editor JSON available. Node.js client available. Python client available.

{ "editorState": { "timebaseTicksPerSecond": 240000, "compositionWidth": 1920, "compositionHeight": 1080, "outputRatio": "16:9", "globalBackground": { "type": "none" }, "brandRuntime": { "brandId": null, "logoX": 50, "logoY": 50, "managedItemIds": [], "managedAssetIds": [], "introShiftInFrames": 0, "overlayTrackId": null, "underlayTrackId": null }, "tracks": [ { "id": "qVAV", "items": [ "nSrW" ], "hidden": false, "muted": false } ], "assets": {}, "items": { "nSrW": { "id": "nSrW", "type": "text", "text": "Hello World", "color": "#ffffff", "top": 492, "left": 755, "width": 411, "height": 96, "align": "center", "opacity": 1, "rotation": 0, "fontFamily": "Roboto", "fontSize": 80, "lineHeight": 1.2, "letterSpacing": 0, "resizeOnEdit": true, "direction": "ltr", "fontStyle": { "variant": "normal", "weight": "400" }, "isDraggingInTimeline": false, "strokeWidth": 0, "strokeColor": "#000000", "background": null, "startTicks": 0, "durationTicks": 384000 } }, "transitions": {}, "deletedAssets": [] }, "fps": 30, "ratio": "16:9", "scale": 1, "format": "mp4" }
What it is

Video structure as application data

JSON to video means the video structure itself becomes data. Scenes, timing, assets, captions, and export settings can all live in a payload your app controls.

Best for

Teams exporting templates from a visual editor and reusing them in code

Developers authoring or patching payloads inside backend jobs

Products that need video output as a repeatable API response

Workflows that need validation before long running export tasks start

Two ways teams use JSON to video

Design in the editor, export JSON later

This path works best when non developers need to build the base scene. Once the layout is approved, export editor JSON and wire it into code.

Author JSON directly in code

This path works best when your template logic already lives in a service and the team wants the export payload to stay close to the application code.

What JSON can control

Scene structure

Tracks, timing, transforms, transitions, and layout all live inside the same editor JSON document.

Text and captions

Headlines, subtitle timing, on screen copy, and style choices can all be encoded in the payload.

Assets and chart data

Swap asset URLs, values, labels, colors, and supporting content without rebuilding the surrounding scene.

Export behavior

Ratio, scale, fps, format, and custom output dimensions are all part of the export request.

Code examples

Create JSON to video exports in three ways

Choose the runtime that fits your team, then send the same editor JSON through a direct export flow.

import { IndreamClient } from '@indreamai/client' const client = new IndreamClient({ apiKey: process.env.INDREAM_API_KEY!, baseURL: 'https://api.indream.ai', timeout: 60_000, maxRetries: 2, }) await client.editor.validate(editorState) const created = await client.exports.create({ editorState, ratio: '9:16', scale: 0.6, fps: 30, format: 'mp4', }) const done = await client.exports.wait(created.taskId, { timeoutMs: 10 * 60 * 1000, pollIntervalMs: 2_000, }) console.log(done.status, done.outputUrl)
Use the video editor API in three steps
Start from exported editor JSON or a versioned template, validate the payload, then create an export and fetch the finished file once the task completes.
Build editor JSON and validate it
Prepare the editorState from the visual editor or your own code, then run validation first so scene, layer, and export issues fail before the job enters the queue.
Create the export task
Send the validated payload with ratio, scale, fps, and format settings to create a render task that matches the output your product or workflow needs.
Check the export and download the result
Poll, wait, or handle webhook delivery until the task finishes, then save the temporary output URL to your own storage for long term delivery.
Integration and pricing

How teams ship JSON to video without overbuilding

Start with editor exported JSON if the scene is still changing often.

Move to code authored JSON once the template shape is stable and versioned.

Use the pricing page for current credit and export details instead of hard coding assumptions.

Pair validation with webhook delivery so failed payloads never reach long running jobs.

Reuse the same JSON across one off exports and larger programmatic batches.

Keep docs, SDK examples, and the exported template side by side during rollout.

FAQ

FAQ for JSON to video

Ready to move from JSON to video output?

Start with the docs, validate your editor JSON, and wire export create into the stack you already run for jobs and assets.

Related pages

Need more than JSON alone?

Data to video for developers

See the broader API workflow, delivery model, and production considerations.

Chart to video exports

Focus on chart animation, transparent overlays, and report ready outputs.

Marketing batch rendering

See how the same export system maps spreadsheet data into campaign video volume.