# Video generation

`POST /v1/videos/generations` returns HTTP 202 and a task. The public model ID is `kling-3.0`; live availability requires a configured and certified route.

```json
{"model":"kling-3.0","prompt":"A slow camera movement around a ceramic cup","duration":5,"aspect_ratio":"16:9"}
```

Send an `Idempotency-Key` for each logical submission. Store `task_id` and poll `/v1/tasks/{task_id}`. Successful results include video URL, media type, and final billing. Do not promise cancellation or a supplier progress percentage unless the provider actually supports it. Exact progress is omitted without reliable evidence.

A quoted duration is a pricing input, not a guarantee of exact generated duration. Before launch each route must document how it bills output duration and parameter combinations. No automatic cross-model fallback is assumed.

[Tasks](/docs?page=tasks&lang=en) · [Billing](/docs?page=billing&lang=en)

Normalized top-level parameters are `duration`, `aspect_ratio`, and optional `image`. The current schema accepts 5/10 seconds and 16:9, 9:16 or 1:1; check model availability before calling. There is no `resolution` or nested `parameters` field in this draft request.

Successful responses return the original generated-media URL unchanged. The original host controls availability, expiry and browser cross-origin behavior. Save results before expiry; querying a completed task returns the saved URL and does not renew it. Request metadata and result URLs may be retained for recovery; generated-media bytes are never retained.
