← All films & create
Open video ↗
Open video
What do you want to see?
Quick guide
Describe what you want. Start simple.
- Rooftop — rain and neon.
- Parking garage — dark and quiet.
- Vecindad — a creepy courtyard.
Want more control? Switch to Scene JSON.
Your video gets a link and shows up below.
Full guide & examples ↗At least 3 characters. 0 / 5000 characters
Set the cast, camera and scene directly. JSON skips the prompt step. Scene JSON guide ↗
Scene limits
Up to 6 characters, 4 props and 16 camera keyframes. Up to 6 captions, each with 2 lines of 40 characters.
Use JSON through the API
Send your scene object as {"scene": {...}}
to POST /api/jobs.
New videos: 5–30 seconds.
Start with a prompt or scene JSON.
Latest videos
La Vecindad
Made from scene JSON
A tour of the vecindad. Characters, lights and camera moves, defined in JSON.
Inspect scene JSON
{
"template": "vecindad",
"duration_s": 30,
"frame": {
"w": 480,
"h": 200,
"pixel": 1,
"out_scale": 4,
"text_scale": 1.5
},
"fade_in": 1.5,
"fade_out": 2.5,
"env": {
"fog": [
0.02,
0.03,
0.06,
0.06
],
"caption_pad": 8
},
"lights": [
{
"pos": [
-200,
-140,
70
],
"light": 200,
"color": [
0.4,
1,
0.3
]
}
],
"actors": [
{
"id": "chavo",
"model": "chavo",
"pos": [
-250,
-170,
24
],
"yaw": 45,
"anims": [
{
"t": 0,
"clip": "in_barrel"
}
]
},
{
"id": "ramon",
"model": "ramon",
"pos": [
-296,
-150,
24
],
"anims": [
{
"t": 0,
"clip": "idle"
},
{
"t": 9,
"clip": "head_tilt",
"loop": false
}
]
},
{
"id": "florinda",
"model": "florinda",
"pos": [
296,
80,
24
],
"yaw": 180,
"anims": [
{
"t": 0,
"clip": "idle"
},
{
"t": 13,
"clip": "head_tilt",
"loop": false
}
]
},
{
"id": "chili",
"model": "chilindrina",
"pos": [
-120,
120,
24
],
"anims": [
{
"t": 0,
"clip": "walk"
},
{
"t": 20,
"clip": "head_tilt",
"loop": false
}
],
"path": [
{
"t": 0,
"pos": [
-120,
120,
24
],
"yaw": 0
},
{
"t": 20,
"pos": [
140,
-40,
24
],
"yaw": -30,
"ease": true
}
]
},
{
"id": "popis",
"model": "popis",
"pos": [
-298,
90,
94
],
"anims": [
{
"t": 0,
"clip": "idle"
},
{
"t": 17,
"clip": "head_tilt",
"loop": false
}
]
},
{
"id": "kiko",
"model": "kiko",
"pos": [
200,
-90,
24
],
"yaw": 180,
"anims": [
{
"t": 0,
"clip": "idle"
},
{
"t": 22,
"clip": "head_tilt",
"loop": false
}
]
}
],
"props": [
{
"id": "barrel",
"model": "barrel",
"pos": [
-250,
-170,
24
]
}
],
"fx": [],
"camera": {
"keys": [
{
"t": 0,
"pos": [
0,
-205,
180
],
"look_at": [
0,
60,
20
],
"fov": 90
},
{
"t": 6,
"pos": [
60,
-150,
120
],
"look_at": [
-200,
-60,
30
],
"fov": 80,
"ease": true
},
{
"t": 6.01,
"pos": [
-190,
-120,
50
],
"look_at": [
-250,
-170,
30
],
"fov": 55,
"cut": true,
"sway": 1
},
{
"t": 9,
"pos": [
-200,
-110,
50
],
"look_at": [
-280,
-150,
50
],
"fov": 50,
"sway": 1
},
{
"t": 12,
"pos": [
-210,
-120,
54
],
"look_at": [
-296,
-150,
58
],
"fov": 40,
"sway": 1
},
{
"t": 12.01,
"pos": [
220,
90,
60
],
"look_at": [
296,
80,
60
],
"fov": 45,
"cut": true,
"sway": 1
},
{
"t": 16,
"pos": [
230,
70,
64
],
"look_at": [
296,
80,
64
],
"fov": 38,
"sway": 1
},
{
"t": 16.01,
"pos": [
-200,
40,
130
],
"look_at": [
-298,
90,
120
],
"fov": 50,
"cut": true,
"sway": 1
},
{
"t": 20,
"pos": [
-150,
0,
100
],
"look_at": [
0,
0,
0
],
"fov": 60,
"track": "chili",
"sway": 1
},
{
"t": 20.01,
"pos": [
140,
-60,
50
],
"look_at": [
200,
-90,
50
],
"fov": 45,
"cut": true,
"sway": 1
},
{
"t": 25,
"pos": [
150,
-70,
52
],
"look_at": [
200,
-90,
52
],
"fov": 36,
"sway": 1
},
{
"t": 25.01,
"pos": [
0,
-200,
200
],
"look_at": [
0,
40,
0
],
"fov": 95,
"cut": true
},
{
"t": 30,
"pos": [
0,
-180,
230
],
"look_at": [
0,
40,
0
],
"fov": 95,
"ease": true
}
]
},
"text": [
{
"t": 2,
"duration": 3.5,
"msg": "LA VECINDAD"
},
{
"t": 26,
"duration": 3,
"msg": "FUE SIN QUERER QUERIENDO"
}
],
"score": {
"flashes": [],
"booms": [],
"time_scale": 0.39473684210526316
}
}