Genie
Documentation

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/json

Try 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

  • modelwan-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.