Create video
Last updated September 6, 2026
Submit a video task in Alibaba Model Studio's own shape. DashScope clients only need a new base_url.
This endpoint is compatible with Alibaba Model Studio's (DashScope) video synthesis
API. If you already have DashScope code, point base_url at Amux; the request and
response shapes are the ones your client already speaks.
https://gateway.amux.ai/api/v1/services/aigc/video-generation/video-synthesisAuthorization
headerAuthorizationstringRequiredBearer <your Amux key> An Amux key created in the console. If you lose it, you can view it again on the keys page.
Request
application/jsonmodelstringRequiredAmux model ID. Four models live on this endpoint today:
| Model | Notes |
|---|---|
alibaba/wan3.0-video | Wan 3.0, all-in-one |
alibaba/wan3.0-video-prime | Wan 3.0, faster tier |
alibaba/happyhorse-1.1 | HappyHorse 1.1 |
alibaba/happyhorse-1.0 | HappyHorse 1.0 |
HappyHorse also accepts three capability aliases
(-t2v / -i2v / -r2v); see its model page.
inputobjectRequiredProvide prompt, media, or both. A first-frame image without
a prompt is a valid request; do not submit an empty string to
satisfy the field.
›inputobject
promptstringA description of what to generate. Chinese and English are
supported; anything beyond the limit is truncated upstream
rather than rejected.
⚠️ The limit differs per model (Wan 20,000 characters,
HappyHorse 5,000 non-Chinese / 2,500 Chinese), and so does the
syntax for referring to input media (Wan "图1", HappyHorse
[Image 1]). See the individual model pages.
mediaarray<object>Input material, each item identified by its type. **Only
publicly reachable https URLs are accepted**; this path does
not support file uploads.
›mediaarray<object>
type"first_frame" | "last_frame" | "reference_image" | "reference_video" | "reference_audio" | "file" | "link"RequiredWhat this item is used for.
⚠️ **This is everything the endpoint can express; no
single model accepts all of it**: Wan takes all seven,
HappyHorse takes only first_frame and
reference_image and the two are mutually exclusive.
Which roles a model takes, and how many of each, is on
its own model page.
Wan's combination rules: frames and references are
mutually exclusive and file / link are either-or;
all other combinations are forwarded to the model.
urlstringRequiredA publicly reachable https URL. The model fetches this
address; Amux does not.
parametersobjectGeneration parameters, all optional. Omitted fields fall back to
the model's own defaults; Amux does not substitute values.
⚠️ **The value domains below are the endpoint's union and are
narrowed per model** — no single model accepts all of them. A value
outside a model's range returns 400 naming the accepted values; it
is never silently replaced. Exact domains are on the model pages,
or in supported_parameters from GET /v1/models.
›parametersobject
resolution"480P" | "720P" | "1080P"Default "1080P"Output resolution tier. **This field is the billing
dimension**: the unit price is the per-second rate for the
selected tier.
⚠️ Tiers differ per model: happyhorse-1.0 has only 720P
and 1080P.
ratio"adaptive" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "4:5" | "5:4" | "9:21" | "21:9"Default "adaptive"Aspect ratio. This is the union, narrowed per model:
adaptive (follow the input material) is Wan only, while
4:5 5:4 9:21 21:9 are HappyHorse only.
durationintegerDefault 5Seconds of output. The range differs per model: Wan 2-30,
HappyHorse 3-15.
-1 (automatic duration, the model chooses) is Wan only;
the reservation then covers a 30-second upper bound, since the
actual length cannot be known at submit time.
audiobooleanDefault trueWhether the output carries sound. Does not change the price.
⚠️ Wan only. HappyHorse always has sound; sending this
drops it, and the task's result_meta.notes says so.
The output frame rate is not configurable and **differs per
model** (Wan 30fps, HappyHorse 24fps).
seedintegerReproducibility seed. -1 or 0-2147483647; randomly generated when omitted.
prompt_extendbooleanDefault trueWhether the model rewrites and expands the prompt before
generating.
⚠️ Wan only. Sending it to HappyHorse drops it and records
a note.
watermarkbooleanDefault falseWhether to stamp a watermark on the output video.
⚠️ The default differs per model: Wan does not watermark
(false), HappyHorse does (true). Pass false explicitly if
you do not want one.
webhook_urlstringPOSTs the result here once the task reaches a terminal state. The shape is
identical to the callback on POST /v1/tasks (the {event, sent_at, task}
envelope, an Amux-Signature header, and backoff retries).
This field is ours, not the vendor's. Model Studio async tasks do support
callbacks, but they are configured as EventBridge rules in the Alibaba Cloud
console -- the address cannot be passed per request. Without this field, callers
on this endpoint could only poll, while the same task submitted through the
unified endpoint gets pushed.
https only, and never a private address -- we send it from our servers. The
URL is validated at submit time, so a typo fails immediately rather than
after the task has run.
Response
200responseTask accepted. Poll GET /v1/tasks/{id} (or the alias below) with
output.task_id.
400responseInvalid parameters, or an input-media combination the model rejects.
402responseInsufficient balance for the reservation. With duration: -1 the
reservation covers 30 seconds — set an explicit duration to reserve less.
503responseNo provider can currently serve this model.
Supported models
Four models today, in two families:
| Model | Family | Model page |
|---|---|---|
alibaba/wan3.0-video | Wan 3.0 | Wan3.0 Video |
alibaba/wan3.0-video-prime | Wan 3.0 | Wan3.0 Video Prime |
alibaba/happyhorse-1.1 | HappyHorse | HappyHorse 1.1 |
alibaba/happyhorse-1.0 | HappyHorse | HappyHorse 1.0 |
⚠️ The parameter panel above is the endpoint's union; no single model accepts all of it
The two families on this protocol differ item by item. If you are calling one model, read its own page — everything there is what that model actually accepts.
| Wan 3.0 | HappyHorse | |
|---|---|---|
| Duration | 2–30, or -1 (automatic) | 3–15, no -1 |
| Aspect ratio | Includes adaptive (follows the media) | No adaptive; adds 4:5 5:4 9:21 21:9 |
audio | Toggleable | No such parameter; always has sound |
prompt_extend | Yes | No |
watermark default | false | true |
| Prompt limit | 20,000 characters | 5,000 non-Chinese / 2,500 Chinese |
| Referring to media | "图1" / "视频1" | [Image 1] (square brackets) |
| Media types | Seven (frames / reference image·video·audio / file / link) | First frame and reference images only, mutually exclusive |
| Resolution | Three tiers | 1.1 three tiers; 1.0 has only 720P / 1080P |
| Output frame rate | 30fps | 24fps |
Parameters the target model does not have are dropped, and the task's
result_meta.notes says so. Values outside a model's range return 400 naming the
accepted values; they are never silently replaced.
You can also read the exact domains from supported_parameters in
GET /v1/models — that view is per model and matches exactly what we let through.
Within each family
The two Wan models accept identical parameters; they differ only in speed and price:
| wan3.0-video | wan3.0-video-prime | |
|---|---|---|
| Speed | Standard | Noticeably faster |
| Unit price | Standard | Higher, per tier |
The two HappyHorse versions differ in resolution tiers and price: 1.1 has 480P and is cheaper; 1.0 has only 720P / 1080P.
⚠️ One HappyHorse site-side ID maps to three upstream models
Upstream splits it by capability into -t2v / -i2v / -r2v. We aggregate them behind
one ID and the input media decides which one is called; the three official IDs are
also accepted here as capability aliases. The full rules are on its model page.
This endpoint is asynchronous
Submission returns a task_id and the video is produced in the background. That is
a property of the interface rather than a limit imposed here: measured elapsed time
is approximately 105 seconds for 480P/2s and 891 seconds for 1080P/30s, longer than
any HTTP connection can be held reliably.
Prefer: wait therefore almost always degrades to "not finished" on this endpoint:
its ceiling is 90 seconds, while typical elapsed time here is several times that.
The status code is 200, not 202, matching the Alibaba Model Studio endpoint so that clients implemented against the vendor shape do not read it as a failure.
Retrieval
The task_id is an Amux task ID, not the upstream one. Both retrieval endpoints
accept it and return the same task in two renderings:
| Endpoint | Response shape | When to use |
|---|---|---|
GET /api/v1/tasks/{id} | Model Studio | DashScope clients construct this address themselves |
GET /v1/tasks/{id} | Amux | Recommended for new integrations; carries usage and cost |
The Model Studio shape has no fields for usage or cost, so those two are available only on the Amux endpoint.
Billing
Video produces no tokens. The charge is the per-second rate for the requested resolution tier multiplied by the seconds actually produced; input material is not priced separately.
A reservation is held against an upper bound at submit time and settled against
actual usage, with the difference released. With duration: -1 (smart duration)
that bound is 30 seconds, since the actual length cannot be known at submit
time; a balance insufficient to cover it receives a 402. Specify an explicit
duration to reduce the amount held.
Failures and timeouts are not charged and the reservation is released.
Three differences from the vendor API
The first two are Amux being stricter, the third more permissive:
- Input material must be a public https URL. The vendor also accepts
oss://and image base64; neither is supported on either Amux endpoint, and non-https addresses or addresses resolving to private networks return 400; - The
task_idis an Amux ID; the upstream ID is never exposed; - Artifact URLs do not expire after 24 hours. The vendor's
video_urlis a signed temporary address; Amux transfers the video into its own storage first. Those URLs are still cleaned up periodically — download anything you need to keep.
Item counts are not among those differences: the per-type limits (10 reference images, 5 reference clips, and so on) are validated upstream, and Amux applies only an overall 24-item ceiling that normal usage does not reach.
Errors
Errors come back in Alibaba Model Studio's shape. The type values and retry
semantics are in Errors and retries.
curl https://gateway.amux.ai/api/v1/services/aigc/video-generation/video-synthesis \
-H "Authorization: Bearer $AMUX_API_KEY" \
-d '{
"model": "alibaba/wan3.0-video",
"input": {
"prompt": "A ginger cat running through fresh snow, slow motion"
},
"parameters": {
"resolution": "1080P",
"duration": 5
}
}'{
"output": {
"task_id": "<string>",
"task_status": "PENDING",
"video_url": "<string>",
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}