Faceless shorts at scale
Generate vertical videos with AI voiceover and word-timed subtitles from scripts — hundreds a day, no editor in the loop.
POST /v1/renders
Describe scenes, text, voiceover and subtitles in one declarative document. POST it to the API and get back a rendered MP4. No timelines to click through, nothing hidden from your code.
300 free trial credits included. No credit card required.
{
"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"
}
]
}
]
}Ship videos from code
movie.schema.json
The reference is built from the same strict schema the API runs on every request. Every field, default and error code in the docs is the one you will actually hit — the docs cannot drift, because they are the schema.
Rejections point at the field: scenes[2].elements[0].src, with a link to that error's doc page.
Unknown keys are rejected, defaults are documented, and the JSON Schema export powers editor autocomplete.
Every document declares its schema version, so a render that works today still works next year.
editor.sync
The visual editor and the document are two views of the same state. Click an element on the canvas and its JSON path lights up; edit the JSON and the preview updates. What you ship to the API is exactly what you saw — no lossy export step.
Canvas, timeline and JSON stay in lockstep — selection works in both directions.
The editor state is the request body. Copy it out, template it, or commit it to git.
Scrub the timeline and preview the exact frames the renderer will produce.
movie.variables
Generate vertical videos with AI voiceover and word-timed subtitles from scripts — hundreds a day, no editor in the loop.
One template, a row of data per customer. Swap names, prices and images through typed variables and render personalized videos on demand.
Turn product photos, listings or reports into clean animated slideshows with transitions and music — straight from your backend.
quickstart
This is the same quickstart as the docs — the document below is validated against the real schema in our test suite.
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"
}
]
}
]
}
}'import { Automotion } from "@automotion/sdk";
const client = new Automotion({ apiKey: process.env.AUTOMOTION_API_KEY });
const render = await client.renders.create({ movie });
// → { id: "rnd_…", status: "queued" } — poll or receive a webhook,
// then download the finished MP4 from render.url.Sign up, grab an API key, and POST your first document. Your 300 trial credits need no credit card.