Genace

AI video API: three models, one endpoint, and the async part that matters

Three video models behind one endpoint and one billing unit.

ModelCredits per clipDurationResolution
Seedance253–15s720p, 1080p
Kling355 or 10s1080p
Veo 31008s fixed720p, 1080p

The call returns a job

This is the part that differs from an image API and from most REST APIs you have used. A render takes minutes, so the endpoint returns 202 Accepted with a job_id and a state — not a video.

{ "job_id": "abc123", "state": "queued", "credits_held": 25 }

Four ways to collect the result, each surviving a different failure: long poll, SSE, webhook, and a scheduled backstop for jobs nobody is watching. Which to use depends on what is calling you — webhook vs polling.

A failed job is a successful HTTP response. It will not throw. Check state, not the status code.

Duration decides more pipelines than price

Only some of these bill per second; the rest round you up to a fixed bucket. Asking for 7 seconds from a model that offers 5 or 10 means paying for 10, which can exceed the gap between per-second rates entirely.

Details in AI video API duration limits.

Cheapest path

Seedance at 25 credits ($0.25–$0.35), and half that again at 720p while you iterate. Work it out at your own volume with the AI API cost comparison tool.

Models covered on this page

Where these facts come from

  • codebase: src/ai/providers/*.ts — every pricing() and paramsSchema
  • codebase: src/ai/api/quota.ts — per-tier ceilings