Wan3.0

Wan3.0 is Alibaba's higher-end all-in-one multimodal video model for longer, reference-heavy, production-oriented creation. It combines text-to-video, first- and last-frame image-to-video, reference-driven video generation, localized video editing, and temporal extension in one model, with support for image, video, audio, document, and webpage inputs. It is especially well suited to branded storytelling, product demos, explainers, music-led sequences, and other commercial workflows that need stronger character or product consistency, more impactful audiovisual motion, and tighter control over complex multi-input prompts.

Complete technical specification for integration
Ready-to-use code snippets for common workflows
Step-by-step tutorials for advanced use cases
← All GuidesDocument and web inputs with Wan 3.0
How to turn structured content into video with Wan 3.0: recipes as cooking videos and Wikipedia articles as short landmark, historical, and cultural montages.
Introduction
Wan 3.0 turns structured written content into video. Two input types make this possible: a document (Word, PowerPoint, spreadsheet, Keynote, Pages, Numbers, or Markdown) and a public webpage URL. Feed the model source content on either surface and it reads the content, extracts the structure, and generates a video that presents what's inside. The pattern removes the scripting and storyboarding step from workflows where the source material already exists as writing.
The hero below was generated from a real markdown recipe document, shown in full right after the video. The recipe lists the ingredients and the numbered steps for cooking beef tacos, and Wan 3.0 rendered a 15-second overhead cooking video following those steps in order.
Source: beef-tacos.md
Generate a 15-second overhead cooking video from the attached beef-taco recipe document. Follow the recipe exactly: a hot cast-iron skillet on the stovetop, a hand adds ground beef and breaks it up with a wooden spoon as it browns, then small pinches of cumin, smoked paprika, garlic powder, chili powder, salt, and black pepper are added on top of the beef and stirred through, finally a small splash of water is added and stirred to make the mixture saucier. Camera locked in a tight overhead angle looking down into the skillet, warm afternoon kitchen light. Audio: the sizzle of the beef in the pan, the tap of the wooden spoon on the cast iron, the crisp shake of the spice jars, the quick hiss when the water hits. No music, no spoken lines, no on-screen text.
The full source document is this real markdown file:
# Beef Tacos
## info
* About 15 minutes
* 2 servings
## ingredients
* 1 lbs ground beef
* 1 tsp ground cumin
* 1 tsp smoked paprika
* 1/2 tsp garlic powder
* 1/2 tsp chili powder
* 1/2 tsp salt
* 1/2 tsp black pepper
* 1 tbsp water
## steps
1. Heat oil in a cast iron skillet over medium heat, add the beef and cook until it starts to brown
2. Add seasonings, stir, and cook until done
3. Add 1 tbsp water to make the beef a bit saucier, stir to combineThe prompt directed the framing and camera treatment. The document supplied the ingredients, the seasoning list, and the order of operations. Wan 3.0 pulled the specific spices from the source, sequenced the steps as they appear in the recipe, and paced the shot so each action lands cleanly. This guide covers the document input path for structured content you upload, the URL input path for live public webpages, and how to pick between them.
Request shape
Both document and URL inputs are attached under inputs. inputs.documents accepts an array with one entry (the document file, as a UUID or URL). inputs.urls accepts an array with one entry (the public webpage URL). The two are mutually exclusive per request.
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'alibaba:wan@3.0',
positivePrompt: 'Generate a 15-second overhead cooking video from the attached beef-taco recipe document. Follow the recipe exactly: a hand adds ground beef to a hot cast-iron skillet, breaks it up with a wooden spoon as it browns, then adds pinches of cumin, smoked paprika, garlic powder, chili powder, salt, and black pepper, then a small splash of water. Camera locked in a tight overhead angle. Audio: the sizzle of the beef, the tap of the wooden spoon on the cast iron, the shake of the spice jars.',
inputs: {
documents: [
'https://raw.githubusercontent.com/jeffThompson/Recipes/master/recipes/beef-tacos.md'
]
},
width: 1920,
height: 1080,
duration: 15
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "alibaba:wan@3.0",
"positivePrompt": "Generate a 15-second overhead cooking video from the attached beef-taco recipe document. Follow the recipe exactly: a hand adds ground beef to a hot cast-iron skillet, breaks it up with a wooden spoon as it browns, then adds pinches of cumin, smoked paprika, garlic powder, chili powder, salt, and black pepper, then a small splash of water. Camera locked in a tight overhead angle. Audio: the sizzle of the beef, the tap of the wooden spoon on the cast iron, the shake of the spice jars.",
"inputs": {
"documents": [
"https://raw.githubusercontent.com/jeffThompson/Recipes/master/recipes/beef-tacos.md"
]
},
"width": 1920,
"height": 1080,
"duration": 15
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "videoInference",
"taskUUID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"model": "alibaba:wan@3.0",
"positivePrompt": "Generate a 15-second overhead cooking video from the attached beef-taco recipe document. Follow the recipe exactly: a hand adds ground beef to a hot cast-iron skillet, breaks it up with a wooden spoon as it browns, then adds pinches of cumin, smoked paprika, garlic powder, chili powder, salt, and black pepper, then a small splash of water. Camera locked in a tight overhead angle. Audio: the sizzle of the beef, the tap of the wooden spoon on the cast iron, the shake of the spice jars.",
"inputs": {
"documents": [
"https://raw.githubusercontent.com/jeffThompson/Recipes/master/recipes/beef-tacos.md"
]
},
"width": 1920,
"height": 1080,
"duration": 15
}
]'runware run alibaba:wan@3.0 \
positivePrompt="Generate a 15-second overhead cooking video from the attached beef-taco recipe document. Follow the recipe exactly: a hand adds ground beef to a hot cast-iron skillet, breaks it up with a wooden spoon as it browns, then adds pinches of cumin, smoked paprika, garlic powder, chili powder, salt, and black pepper, then a small splash of water. Camera locked in a tight overhead angle. Audio: the sizzle of the beef, the tap of the wooden spoon on the cast iron, the shake of the spice jars." \
inputs.documents.0=https://raw.githubusercontent.com/jeffThompson/Recipes/master/recipes/beef-tacos.md \
width=1920 \
height=1080 \
duration=15{
"taskType": "videoInference",
"taskUUID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"model": "alibaba:wan@3.0",
"positivePrompt": "Generate a 15-second overhead cooking video from the attached beef-taco recipe document. Follow the recipe exactly: a hand adds ground beef to a hot cast-iron skillet, breaks it up with a wooden spoon as it browns, then adds pinches of cumin, smoked paprika, garlic powder, chili powder, salt, and black pepper, then a small splash of water. Camera locked in a tight overhead angle. Audio: the sizzle of the beef, the tap of the wooden spoon on the cast iron, the shake of the spice jars.",
"inputs": {
"documents": [
"https://raw.githubusercontent.com/jeffThompson/Recipes/master/recipes/beef-tacos.md"
]
},
"width": 1920,
"height": 1080,
"duration": 15
}[
{
"taskType": "videoInference",
"taskUUID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoUUID": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"videoURL": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/b2c3d4e5-f6a7-8901-bcde-f12345678901.mp4"
}
]The positivePrompt does directional work as in any Wan 3.0 request: framing, camera treatment, audio. The source (document or URL) provides the content the video presents. The two are complementary: the prompt shapes the shot, the source shapes what happens in it.
Document input
inputs.documents accepts one document per request, referenced by UUID or URL. Wan 3.0 reads the content and generates a video that presents what's inside. Accepted formats: Word (docx, doc), Excel (xlsx, xls), PowerPoint (pptx, ppt), Keynote (key), Pages (pages), Numbers (numbers), and Markdown (md). Up to 100 MB and 50 pages per file.
The hero above shows what one small structured recipe becomes when Wan reads it. The source named six specific spices and three specific steps, and the output rendered each spice going into the pan and the three steps in the order the recipe gives them. A prompt alone could have called for a generic cooking shot, but the recipe pinned the exact ingredients and sequence.
The pattern extends past food. Any document with structured beats works: a specification with numbered features, a tutorial with ordered instructions, a report with named sections. Wan reads the structure and paces the video against it.
A second example, this one a drink recipe:
# Raspberry and Elderflower Gin and Tonic
## ingredients
* 8 raspberries (frozen ok but should be thawed)
* Fresh thyme (optional)
* 1.5 oz gin
* 1/2 lime
* 1-2 tbsp St Germaine (or 1-2 tsp simple syrup)
* Tonic
## steps
1. Muddle raspberries with 1.5 oz gin (and fresh thyme, if using)
2. Add juice of half a lime
3. Add 1-2 tbsp St Germaine (or 1-2 tsp simple syrup)
4. Strain into glass, add ice cubes and top with tonicGenerate a 12-second bartending video from the attached raspberry and elderflower gin-and-tonic recipe document. Follow the recipe exactly: a cocktail shaker on a warm walnut bar counter, a hand drops in eight fresh raspberries and a small sprig of thyme, pours in a jigger of gin and muddles the raspberries, squeezes in the juice of half a lime, adds a spoonful of St Germaine, strains the mix into a stemmed rocks glass, drops in two large ice cubes, and slowly tops it with tonic that fizzes over the raspberry pulp. Camera locked at a slight three-quarter angle showing the glass and the hands. Warm evening bar light with a subtle backdrop of blurred bottles behind. Audio: the light muddle in the shaker, the squeeze and drip of the lime, the pour of tonic and its soft fizz over the ice, quiet ambient bar tone. No music, no spoken lines, no on-screen text.
Same shape as the beef-taco render, different content. Wan pulled the specific ingredients (raspberries, thyme, gin, lime, St Germaine, tonic) from the document and rendered each step in sequence. The prompt supplied the setting (warm walnut bar counter, evening light) and the camera framing.
The document's structure matters. Wan 3.0 reads headings, lists, and section boundaries as organising cues for the video. A well-structured document with clear section headings and bullet points gives the model a stronger scaffold than a wall of unbroken prose does.
Webpage input
inputs.urls accepts one public webpage URL per request. Wan 3.0 fetches the page, reads what's on it (text and structure), and generates a video that presents the page. Pages behind authentication (logins, paywalls, private dashboards) cannot be read.
The three examples in this section all point at long-form public pages on well-defined subjects, freely accessible, and easy to inspect against the output. The same pattern extends to any public webpage.
Landmark page → cinematic showcase. The official Eiffel Tower site's monument page is a structured entry covering the tower's construction, dimensions, appearance, and visitor experience. The prompt asked for three establishing shots and Wan pulled specific visual anchors (the iron lattice, the Champ de Mars, the evening sparkle) from the page's descriptive content.
Source: La Tour Eiffel, The Monument
Generate a 12-second landmark travel video from the attached webpage about the Eiffel Tower. Show three quick establishing shots of the tower drawn from the page: a wide daylight shot of the full iron lattice tower rising above the Champ de Mars with the Seine visible behind it, a mid shot of a couple walking on the esplanade underneath the tower looking up at the crossed girders, and a night shot of the tower fully lit in warm yellow light with the hourly sparkle animation just starting across its surface. Camera locked for each shot. HARD CUT between the three. Audio: warm ambient acoustic guitar bed threading softly across all three shots, the ambient sound of each scene (distant Parisian street chatter and traffic under the daylight shot, footsteps and murmured conversation under the mid shot, faint evening city hum under the night shot). No spoken lines, no on-screen text.
Historical event page → event recap. The NASA Apollo 11 mission page covers the timeline of the mission across launch, orbit, and lunar landing. The prompt asked for three beats matching the page's structure and Wan rendered the Saturn V lift-off, the Command Module in Earth orbit, and the astronaut stepping onto the lunar surface, all as separate cuts.
Source: NASA, Apollo 11
Generate a 15-second historical event recap video from the attached NASA mission page about Apollo 11. Show three key beats from the mission: a wide daylight shot of the Saturn V rocket lifting off from Kennedy Space Center with flames and steam billowing around the launch pad, a shot of the Command Module in orbit with the curve of the Earth visible behind, and a wide shot of the lunar surface with the LM lander and an astronaut in a white spacesuit stepping down the ladder into the grey dust. Camera locked for each shot. HARD CUT between the three. Audio: the deep rumble of the rocket launch and its released sound wave under the first shot, ambient silence with the faint tone of a comms channel under the orbit shot, muted footsteps on lunar dust and the crackle of a radio transmission under the moon shot. No spoken lines, no on-screen text.
Cultural heritage page → craft demonstration. The UNESCO listing for Washoku, the traditional dietary culture of Japan, covers preparation techniques, common forms, and the role of the chef. The prompt asked for a compact chef demonstration and Wan rendered a nigiri press and a maki roll as they're described within that broader food culture.
Source: UNESCO, Washoku
Generate a 12-second culinary demonstration video from the attached UNESCO heritage page about Washoku, traditional Japanese dietary culture. Show a sushi chef in a traditional white jacket and dark apron at a light-wood sushi counter preparing a small selection of pieces drawing on the page: he shapes a small oval of vinegared rice in his hand, presses a thin slice of raw salmon on top and brushes it lightly with soy, sets it on a warm wooden serving board, then rolls a compact maki roll on a bamboo mat and slices it cleanly into six pieces with a single stroke of a long sushi knife. Camera locked at a tight three-quarter angle over the counter showing his hands. Warm calm indoor light. Audio: the soft pat of the rice being shaped, the whisper of the knife slice, the light click of the bamboo mat unrolling, quiet ambient restaurant tone. No spoken lines, no on-screen text.
The webpage URL must resolve to a publicly accessible page. Wan 3.0 reads whatever the page currently shows, so updates to the page reflect in future generations. For content that changes often (blog posts, campaigns, seasonal landing pages), the URL input keeps the video output aligned with the live page without needing to re-download source files.
Choosing between document and URL
Both inputs feed structured content into the video generation, but they answer different questions about where the content lives.
Reach for inputs.documents when the content is a file you own or can attach directly. Recipes, spec sheets, decks, briefs, and reports are typically already in a document format. Uploading the file gives you full control over the exact version the model reads, without depending on public hosting or fearing that the source might change between generations.
Reach for inputs.urls when the content is a live webpage and the video should represent what a visitor to that page would encounter. Wikipedia articles, product pages, blog posts, and public documentation are natural URL targets. Wan 3.0 reads whatever is currently on the page, so pipelines that regenerate videos on a schedule can pull in page updates automatically.
The two cannot be combined in one call. If a deliverable needs both a document and a URL as source, generate two videos and edit them together, or turn one of the sources into the other format first.
Input constraints
- Documents. One document per request. Up to 100 MB file size, up to 50 pages, in one of the accepted office or Markdown formats (
docx,doc,xlsx,xls,pptx,ppt,key,pages,numbers,md). - URLs. One URL per request. The URL must resolve to a publicly accessible webpage. Pages behind authentication (logins, paywalls, private tenant URLs) cannot be read.
- Mutually exclusive. A single call attaches either
documentsorurls, never both.
Files above the size or page cap fail validation before generation starts, so oversized inputs are caught early.
Tips
-
Match the source content to the video you want. Wan 3.0 reads the source as the shot brief. If the source is well-structured (clear headings, bullet points, ordered steps), the video pacing follows that structure. Unbroken prose gives the model less to organise the shot around.
-
The prompt still directs the shot. Even with a document or URL attached, the
positivePromptdecides the framing, camera treatment, and audio. The source provides the content, the prompt shapes how it's shown. Both matter. -
Prefer
inputs.documentswhen the content is a file you control. Uploading the exact version pins what the model reads. URL inputs will see whatever the page shows at request time, which can be a feature (auto-refreshing content) or a bug (unexpected changes). -
Prefer
inputs.urlswhen the deliverable represents a live page. Product-page promos, landing-page hero videos, and article summaries all benefit from the URL matching what visitors actually see. -
Name the beats you want in the prompt. For URL and document input the model has a lot of content to choose from. Naming three or four specific beats to render lands more consistently than "summarise the page in video form."
-
Keep source documents under the caps. Files above 100 MB or 50 pages fail validation. Trim long documents to the sections that matter for the video before submitting.
-
URLs must be publicly accessible. Authentication walls, IP restrictions, and private dashboards block the read. If the content lives behind a login, download it as a document and use
inputs.documentsinstead. -
The two inputs cannot combine. A single call attaches either
documentsorurls, not both. For deliverables that need both sources, generate two videos and edit them together.