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.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:1 512x512 720x720 1024x1024 · 16:9 832x480 1280x720 1920x1080 · 9:16 480x832 720x1280 1080x1920 · 4:5 1024x1280 · 5:4 1280x1024. Non-multiple-of-32 dimensions snap down at render; the kickoff echoes the effective size + 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.