Four ways to reach the same video model, and what each one asks of you first

5
calendar_today agoschedule4 min read

Most "how do I use model X" questions are not really about prompting. They are
about where you type the prompt, and for Alibaba's Wan 3.0 that is genuinely
confusing, because the model shipped as an API months before it shipped as
anything a person could open.

There are four routes in. The model at the far end is the same in all four. What
differs is the paperwork.

Route What you need before you can start Who it suits
Alibaba Cloud Model Studio Cloud account, a region choice, an API key that matches that region Teams already on Alibaba Cloud
Qwen Cloud An account; international access still rolling out Developers outside China
Alibaba's own consumer surfaces An account, plus access being rolled out to members People who want the first-party product
A hosted front end Usually nothing, sometimes an email One clip today

That table is the whole answer for most people. The rest of this post is the
part that actually costs money if you skip it.

The region/key pairing is a real constraint, not boilerplate

On the official route, the API key is scoped to the region you picked. A key
issued in one region will not authenticate against another region's endpoint,
and the failure surfaces as an authentication error rather than "wrong region",
which sends people to rotate a perfectly good key.

Worth knowing before you build routing: four of the five regions are priced
identically and the fifth is about 25% more. If your traffic is not
latency-sensitive, region choice is a billing decision that looks like an
infrastructure decision.

The API is asynchronous, and there are two separate 24-hour clocks

You submit a job and poll. There is no callback in the published reference, and
there is no documented cancel call — CANCELED exists in the state enum, but
nothing in the API puts a task into it. Once a thirty-second job is submitted,
it is submitted.

Then two clocks start, and they are not the same clock:

  • The task_id is valid for 24 hours. Query it later and you get UNKNOWN,
    which is not a failure state. It means the system no longer remembers the job.
    A front end that maps UNKNOWN onto PENDING will spin forever — if you have
    ever watched a progress bar run past an hour, that is usually what you were
    watching.
  • The video_url also expires 24 hours after success. The file was
    generated, the money was spent, and if nobody fetched it, there is nothing to
    show. Copying the output into your own storage the moment a job succeeds is
    the single most important line in the integration, and it is the line people
    leave for later.

Six states exist in total: PENDING, RUNNING, SUCCEEDED, FAILED,
CANCELED, UNKNOWN. Collapsing the last one into "failed" is the mistake that
generates support tickets, because "expired" and "failed" have different causes
and different remedies.

Concurrency is small enough to design around

Two concurrent tasks. A fifty-task queue. Thirty submissions a minute. A single
generation usually runs one to five minutes, longer for longer clips.

Batch four variants and you are running two and waiting on two. Nothing failed;
two are queued. The useful consequence is that your rate limiter is probably
guarding the wrong number — the submission ceiling is rarely what you hit first,
concurrency is.

The default that quietly quadruples the bill

If you do not set resolution, Wan 3.0 generates at 1080P. At Alibaba's
published rates that is four times the per-second cost of 480P: a thirty-second
clip is $6.00 instead of $1.50. Nothing errors and nothing warns you. One
parameter.

Related, and equally undocumented in most write-ups: prompt expansion is on by
default. It helps a short prompt and interferes with a long one you already
tuned. The response hands your original text back under orig_prompt, so you
can always diff what you sent against what ran.

Two input families that cannot share a request

Wan 3.0 takes a reference family (reference_image, reference_video,
reference_audio, file, link) and a keyframe family (first_frame,
last_frame), and it refuses both in the same call:

{
  "code": "InvalidParameter",
  "message": "The two modes are mutually exclusive. Do not pass reference_xx and first_frame/last_frame at the same time."
}

This reads like an arbitrary validation rule and it is not. Keyframes say start
here, end there, invent the middle
. References say here is a cast and a mood,
work the shot out yourself
. One pass cannot be pinned at both ends and freely
composed at the same time. So the fix is a decision rather than a workaround.

The same shape appears twice more, smaller: file and link are mutually
exclusive, and there is exactly one of each per job.

If you just want one clip today

Route four exists because the other three are a day of setup for a thing you
wanted to try for ten minutes. wan-3.run is a browser tab
that runs the same wan3.0-video model, prints the model ID and upstream task
ID under every result, and gives the first clip away so you can check the output
before you decide whether any of the paperwork above is worth it.

If you are writing the integration rather than using one, the numbers above are
the ones to hard-code tests around, and there is
a spec table with each row dated and linked to its source
that is easier to diff against than the docs when Alibaba changes something.

Disclosure: I work on that second link.

1 Comment

0 votes
🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

Local-First: The Browser as the Vault

Pocket Portfolio - Apr 20

TypeScript Complexity Has Finally Reached the Point of Total Absurdity

Karol Modelski - Apr 23

MCP Is the USB-C of AI. So Why Are You Plugging Everything In?

Ken W. Algerverified - Jun 10

I’m a Senior Dev and I’ve Forgotten How to Think Without a Prompt

Karol Modelski - Mar 19

Is Google Meet HIPAA Compliant? Healthcare Video Conferencing Guide

Huifer - Feb 14
chevron_left
156 Points5 Badges
2Posts
0Comments

Related Jobs

View all jobs →

Commenters (This Week)

7 comments
2 comments
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!