Nodes/SpicyAPI/HappyHorse 1.1 · Image to Video
ComfyUI Node

HappyHorse 1.1 · Image to Video

One frame in, fifteen seconds of video with sound out

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
HappyHorse 1.1 · Image to Video
  • image_url
  • video
  • task id
◄prompt►
◄resolution720p►
◄duration_seconds5►
◄seed0►

You have a still. You want it to move, and you want the result to have sound in it - not a separate foley pass you have to babysit, but audio generated alongside the pixels. That's the job this node does: you hand it one image as the opening frame and a prompt describing what happens next, and Alibaba's HappyHorse 1.1 returns a clip between 3 and 15 whole seconds at 720p or 1080p.

It's an API node, so nothing runs on your card. That matters more than usual here, because the local video landscape is stuck in a weird place: Wan 2.1 and 2.2 are the last open Wan weights that exist, and everything Alibaba shipped after them went API-only. This node is the other side of that turn - you get the newer video model, and you pay per second instead of per kilowatt-hour.

How it works, mechanically

The pack builds its nodes from each hosted model's own published input schema, so this node wears exactly the options HappyHorse 1.1 accepts and nothing else. When you press Run, the pack uploads your image, asks SpicyAPI for a quote for that exact combination of settings, and only then creates the job. It polls the task, downloads the finished video, and hands it to you as an ordinary ComfyUI VIDEO value - the same type a local video sampler produces, so Save Video doesn't care where it came from.

The inputs that matter

  • image_url - an IMAGE socket, not a filename. Wire Load Image into it. This is the first frame, which means the image sets the shape of the output: there's no aspect-ratio dropdown on this node, so don't go looking for one. Whatever you feed in is what you get back, scaled to the resolution you pick.
  • prompt - a multiline string. This is the whole directorial control you have. Write motion, not description: the still already answered "what does it look like". Camera movement, what moves, the order things happen in, and roughly when.
  • duration_seconds - an integer from 3 to 15. Every extra second costs proportionally more, so prototype at 3.
  • resolution - 720p or 1080p, defaulting to 720p.
  • seed - same seed and settings, same result. It starts on control after generate: fixed on purpose, because queueing the same graph twice reuses the first result rather than quietly charging you for a second one. Switch it to randomize when you actually want a different take.

Outputs

Two sockets: video, which goes straight into Save Video, and task id, the SpicyAPI job identifier. The task id looks like plumbing and mostly is, but keep it: it's what support asks for if a run fails, and it's how you find the job in your console logs after you've closed ComfyUI in frustration.

Install and key

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi

Restart ComfyUI. There is genuinely nothing else to install - the pack declares no dependencies of its own beyond what ComfyUI already ships. Drop a key from spicyapi.ai/console/keys into Settings > SpicyAPI and restart once more so the node list comes from your account. On a headless box, set SPICY_API_KEY in the environment instead. The key is never a node widget, so sharing a workflow or a PNG doesn't leak it.

The traps

This is billed per second of output. At the advertised rate of about $0.14/s, a 15-second clip is a couple of dollars, and iterating at 15 seconds because you didn't feel like waiting is how a balance disappears in an afternoon. Settle the prompt at 3 seconds and 720p, then re-run long.

Set "Max cost per run" in the SpicyAPI settings. The node quotes every run before submitting, and a quote above your ceiling aborts with nothing charged. It's the cheapest insurance in ComfyUI.

Cancelling stops the wait, not the job. Hit the interrupt button and the node stops polling - but the task keeps running on SpicyAPI and is charged if it succeeds. The result sits in your console for up to 14 days.

A missing key is the usual error. No SpicyAPI key is set means exactly that. If you get an error code instead, 40004 means no deployment serves the combination you picked (change the parameter named in the message), 40310 means the account's email is still unverified, and anything else is worth sending to support with the task id.

CategorySpicyAPI/Video/Alibaba

Inputs (5)

NameTypeDefaultDescription
promptSTRINGDescribe the scene, action, camera movement, and timing.
image_urlIMAGEImage used as the first video frame.
resolutionCOMBO720pOutput video resolution.
duration_secondsINT53–15Output duration in seconds. Any integer from 3 to 15 is accepted; longer clips cost proportionally more.
seedINT00–2147483647Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed.

Outputs (2)

NameTypeDescription
videoVIDEO—
task idSTRINGThe SpicyAPI task id, for the console logs or support.