ModelSite
Video GenerationWan

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

ModelNotes
wan3.0-videoStandard
wan3.0-video-primeFast tier — same capabilities, markedly faster end-to-end

Create a job

POST/api/v1/services/aigc/video-generation/video-synthesis
curl 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

FieldTypeNotes
modelstring (required)wan3.0-video or wan3.0-video-prime
input.promptstring≤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.mediaarrayAsset array, below
parametersobject (optional)Below

media entry types

typeCapPurpose
first_frame / last_frame1 eachHard frame constraints. Mutually exclusive with every reference/file/link type below
reference_image≤10Reference images
reference_video≤5 (≤15 s total)Reference videos
reference_audio≤5 (≤15 s total)Reference audio
file1Document (pdf/docx/pptx/…, ≤100MB, ≤50 pages). Either file or link, not both
link1Public web page. Either file or link, not both

parameters

ParameterTypeNotes
resolutionstring480P / 720P / 1080P (default). Sellable tiers follow the price configuration
ratiostringadaptive (default) / 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16
durationinteger[2, 30]; -1 selects auto duration (the model decides); with video input, input + output ≤30 s
audiobooleanInclude an audio track, default true; the rate is the same either way
seedinteger[0, 2147483647]
prompt_extendbooleanDefault true. Must stay true when file / link media is passed — an explicit false is refused
watermarkbooleanDefault false

Polling and result

GET/api/v1/tasks/{task_id}
curl "https://api.modelsite.ai/api/v1/tasks/$TASK_ID" \
  -H "Authorization: Bearer $MODELSITE_API_KEY"

Response fields

FieldMeaning
output.task_idJob ID (same value returned at creation)
output.task_statusPENDING queued / RUNNING processing / SUCCEEDED done / FAILED failed
output.video_urlThe generated video URL — only on SUCCEEDED; download promptly
output.code / output.messagePresent only on failure, with the reason
usageUsage stats (duration, resolution tier, …); counted only on success
request_idUnique 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.

On this page