Build the scene in the editor
Arrange media, text, captions, charts, transitions, and keyframes in a visual editor before you ever write an export script.
Send editor JSON, validate the payload, create export tasks, and turn product data or internal events into video output without rebuilding scenes by hand.
Node.js and Python SDKs available. Validation endpoint available. Webhook verification supported.
{
"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"
}Data to video for developers means treating video export like any other structured output in your product. Build the template once, send JSON, and let the export layer handle rendering.
Best for
Backend teams generating video from CRM, catalog, or event data
Product engineers embedding export workflows into internal tools
Full stack teams shipping customer facing video features
Automation builders who need validation, polling, and webhook delivery
Use the editor when you want visual control. Export editor JSON when you want repeatable code driven rendering.
Arrange media, text, captions, charts, transitions, and keyframes in a visual editor before you ever write an export script.
Take the same scene structure as JSON so your backend can swap row data, asset URLs, and output specs later.
Keep one template under version control while product events, queue workers, or automation tools trigger new exports.
The export payload is not limited to text. The same editor JSON can control layout, captions, chart animation, and output format.
Text, shapes, media, transitions, effects, keyframes, timing, and layout stay in the JSON scene definition.
Add subtitles, timing, and caption styling, then keep them in the same export request instead of a sidecar step.
Fill chart values, labels, and dynamic copy from incoming data without rewriting the video structure.
Set format, fps, scale, ratio, custom pixel dimensions, and export types such as MP4 or WebM with alpha.
Pick the runtime that matches your stack, validate the payload, and move from editor JSON to a finished export.
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)Trigger export jobs from queues, schedulers, CRM sync jobs, and reporting pipelines that already manage your structured data.
Let users request recap, summary, or personalized video exports from actions they already perform in your product.
Start with webhooks, Make, or Zapier for orchestration, then move core export logic into your own services when needed.
Start on the free tier, then check the pricing page for current export and credit details before launch.
Use idempotency keys for safe retries when your job runner or gateway may replay requests.
Treat outputUrl as temporary delivery, not long term storage, and copy the file to your own bucket promptly.
Retry 429 and 5xx responses with backoff. Fix validation errors before retrying create.
Use editor.validate and client side SDK validation to catch payload issues before exports hit the queue.
Plan around the documented active export concurrency limit for each user when you batch jobs.
Use the Indream docs, typed SDKs, and editor JSON export path to move from proof of concept to production without rebuilding templates every time.
Go deeper on editor JSON, code authored payloads, and SDK examples.
Focus on chart animation, transparent overlay exports, and presentation video.
Review the batch spreadsheet path for campaign teams and localized creative.