Wan 3.0 Prime · Image to Video
Same thirty seconds, less waiting
- image_url
- last_image_url
- video
- task id
A "Prime" suffix in this pack means one thing: the same capability, rendered faster. So the first question is whether faster is worth 9.18 credits a second instead of Wan 3.0's 6.75. Answer that honestly and you know whether you're on the right node.
If you're generating a few clips for a finished piece, no - you're paying a premium for turnaround you don't need. If you're iterating on a prompt, or you're driving this from a queue that other people are waiting on, yes, and the extra ~36% per second is the cheapest way to stop being the bottleneck. The field list is identical to base Wan 3.0, which makes the trade refreshingly clean: speed versus price, nothing else.
Concretely, the node has the same shape as its sibling: up to thirty seconds, 480p to 1080p, native audio, optional end frame. Closed weights as usual - no Wan 3.0 checkpoint exists to download.
How it works
One node per model, generated from the endpoint's published schema, so what you see is what the API takes. On queue, image_url is encoded and uploaded, the run is quoted before any credits are held, the task is created under an idempotency key, and the node polls it while showing the estimate and the elapsed time. The finished MP4 is downloaded and handed to you as a ComfyUI VIDEO.
Because Prime renders quicker, the practical difference you'll feel isn't in the node at all - it's that you can afford a second and third attempt inside the same session. That's where the quality actually comes from.
The inputs that matter
image_url is the opening frame; the clip starts there. prompt wants subject, action, camera, light, pacing, boundaries.
last_image_url is the optional closing frame. Wire an IMAGE in and the shot ends exactly on it. This is the field I'd reach for first if you're building a sequence in ComfyUI: generate a still, animate to a second still, stitch. It requires image_url to be set, so it's an addition to I2V, not a keyframe mode on its own.
duration_seconds - 2 to 30 or -1, where -1 means smart duration and the model picks a length from your prompt and any input media. resolution - 480p, 720p, 1080p. aspect_ratio - 16:9, 9:16, 1:1, 4:3, 3:4, or adaptive; the default is model default, which sends nothing and lets the task adapt to your image.
generate_audio is on by default - turn it off if you're dubbing over the clip. enable_thinking is off by default and makes the model reason about the brief first; slower, and it turns itself on when a reference file or link is in play. enable_prompt_expansion rewrites your prompt before generation; leave it off when your prompt is already precise.
Outputs: video and task id.
Installing it
Manager > Custom Nodes Manager > search PopNow > Install > restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Then add a key from popnow.ai/api/console/keys in Settings > PopNow, or set POPNOW_API_KEY on a server, and restart once more so the catalog loads. No dependencies past ComfyUI itself, no models, no GPU. Delete the legacy custom_nodes/popnow_api.py if it's still there.
Where people get burned
Paying the Prime premium while you're still writing the prompt. Draft at 480p on the cheaper tier, then come back here for the take that matters - same node shape, same widgets, just switch the node type.
Watch the duration dropdown. It's a fixed list ending at 30, with -1 as smart duration, and 30 seconds at 1080p is real money. The Max credits per run setting under Settings > PopNow is your seatbelt; the node refuses anything quoted above it before holding a credit.
Failures are all named: 40201 no credits, 40004 combination not servable (it tells you which field), 400 a value it won't accept, content_rejected declined and refunded. Interrupting stops your node waiting, not the server-side job.
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. |