ModelSite
Video GenerationWan

Wan2.7 Text-to-Video

POST /api/v1/services/aigc/video-generation/video-synthesis — Wan2.7 text-to-video

The Wan 2.7 text-to-video model generates a fluid video from a text prompt, with multi-shot storytelling driven straight from the prompt (describe your shots with timestamps).

Models

ModelNotes
wan2.7-t2vWan 2.7 text-to-video

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": "wan2.7-t2v",
    "input": {
      "prompt": "A rainy New York street at night, neon reflections, a detective in a black trench coat walking briskly, cinematic"
    },
    "parameters": {
      "resolution": "720P",
      "ratio": "16:9",
      "duration": 5
    }
  }'

Request body

FieldTypeNotes
modelstring (required)wan2.7-t2v
input.promptstring (required)≤5000 characters. Multi-shot storytelling is plain prompt text (e.g. "Shot 1 [0-3s] wide: …")
input.negative_promptstring (optional)≤500 characters. Lives in input in the Wan dialect — not in parameters
input.audio_urlstring (optional)Audio file URL (wav/mp3, 2–30 s, ≤15MB); the model uses it as the soundtrack and trims to duration when longer
parametersobject (optional)Below

parameters

ParameterTypeNotes
resolutionstring720P / 1080P (default). Sellable tiers follow the price configuration
ratiostring16:9 (default) / 9:16 / 1:1 / 4:3 / 3:4
durationinteger[2, 15], default 5
prompt_extendbooleanPrompt rewriting, default true
watermarkboolean"AI-generated" stamp, default false
seedinteger[0, 2147483647]

Wan2.7 dropped the older size and shot_type fields — output geometry is expressed by resolution + ratio, and shot types are described in the prompt.

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; the resolution tier affects the rate; 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