Wan 3.0 · Image to Video
Thirty seconds, synced audio, and an end frame slot
- image_url
- last_image_url
- video
- task id
Every local Wan workflow hits the same wall around second five: the model either drifts or starts looping. Wan 3.0's answer is to give you thirty seconds in one request, plus an audio track generated alongside the picture. Neither of those is something you can do at home - there are no Wan 3.0 weights, and there aren't going to be, given Alibaba's trajectory since 2.2.
So this node is a length-and-audio play. From 6.75 credits ($0.0675) per second, 480p/720p/1080p, and a duration that goes 2 to 30 seconds or -1, which is the smart-duration option: the model picks a length from your prompt and any input media instead of a fixed number. That -1 is the single most interesting control on the node - most people never touch it and then wonder why their six-second idea came out padded.
How it works
Standard for this pack: the node is generated from Wan 3.0's published input schema, your image_url gets encoded and uploaded (PNG, JPEG fallback over 10 MiB), the run is quoted before credits are held, submitted under an idempotency key, polled with progress on the node, and the MP4 is downloaded as a ComfyUI VIDEO.
The two things that make 3.0 different from 2.6 both show up as widgets: generate_audio, which defaults on here, and enable_thinking, which lets the model reason about the brief before rendering - slower, better with complicated references, and it switches itself on when you give it a reference file or link.
The inputs that matter
image_url - the opening frame. prompt - subject, action, camera, light, pacing, boundaries. The long-duration models respond well to a beat structure: what's true at second two, what's changed by second twenty.
last_image_url is the optional output of the pack designers being sensible: wire a second IMAGE in and the clip ends exactly there. One opening frame, one closing frame, model fills the middle. For shot-matching inside a longer edit this is a small feature with a big effect on how usable the footage is.
duration_seconds - 2 to 30, or -1 for smart. resolution - 480p, 720p, 1080p. aspect_ratio defaults to model default, which omits the field and lets the task adapt to your opening image; adaptive is a value you can pick explicitly and it follows the input media and the intent.
generate_audio is on by default and it's part of what you're paying for. If you're scoring the clip yourself downstream, turn it off - you're not obliged to buy a soundtrack you're about to replace.
Outputs: video and task id.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
or Manager > Custom Nodes Manager > search PopNow > Install. Restart, paste a key from popnow.ai/api/console/keys into Settings > PopNow (or export POPNOW_API_KEY), restart again. Nothing to download - no checkpoints, no T5, no VAE - and no GPU requirement at all.
Old single-file popnow_api.py still in custom_nodes? Delete it.
Where people get burned
Thirty seconds is not free. The ~ on the price badge means the final charge depends on the output, and the node quotes the job before it starts - read the quote, especially at 1080p with a long duration. Set Settings > PopNow > Max credits per run so a typo in the duration box can't become an expensive afternoon.
Two smaller ones. The duration field is a dropdown, not a free number: -1 is a value, not an error, so don't "fix" it. And the aspect ratio default of model default means you never specified anything, so the model's own choice stands - if you need 9:16 for a Reels cut, say so.
Codes: 40201 credits, 40004 unsupported combination (field named), 400 rejected value, 40310 verify your email. Refused runs are refunded. Cancelling the queue stops the wait only - the task keeps generating and settles if it succeeds.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, action, camera, light, pacing, and boundaries for the shot. | |
| image_url | IMAGE | Opening-frame image. | |
| aspect_ratio | COMBO | model default | Output aspect ratio. Omit it to let the task adapt to the opening image; adaptive follows the input media and the intent. |
| enable_thinking | BOOLEAN | false | Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given. |
| resolution | COMBO | 720p | Output resolution. |
| duration_seconds | COMBO | 5 | Requested output length 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 | Request generated audio with the video. |
| enable_prompt_expansion | BOOLEAN | false | Allow the service to expand the submitted creative brief 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. |