AI video API: three models, one endpoint, and the async part that matters
·
Three video models behind one endpoint and one billing unit.
| Model | Credits per clip | Duration | Resolution |
|---|---|---|---|
| Seedance | 25 | 3–15s | 720p, 1080p |
| Kling | 35 | 5 or 10s | 1080p |
| Veo 3 | 100 | 8s fixed | 720p, 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 }
Observe accepted jobs with long polling or authenticated SSE. The scheduled backstop is internal; creation does not accept a customer webhook URL. Which to use depends on what is calling you — webhook vs polling.
A later job failure can appear in a successful status response. Check
state as well as HTTP status; a creation error itself may be non-2xx.
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.
Continue with api fundamentals
Models covered on this page
Where these facts come from
- codebase: src/ai/api/wrap.ts
- codebase: src/ai/providers/*.ts — every pricing() and paramsSchema
- codebase: src/ai/api/quota.ts — per-tier ceilings