Wan 3.0 Pro · Image to Video
4K is a resize, and that's fine
- image_url
- last_image_url
- video
- task id
Read the tooltip on the resolution dropdown before you read anything else, because it's the most honest thing in this pack: "a native Wan 3.0 render tops out at 1080p, so the 2k and 4k tiers are delivered by enlarging that render instead of rendering natively at those sizes."
That's not a scandal, it's a disclosure - and it changes how you should buy this node. If you were about to pay 21.6 credits a second for a 4K render because you assumed 4K means more model, you now know you're buying an upscale. If you have a local upscaler you trust (and by 2026 most people do), there's a real argument that 1080p out of Pro and then SeedVR2 or whatever you already run is the better pipeline: you control the enlargement, and you can re-run it for free when you change your mind.
None of this is local-weights territory, incidentally. Wan 3.0 is API-only; there's no checkpoint to download.
How it works
Standard pack plumbing: node generated from the model's schema, image_url encoded and uploaded, run quoted before credits are held, task submitted under an idempotency key, polled with progress on the node, MP4 downloaded as a ComfyUI VIDEO.
Pro's distinguishing features over base Wan 3.0 sit in the schema rather than in the plumbing - a bigger resolution ladder, adaptive as the default aspect ratio, prompt expansion on by default - and there's no reasoning/thinking toggle on this tier, so don't go hunting for one.
The inputs that matter
image_url is the opening frame. prompt - the tooltip is terser here than on the cheaper tiers ("subject, motion and camera"), which is a hint: this tier expects a clean brief rather than a screenplay.
resolution is 1080p, 2k or 4k, with the enlargement caveat above. aspect_ratio defaults to adaptive, which follows the input media and the intent - a sensible default for image-to-video, and the reason a portrait still usually stays portrait.
last_image_url - optional end frame. The clip finishes exactly on that image, and it requires image_url, so it's a bridge between two stills rather than a standalone mode.
duration_seconds - 2 to 30 or -1 for smart duration, where the model reads the prompt and picks a length itself. generate_audio is on by default; turn it off if you're muxing your own.
enable_prompt_expansion defaults to on here, unlike the cheaper tiers. That's a real difference in behaviour: your prompt gets rewritten into something fuller before generation. If you've written a precise shot description and it keeps coming back slightly off-brief, this is the first thing to switch off.
Outputs: video and task id.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
or search PopNow in Manager's custom-node list. Restart, then add your key from popnow.ai/api/console/keys in Settings > PopNow (or export POPNOW_API_KEY), restart again. No model files, no dependencies beyond ComfyUI, no GPU. Delete custom_nodes/popnow_api.py if you still have the old single-file version.
Where people get burned
Buying an upscale at 4K prices and then upscaling again locally. Pick one - either you want the convenience of the service doing it, or you want control. Doing both wastes money and softens the result.
Watch the duration dropdown too: 30 seconds at Pro rates is about 648 credits, and -1 can land anywhere in the 2-to-30 range the model feels is right. Read the quote; it's printed before anything is held. Set Settings > PopNow > Max credits per run and the node will refuse anything above your ceiling outright.
Error codes: 40201 no credits, 40004 unsupported combination (the message names the setting), 400 a rejected value, 40310 verify your email first. Refused runs are refunded, and an interrupted run keeps going server-side and charges if it succeeds.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, motion and camera. | |
| image_url | IMAGE | Opening frame image. | |
| resolution | COMBO | 1080p | Output resolution tier. A native Wan 3.0 render tops out at 1080p, so the 2k and 4k tiers are delivered by enlarging that render instead of rendering natively at those sizes. |
| aspect_ratio | COMBO | adaptive | Output aspect ratio; adaptive follows the input media and the intent. |
| duration_seconds | COMBO | 5 | Output duration in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. |
| generate_audio | BOOLEAN | true | Include an audio track in the output. |
| enable_prompt_expansion | BOOLEAN | true | Expand the prompt before generation. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| last_image_urlopt | IMAGE | Optional last frame: the clip ends exactly on this image. Requires image_url. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |