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.1",
"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.1|ltx-video.prompt— required. 1–4000 chars.duration_seconds— 1–15.size— e.g.512x512,1280x720.seed,negative_prompt— optional.webhook—{ url, secret? }; called when the job finishes.
Kickoff response
{
"id": "vidgen-cmoz...",
"object": "video.generation.async",
"status": "queued",
"poll_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.