Declarative documents
Describe scenes, elements, timing and animation in JSON. The renderer turns the description into frames — your code never touches video.
POST /v1/renders
One POST creates a render. Validated by a strict schema with exact JSON-path errors, delivered by webhook when the MP4 is ready.
Describe scenes, elements, timing and animation in JSON. The renderer turns the description into frames — your code never touches video.
Every request is validated against a versioned schema. Failures return the offending JSON path and an error code with its own docs page.
Get a signed webhook on completion instead of polling. Verify it with one helper call. (Paid plans.)
Send an Idempotency-Key and retries never create duplicate renders — safe to call from queues and cron jobs.
A generated TypeScript client with the exact request and response types the API serves. Or use plain curl — it's just JSON over HTTPS.
Upload images, video and audio through the API and reference them by URL in any document.
curl -X POST https://api.automotion.dev/v1/renders \
-H "Authorization: Bearer am_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"movie": {
"schema": "v1",
"preset": "9:16",
"scenes": [
{
"id": "intro",
"duration": "voice",
"background": "#09090b",
"elements": [
{
"id": "headline",
"type": "text",
"text": "Ship videos from code",
"font": "Space Grotesk",
"fontSize": 96,
"fontWeight": 700,
"position": "center",
"animation": {
"preset": "slide-in-up"
}
},
{
"id": "voiceover",
"type": "voice",
"text": "Automotion turns a JSON document into a finished video.",
"voiceId": "Joanna",
"language": "en-US"
},
{
"id": "captions",
"type": "subtitles"
}
]
}
]
}
}'