Batch Rendering
Batch rendering takes one registered template and an array of variable sets, then produces one video per set. This is how you generate personalized outreach, catalog ads, localized variants, or weekly report videos at scale.
The Batch Endpoint
curl -X POST https://api.ws.video/api/render/batch \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-org-id: YOUR_ORG_ID" \
-d '{
"template": "product-launch",
"overrides": { "mood": "confident" },
"batch": [
{
"headline": "Apex Launch",
"tagline": "Productivity reimagined",
"feature1": "Fast",
"feature2": "Smart",
"feature3": "Secure",
"cta": "Try free"
},
{
"headline": "Bolt Launch",
"tagline": "Speed matters",
"feature1": "Quick",
"feature2": "Easy",
"feature3": "Reliable",
"cta": "Get started"
}
]
}'
{
"batchId": "batch-abc123",
"total": 2,
"jobs": [
{ "jobId": "job-001", "status": "queued" },
{ "jobId": "job-002", "status": "queued" }
]
}
Each item in the batch array becomes a separate render job. All jobs share the same template, mood, and theme — only the variables differ.
Polling Batch Status
Monitor the entire batch with a single call:
curl https://api.ws.video/api/batch/batch-abc123 \
-H "x-api-key: YOUR_API_KEY" \
-H "x-org-id: YOUR_ORG_ID"
{
"batchId": "batch-abc123",
"total": 2,
"completed": 1,
"failed": 0,
"jobs": [
{ "jobId": "job-001", "status": "complete" },
{ "jobId": "job-002", "status": "rendering" }
]
}
Individual videos are downloaded using the same GET /api/video/:jobId endpoint as single renders.
Per-Item Overrides
Each batch item can override the theme, allowing you to produce the same content under different brand identities:
{
"template": "social-promo",
"batch": [
{ "headline": "Summer Sale", "theme": "brand-a" },
{ "headline": "Summer Sale", "theme": "brand-b" }
]
}
Use Cases
Personalized outreach — merge a contact list with a template. Each prospect gets a video with their company name, logo, and relevant metrics.
Catalog advertising — feed product data (name, price, image) into a template. One template covers the entire catalog.
Localized variants — same message in different languages. Workshop's timing engine adjusts hold durations per language automatically.
Weekly reports — plug updated KPIs into a dashboard template every Monday. Same structure, fresh data.
Queue and Concurrency
Batch jobs enter the same render queue as individual jobs. Rendering uses a maximum of 2 concurrent jobs by default. Large batches process sequentially within the queue.
Next Steps
- Templates and Reuse — defining and registering templates
- Batch API — endpoint details and response schema
- Tempo and Timing — how Workshop adjusts timing per language