Wan2.7 Image-to-Video
POST /api/v1/services/aigc/video-generation/video-synthesis — Wan2.7 image-to-video (first frame / first+last / continuation)
The Wan 2.7 image-to-video model accepts multimodal input and covers three jobs: first-frame animation, first+last-frame animation, and video continuation.
Models
| Model | Notes |
|---|---|
wan2.7-i2v | Wan 2.7 image-to-video |
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": "wan2.7-i2v",
"input": {
"prompt": "A cat rises from the grass and walks toward the sunlight",
"media": [{ "type": "first_frame", "url": "https://example.com/cat.png" }]
},
"parameters": { "resolution": "720P", "duration": 5 }
}'Request body
| Field | Type | Notes |
|---|---|---|
model | string (required) | wan2.7-i2v |
input.prompt | string (optional) | ≤5000 characters. Can be omitted when the media speaks for itself |
input.negative_prompt | string (optional) | ≤500 characters (in input, not parameters) |
input.media | array (required) | Asset list; combination rules below |
parameters | object (optional) | Below |
Media combinations (the six legal sets; anything else is refused)
| Job | media |
|---|---|
| First frame | first_frame |
| First frame + audio | first_frame + driving_audio |
| First + last frame | first_frame + last_frame |
| First + last + audio | first_frame + last_frame + driving_audio |
| Continuation | first_clip |
| Continuation + last frame | first_clip + last_frame |
Each type may appear at most once. Asset limits: images JPEG/JPG/PNG/BMP/WEBP, sides [240, 8000]px, ≤20MB; driving audio wav/mp3, 2–30 s, ≤15MB; first clip mp4/mov, 2–10 s, ≤100MB.
parameters
| Parameter | Type | Notes |
|---|---|---|
resolution | string | 720P / 1080P (default). Sellable tiers follow the price configuration. Output aspect ratio follows the input assets |
duration | integer | [2, 15], default 5. For continuations this caps the total output duration (a 3 s input + duration 15 → 15 s of output, billed as 15 s) |
prompt_extend | boolean | Default true |
watermark | boolean | Default false |
seed | integer | [0, 2147483647] |
Image-to-video has no ratio parameter — the output aspect ratio follows the input assets; sending one is an InvalidParameter error.
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; continuations by total output 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.