HappyHorse 1.1 · Text to Video
The version with no seed and no excuses
- video
- task id
Every other node in this family gives you something to hold onto - a first frame, a reference photo, a seed. This one gives you a text box. That's the entire input surface, and it's the honest reason text-to-video is harder to like than image-to-video: when a clip comes back wrong, there's nothing to fix but your words.
HappyHorse is Alibaba's video model, hosted by PopNow, so the node is an API call wearing a ComfyUI costume. 1080p output, sound included, nine aspect ratios, billed per second - "from 21 credits ($0.21) per second" on the node badge.
What's under the node
The pack is a schema mirror rather than a set of bespoke nodes. At startup it fetches PopNow's model catalog (falling back to a bundled snapshot, so the nodes exist before you've even added a key) and generates one node class per model-and-task, using each model's published input schema as the widget list. Change a model's schema server-side and your node's options follow after a restart. The class names are frozen, derived from the model id, because workflows store them.
When you queue, the node quotes the job first, submits it, polls, downloads the returned MP4 and hands it back as a normal ComfyUI VIDEO. Your machine does no inference. Which means the interesting failures are never VRAM - they're wallet and word problems.
The inputs, all four of them
prompt is the whole creative act. The tooltip asks for "the scene, action, camera movement, and timing", which is a good tell that the model wants a shot description rather than a stack of adjectives. Since the model also produces audio, describing the sound is fair game - the sibling visual models can't hear your hint and this one isn't deaf to it.
aspect_ratio defaults to 16:9. There's no source image, so nothing else can decide this for you. Nine ratios are offered; pick deliberately, because the shape is baked into the render.
resolution defaults to 720p, and 1080p is the step up. The badge price moves when you change it.
duration_seconds runs 3 to 15 in whole seconds, default 5, and cost scales with it. "Longer clips cost proportionally more" is the author's own note, which is a polite way of saying a 15-second take is not a cheap experiment.
Outputs: video, and task id. The task id isn't decoration - it's the string the PopNow console and support use to find your exact job.
The missing seed, and why it's actually fine
There's no seed widget on this node. Every other node in the HappyHorse family has one set to fixed by default, so repeat queues reuse the cached result and you don't get billed twice by accident. Here, every queue is a fresh roll. Queue twice, pay twice, get two different clips.
So the workflow changes: render one candidate, then insist on the next one only when you've actually edited the prompt. Iterating by re-queueing an unchanged prompt is how people burn a credit balance without noticing.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Restart ComfyUI. Or use Manager → Custom Nodes Manager → PopNow → Install, or comfy node install popnow-comfyui. Nothing else installs - the project declares zero dependencies beyond ComfyUI's own bundled aiohttp, torch, Pillow, NumPy and PyAV. You need Python 3.10+ and a recent ComfyUI (this is built on the V3 node API).
Then add the key: create one at popnow.ai/api/console/keys, open Settings → PopNow, paste, restart. Headless server? Export POPNOW_API_KEY in the environment instead - the key is deliberately not stored as a widget, since widgets get saved into every workflow you share.
What goes wrong
No PopNow API key is set and PopNow 401 are the two you'll meet first, and both mean the key isn't where the node expects it. PopNow 40201 is the wallet. PopNow content_rejected means the model declined - failed runs are refunded, so it costs you time, not credits. Anything ending in request_id ... is worth pasting to support, because it identifies the request exactly.
And a small one that catches everybody: Max credits per run in Settings → PopNow defaults to no limit. Set it before you start exploring 1080p at 15 seconds.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the scene, action, camera movement, and timing. | |
| aspect_ratio | COMBO | 16:9 | Output aspect ratio. |
| resolution | COMBO | 720p | Output video resolution. |
| duration_seconds | INT | 53–15 | Output duration in seconds. Any integer from 3 to 15 is accepted; longer clips cost proportionally more. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |