Wan3.0 Video
POST /api/v1/services/aigc/video-generation/video-synthesis — all-in-one reference video (text / image / reference / file to video)
Wan 3.0 is an all-in-one reference video model: text-to-video, image-to-video (first frame / first+last), reference-to-video, and file/web-page-to-video in one model. Up to 30 seconds at 30 fps.
Models
| Model | Notes |
|---|---|
wan3.0-video | Standard |
wan3.0-video-prime | Fast tier — same capabilities, markedly faster end-to-end |
Create a job
/api/v1/services/aigc/video-generation/video-synthesiscurl https://api.modelsite.ai/api/v1/services/aigc/video-generation/video-synthesis \
-H "Authorization: Bearer $MODELSITE_API_KEY" -H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"input": { "prompt": "Aerial shot of a sunrise over snow mountains above a sea of clouds" },
"parameters": { "resolution": "1080P", "ratio": "adaptive", "duration": -1 }
}'Request body
| Field | Type | Notes |
|---|---|---|
model | string (required) | wan3.0-video or wan3.0-video-prime |
input.prompt | string | ≤20000 characters. Required together with media (at least one of the two). Refer to media entries as "Figure 1", "Video 1", "Audio 1" (images and videos count separately) |
input.media | array | Asset array, below |
parameters | object (optional) | Below |
media entry types
| type | Cap | Purpose |
|---|---|---|
first_frame / last_frame | 1 each | Hard frame constraints. Mutually exclusive with every reference/file/link type below |
reference_image | ≤10 | Reference images |
reference_video | ≤5 (≤15 s total) | Reference videos |
reference_audio | ≤5 (≤15 s total) | Reference audio |
file | 1 | Document (pdf/docx/pptx/…, ≤100MB, ≤50 pages). Either file or link, not both |
link | 1 | Public web page. Either file or link, not both |
parameters
| Parameter | Type | Notes |
|---|---|---|
resolution | string | 480P / 720P / 1080P (default). Sellable tiers follow the price configuration |
ratio | string | adaptive (default) / 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
duration | integer | [2, 30]; -1 selects auto duration (the model decides); with video input, input + output ≤30 s |
audio | boolean | Include an audio track, default true; the rate is the same either way |
seed | integer | [0, 2147483647] |
prompt_extend | boolean | Default true. Must stay true when file / link media is passed — an explicit false is refused |
watermark | boolean | Default false |
Polling and result
/api/v1/tasks/{task_id}curl "https://api.modelsite.ai/api/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $MODELSITE_API_KEY"Response fields
| Field | Meaning |
|---|---|
output.task_id | Job ID (same value returned at creation) |
output.task_status | PENDING queued / RUNNING processing / SUCCEEDED done / FAILED failed |
output.video_url | The generated video URL — only on SUCCEEDED; download promptly |
output.code / output.message | Present only on failure, with the reason |
usage | Usage stats (duration, resolution tier, …); counted only on success |
request_id | Unique request ID — include it when reporting issues |
Status flow: PENDING → RUNNING → SUCCEEDED / FAILED.
Billing
Billed by actual generated seconds; with duration: -1 the model decides, and billing follows the poll's usage.duration; failed jobs are not billed. Rates on the Models page.
Error handling
Creation-time errors return {"code": "...", "message": "..."}; mid-job failures surface through the poll's output.code / output.message. General error codes: Errors.