Endpoint
/v1/generationsBearer key · generations:writeSend JSON with Content-Type: application/json. Idempotency-Key is optional in the schema and strongly recommended for every logical generation.
Request shape
{
"model": "wan-3.0",
"mode": "text_to_video",
"variant": "standard",
"parameters": {
"resolution": "720p",
"duration_seconds": 5,
"ratio": "16:9",
"audio": true,
"prompt_extend": false,
"watermark": false
},
"input": {
"prompt": "A paper boat crosses a rain puddle, macro lens"
}
}| Field | Contract |
|---|---|
| model | Required. Use an id returned by GET /v1/models |
| mode | Required. Must be listed in the selected model's operations |
| variant | Required. Must be listed in the selected model's variants |
| parameters | Required object; individual fields have defaults |
| input | Strict mode-specific object |
Create response
Success returns HTTP 202. The response contains the generation ID, queued status, mode, variant, creation time, and the maximum amount temporarily reserved from the balance.
{
"id": "1b90f2e6-8898-45c3-9c4a-6f4ba6af25cb",
"status": "queued",
"model": "wan-3.0",
"mode": "text_to_video",
"variant": "standard",
"price": {
"amount": "<calculated_amount>",
"currency": "USD"
},
"billing": {
"currency": "USD",
"status": "reserved",
"reserved_amount": "<calculated_amount>",
"charged_amount": null
},
"created_at": "2026-09-01T12:00:00.000Z"
}billing makes the money state explicit. On create, status is reserved, reserved_amount is the maximum hold, and charged_amount is null. The legacy price object remains for compatible clients.
Validation
Unknown fields and invalid mode combinations return 400 invalid_request before funds are reserved. After surrounding whitespace is removed, prompt must contain 1–20,000 characters. video_edit and video_extend require ratio: adaptive.