DEV Community

Ray Lin
Ray Lin

Posted on

Seven defaults in the Wan 3.0 video API that decide your bill before you write a prompt

Every asynchronous media API has a set of parameters you can leave out, and a set of
things it will then decide for you. Wan 3.0 has seven of them. Six are harmless. One
multiplies your invoice by four, and it is the one nearly every quickstart omits,
because omitting it is what makes a quickstart short.

This is a walk through the request body of Alibaba's wan3.0-video endpoint with
every default written down, checked against the Model Studio API reference on
2026-08-27. If you are wiring this into a product, the useful artifact is not a
working call — you will get one of those in ten minutes — it is a request builder
that never leaves a billing-relevant field unset.

The shape of the call

POST /api/v1/services/aigc/video-generation/video-synthesis
Content-Type: application/json
Authorization: Bearer $DASHSCOPE_API_KEY
X-DashScope-Async: enable
Enter fullscreen mode Exit fullscreen mode

That third header is not optional and it is not a performance hint. Leave it off and
the call fails with current user api does not support synchronous calls, which
reads like an account permissions problem and is not one. There is no synchronous
mode. Every generation is a task you submit and then poll.

{
  "model": "wan3.0-video",
  "input": {
    "prompt": "…",
    "media": [ { "type": "first_frame", "url": "https://…" } ]
  },
  "parameters": {
    "resolution": "720P",
    "ratio": "16:9",
    "duration": 5,
    "audio": true,
    "seed": 12345,
    "prompt_extend": true,
    "watermark": false
  }
}
Enter fullscreen mode Exit fullscreen mode

input needs at least one of prompt or media. Everything under parameters is
optional, which is the whole problem.

The seven defaults

Parameter Default when omitted Does it move the bill
resolution 1080P Yes — 4× the 480P rate
duration required in practice; -1 means model-decides Yes, indirectly
ratio adaptive No
audio true No — and this surprises people
prompt_extend true No, but it changes the output
watermark false No
seed random No, but it costs you reproducibility

1. resolution defaults to the most expensive tier

Wan 3.0 offers 480P, 720P and 1080P. Omit the field and you get 1080P. At Alibaba's
published international rates that is $0.20 per second against $0.05 for 480P — so a
thirty-second clip is $6.00 instead of $1.50, with no warning, no error, and an
otherwise identical model.

The reason this is worth a section of its own rather than a footnote: during
development you are not generating one clip, you are generating dozens of throwaway
ones. A test suite that never sets resolution bills every fixture at four times
the necessary rate. Set it explicitly in your client's defaults and require callers
to opt up.

DEFAULTS = {
    "resolution": "480P",   # never inherit the API's 1080P
    "ratio": "adaptive",
    "audio": True,
    "prompt_extend": True,
    "watermark": False,
}

def build(prompt, **overrides):
    params = {**DEFAULTS, **overrides}
    if "duration" not in params:
        raise ValueError("duration must be explicit; -1 is a budget decision")
    return {"model": "wan3.0-video", "input": {"prompt": prompt}, "parameters": params}
Enter fullscreen mode Exit fullscreen mode

2. duration and the -1 trap

Duration is an integer from 2 to 30 seconds. It also accepts -1, which hands the
length decision to the model. That is a genuinely nice feature for exploratory work
and a genuinely bad one for a prepaid credit system, because you cannot price a job
you have not sized. Several resellers document -1 as reserving the full
thirty-second maximum up front and reconciling afterwards; at least one documents it
as simply billing thirty seconds. Read the response's usage.output_video_duration
rather than your own request when you reconcile.

There is a second constraint that only appears once you pass video in: input video
seconds plus output seconds must total 30 or less.
A ten-second reference clip
caps your output at twenty. Requesting -1 does not exempt you.

3. audio defaults on, and turning it off saves nothing

Wan 3.0 generates picture and sound in one pass. The audio boolean controls whether
a track comes back, not whether one is produced. The published rate is the same
either way.

This is worth knowing mainly because the instinct from other providers is wrong here.
Some competing models bill native audio as a surcharge — turning it off is a real
lever there. On Wan 3.0 it is not a lever at all, so if you have a mute deliverable,
generate with audio on anyway and strip it downstream. You may want the track later
and it is already paid for.

4. prompt_extend rewrites what you wrote

On by default. It expands a terse prompt into something the model handles better, and
the effect on a one-line prompt is large. The effect on a 400-word prompt you have
already tuned over six attempts is also large, and not in the direction you want.

The response returns your original text under orig_prompt, so you can always
diff what you sent against what ran. If you are building a prompt-tuning loop, turn
expansion off once the prompt is longer than a sentence or two — otherwise you are
tuning one string and evaluating another.

5, 6, 7: ratio, watermark, seed

ratio defaults to adaptive and accepts 16:9, 4:3, 1:1, 3:4 and 9:16.
Note what is absent: there is no 21:9. If you have a pricing table or a UI carried
over from a model that offered a cinema ratio, that dimension has nothing behind it.

watermark defaults to false, which is the friendly direction and worth confirming
rather than assuming.

seed accepts 0–2147483647 and is random when unset. Random seeds are fine until the
day a client asks for "that one again, but slower," and you discover the only copy of
the number was in a response body you did not persist. Store it with the task.

Two clocks you have to design around

Both are 24 hours and they are not the same clock.

A task_id is queryable for 24 hours. After that, polling returns the state
UNKNOWN — which is not a failure, it is the system saying the receipt expired. The
state enum is PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED and UNKNOWN,
and if your client maps that last one onto PENDING your progress bar spins forever.

The returned video_url is also valid for 24 hours. The file is generated, the money
is spent, and if nothing downloaded it, it is gone. Copying the output to your own
storage on completion is the single most important line in the integration.

While you are there: concurrency is 2, with a queue of 50. Submit four variants
and you are running two and waiting on two. And the published API reference has no
cancel endpoint — CANCELED exists in the enum with no documented way to reach it.
A thirty-second 1080P job, once submitted, is submitted.

Sanity-checking your builder

A short table you can turn into assertions:

  • resolution present in every outgoing request.
  • duration explicit, or -1 deliberately with a budget note.
  • Reference inputs and keyframe inputs never in the same request — the API rejects the combination with InvalidParameter and the message "The two modes are mutually exclusive."
  • seed persisted from the response.
  • Output copied to durable storage inside the 24-hour window.
  • UNKNOWN mapped to expired, not to pending.

Where to look at the outputs

Reading a parameter table is a poor substitute for watching what the settings do, and
Alibaba's own console is behind a Cloud account. I work on
wan-3.run, a hosted front-end for this model that keeps every
one of the parameters above visible in the interface rather than inferred, prints the
model ID and task ID under each result, and gives you the first clip free so you can
see the difference between the tiers before committing a budget to one. Disclosure:
that is our site.

If you only want to see prompts and outputs side by side, the
worked prompts published beside the clips they produced
are open with no account, and so is
a prompt builder that needs no account.

All parameter values above come from Alibaba Cloud's Model Studio API reference for
wan3.0-video, checked 2026-08-27. Rates are Alibaba's published international list
price; resellers differ.

Top comments (0)