Amux

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.

POSThttps://gateway.amux.ai/api/v1/services/aigc/video-generation/video-synthesis

Authorization

header
AuthorizationstringRequired

Bearer <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/json
modelstringRequired

Amux model ID. Four models live on this endpoint today:

ModelNotes
alibaba/wan3.0-videoWan 3.0, all-in-one
alibaba/wan3.0-video-primeWan 3.0, faster tier
alibaba/happyhorse-1.1HappyHorse 1.1
alibaba/happyhorse-1.0HappyHorse 1.0

HappyHorse also accepts three capability aliases

(-t2v / -i2v / -r2v); see its model page.

inputobjectRequired

Provide 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
promptstring

A 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"Required

What 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.

urlstringRequired

A publicly reachable https URL. The model fetches this

address; Amux does not.

parametersobject

Generation 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 5

Seconds 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 true

Whether 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).

seedinteger

Reproducibility seed. -1 or 0-2147483647; randomly generated when omitted.

prompt_extendbooleanDefault true

Whether the model rewrites and expands the prompt before

generating.

⚠️ Wan only. Sending it to HappyHorse drops it and records

a note.

watermarkbooleanDefault false

Whether 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_urlstring

POSTs 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

200response

Task accepted. Poll GET /v1/tasks/{id} (or the alias below) with

output.task_id.

400response

Invalid parameters, or an input-media combination the model rejects.

402response

Insufficient balance for the reservation. With duration: -1 the

reservation covers 30 seconds — set an explicit duration to reserve less.

503response

No provider can currently serve this model.

Supported models

Four models today, in two families:

ModelFamilyModel page
alibaba/wan3.0-videoWan 3.0Wan3.0 Video
alibaba/wan3.0-video-primeWan 3.0Wan3.0 Video Prime
alibaba/happyhorse-1.1HappyHorseHappyHorse 1.1
alibaba/happyhorse-1.0HappyHorseHappyHorse 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.0HappyHorse
Duration2–30, or -1 (automatic)3–15, no -1
Aspect ratioIncludes adaptive (follows the media)No adaptive; adds 4:5 5:4 9:21 21:9
audioToggleableNo such parameter; always has sound
prompt_extendYesNo
watermark defaultfalsetrue
Prompt limit20,000 characters5,000 non-Chinese / 2,500 Chinese
Referring to media"图1" / "视频1"[Image 1] (square brackets)
Media typesSeven (frames / reference image·video·audio / file / link)First frame and reference images only, mutually exclusive
ResolutionThree tiers1.1 three tiers; 1.0 has only 720P / 1080P
Output frame rate30fps24fps

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-videowan3.0-video-prime
SpeedStandardNoticeably faster
Unit priceStandardHigher, 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:

EndpointResponse shapeWhen to use
GET /api/v1/tasks/{id}Model StudioDashScope clients construct this address themselves
GET /v1/tasks/{id}AmuxRecommended 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:

  1. 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;
  2. The task_id is an Amux ID; the upstream ID is never exposed;
  3. Artifact URLs do not expire after 24 hours. The vendor's video_url is 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
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>"
}