Wan 3.0
Wan 3.0 is Alibaba's video model. It writes a video with sound from a text prompt, animates a first frame (and can end on a last frame), or keeps the characters, places, style and voice of reference images, clips and audio. Clips run 2 to 30 seconds, or the model picks the length.
| Mode | Endpoint id | Model page |
|---|---|---|
| Text to video | flymyai/wan-3_0-t2v | https://app.flymy.ai/models/flymyai/wan-3_0-t2v |
| Image to video | flymyai/wan-3_0-i2v | https://app.flymy.ai/models/flymyai/wan-3_0-i2v |
| Reference to video | flymyai/wan-3_0-ref2v | https://app.flymy.ai/models/flymyai/wan-3_0-ref2v |
Generate a video
Making a video takes a minute or more, so use the async route: submit, then poll the result. Inputs are form fields.
curl -X POST https://api.flymy.ai/api/v1/flymyai/wan-3_0-t2v/predict/async/ \
-H "X-API-KEY: fly-***" \
-F 'prompt=A red fox runs through fresh snow at dawn, low tracking shot' \
-F 'resolution=720P' -F 'duration=10' -F 'ratio=16:9'
# {"prediction_id": "02ecd473..."}
curl "https://api.flymy.ai/api/v1/flymyai/wan-3_0-t2v/predict/async/result/?request_id=02ecd473..." \
-H "X-API-KEY: fly-***"
The result route answers 425 while the video is being made. When it is
ready, it returns:
{
"inference_responses": [
{
"response": {
"video": [{"url": "https://storage.googleapis.com/...", "content_type": "video/mp4"}],
"calculated_price": "1.000000"
},
"infer_details": {"status": 200, "inference_time": 103.1, "request_id": "02ecd473-..."}
}
]
}
url is a signed link valid for 24 hours; download the file to keep it.
calculated_price is what the run cost. The synchronous /predict route works
too, but it returns the video inline as base64, so prefer async for anything
but short clips.
Image to video
Give the first frame, and optionally the last one, as a file upload or a public image URL (JPEG, PNG, BMP or WEBP, up to 20 MB):
curl -X POST https://api.flymy.ai/api/v1/flymyai/wan-3_0-i2v/predict/async/ \
-H "X-API-KEY: fly-***" \
-F 'prompt=The cat slowly turns its head toward the camera and blinks' \
-F 'first_frame_image=@cat.jpg' -F 'resolution=720P' -F 'duration=5'
ratio defaults to adaptive, which keeps the shape of your image.
Reference to video
Pass references as public URLs, one URL or a JSON array per field, and say in the prompt who and what they are and how to use them:
| Field | Limits |
|---|---|
reference_images | Up to 10 images (JPEG, PNG, BMP, WEBP) |
reference_videos | Up to 5 clips (mp4, mov), 1-15 s each, 15 s in total |
reference_audios | Up to 5 clips (wav, mp3), 1-15 s each, 15 s in total |
curl -X POST https://api.flymy.ai/api/v1/flymyai/wan-3_0-ref2v/predict/async/ \
-H "X-API-KEY: fly-***" \
-F 'prompt=The woman from the photo walks through a night market and waves' \
-F 'reference_images=["https://example.com/woman.jpg"]' \
-F 'resolution=720P' -F 'duration=8'
At least one reference is required; reference to video takes no first or last frame.
Parameters
| Parameter | Values |
|---|---|
prompt | What happens in the video, up to 20,000 characters |
resolution | 480P, 720P (default) or 1080P |
ratio | adaptive (when omitted), 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 |
duration | 2 to 30 seconds (5 when omitted); -1 lets the model choose the length |
audio | true (default) adds sound, false makes a silent video |
prompt_extend | true (default) lets the model expand the prompt |
watermark | false (default) or true |
seed | 0 to 2147483647, for repeatable takes |
Invalid values are refused before the video is started, so they cost nothing.
From an AI assistant
An assistant connected to FlyMy.AI finds the three models with
recommend_model, quotes them with get_pricing and makes the video with
run_model (the same input as the REST fields). The result is a link to the
video file.
Pricing
| Resolution | Price per generated second |
|---|---|
| 480P | $0.05 |
| 720P | $0.10 |
| 1080P | $0.20 |
You pay for the seconds Wan 3.0 generates; a run that fails costs nothing. A
run with the defaults (720P, 5 seconds) costs $0.50, a 10-second 720P clip
$1.00. Before a run starts, a request whose top price
is more than your balance is refused with 403 Insufficient funds; with
duration: -1 the top price counts 30 seconds. Every charge is in your
usage.