Video generation
Async-only: video gen takes 10–60s wall-clock, longer than any sync HTTP timeout we'd hold open. Returns 202 with a job id; poll GET /v1/jobs/:id or supply a webhook for terminal delivery.
Endpoint
POST https://api.genie.tech/v1/videos/generations
Authorization: Bearer sk-genie-{your-key}
Content-Type: application/jsonTry it
Try it nowVideo kickoff (async)
Sign in to tryPOST /api/v1/videos/generations
SDK + curl
# Submit
curl https://api.genie.tech/v1/videos/generations \
-H "Authorization: Bearer $GENIE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan-2.2",
"prompt": "a tiny cat dancing in the rain",
"duration_seconds": 2,
"size": "512x512"
}'
# Poll
curl https://api.genie.tech/v1/jobs/$JOB_ID \
-H "Authorization: Bearer $GENIE_API_KEY"Request body
model:wan-2.2|ltx-video|ltx-2.3.prompt: required. 1–2000 chars.duration_seconds: 1–15.size: 1:1512x512720x7201024x1024· 16:9832x4801280x7201920x1080· 9:16480x832720x12801080x1920· 4:51024x1280· 5:41280x1024. Non-multiple-of-32 dimensions snap down at render; the kickoff echoes the effectivesize+size_adjusted.seed,negative_prompt: optional.webhook:{ url, secret? }; called when the job finishes.
Directable motion (ltx-2.3)
ltx-2.3 is the 22B model tuned for directable camera work: name the move in the prompt (push in, orbit left, crane up, rack focus) and the shot follows the instruction. wan-2.2 trades that control for ambient drift, so reach for ltx-2.3 when the clip needs a specific camera path rather than incidental motion.
{
"model": "ltx-2.3",
"prompt": "slow dolly push toward a lighthouse at dusk, camera glides forward",
"duration_seconds": 5,
"size": "1280x720"
}Kickoff response
{
"id": "vidgen-cmoz...",
"object": "video.generation",
"status": "queued",
"polling_url": "/v1/jobs/cmoz...",
"created": 1731020000
}Completed response (poll)
{
"id": "vidgen-cmoz...",
"status": "completed",
"result": {
"url": "https://blob.genie.tech/.../video.mp4",
"duration_ms": 12450
}
}Webhook delivery. When you supply
webhook.url + webhook.secret, Genie POSTs the completed-job body to that URL with X-Genie-Signature: sha256={hex} over the body. See Webhooks.