Quick start
One call to a rendered video, and the full campaign lifecycle for batch work.
One call: POST /renders
Send a recording, the word to replace, and up to 100 recipients — no campaign, no template, nothing to hold between calls:
bash
POST /renders
{
"video": "https://your-cdn.com/base-recording.mp4",
"placeholderWord": "there",
"recipients": [
{ "firstName": "Sarah", "url": "https://acme.com" }
]
}
# -> 202 { "data": { "batchId": "...", "renders": [{ "id": "...", "status": "queued" }] } }
# Renders take 1-5 minutes. Register a webhook for render.completed / render.failed /
# render.degraded, or poll:
GET /renders?batch_id={batchId}Campaign lifecycle
The campaign lifecycle below still exists for the dashboard-style batch workflow (draft → assets → recipients → ready → launch). For agents, automations, and anything drip-shaped, POST /renders is the path.
bash
# 1. Create a campaign
POST /campaigns
{ "name": "Q2 Outbound", "pipLayout": "bottom-right" }
# 2. Upload base video (multipart/form-data)
POST /campaigns/:id/assets
Content-Type: multipart/form-data
Body: file=@base-video.mp4
# 3. Add recipients
POST /campaigns/:id/recipients
[
{ "firstName": "Sarah", "company": "Acme", "url": "https://acme.com" },
{ "firstName": "Mike", "company": "Globex", "url": "https://globex.com" }
]
# 4. Mark campaign ready (no body — do NOT send Content-Type)
POST /campaigns/:id/ready
# 5. Start rendering (no body)
POST /campaigns/:id/launch
# 6. Poll or use webhooks to check status
GET /recipients/:id