Happy Horse / v1.0 / textToVideo
Prompt in, clip out, your GPU stays asleep
- api_config
- video
- workflow_id
- raw_json
This is the plainest node in the Happy Horse v1.0 family: a prompt, a few settings, and a video comes back - generated on Civitai's servers, not your machine. It's part of civitai/civitai-comfy-nodes, Civitai's official ComfyUI pack for its Orchestration API, so it needs no GPU, downloads no model, and bills the job in Buzz. If you've got a Civitai account and some Buzz to spend, this is a zero-friction way to generate short text-to-video clips without owning the hardware a video model would normally demand.
Why reach for it over a local video model? Because there's no "over" - this one exists entirely server-side. The local alternative (Wan, LTX, Hunyuan) means multi-GB downloads, VRAM gymnastics, and minutes per clip on a card that can handle it. Happy Horse is the opposite trade: you trade money for convenience and near-instant setup. It also slots into a bigger graph like any other node, so you can chain it after a prompt-enhancement node or before a local upscaler - the classic "closed model inside my workflow" move that the KB's external-API-nodes doc describes.
How it works
Mechanically it's a thin HTTP client with a nice face. The node assembles a videoGen workflow with the discriminator happyHorse / v1.0 / textToVideo, POSTs it to Civitai's orchestration endpoint, then long-polls until the job reports succeeded. When it does, the returned MP4 is downloaded into ComfyUI's temp directory and surfaced as a native VIDEO output. The prompt you type goes straight to Civitai's fleet - that's the whole mechanism, so treat the prompt box like a public chat window rather than a local GPU.
Inputs and outputs that matter
- prompt (required) - describe the whole clip. Camera moves, subject, lighting, mood. Video models punish vague prompts, and cloud ones are no exception.
- resolution -
720por1080p, default1080p. - duration - 3 to 15 seconds, default 5. Longer clips cost more.
- seed - set it to lock a result you like; 0 (default) means random each run.
- aspect_ratio -
16:9,9:16,1:1,4:3,3:4. - api_config - leave it empty unless you're forcing a specific auth; it defaults to
CIVITAI_API_TOKENor your stored OAuth login.
Outputs are the pack standard: video (the clip), workflow_id (the orchestration job id), and raw_json (the full job response, handy when a run fails and you want the server's error verbatim).
Installing it
One install gets the whole Civitai pack. ComfyUI Manager → Custom Nodes Manager → "Civitai Comfy Nodes" (publisher civitai) → Install → restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
That's it - the only dependency is requests, and there are no model files to fetch.
Common issues
- "No credentials" on first run. Connect a Civitai Auth node or set
CIVITAI_API_TOKENin your environment. On a remote/headless ComfyUI, the env var is the way to go; interactive browser login won't work there. - It costs Buzz every run. Video generation is the expensive end of the Civitai cloud. Each node shows the workflow id and cost in its status; check it after a few runs so the bill doesn't surprise you.
- Early preview caveat. The pack is explicitly flagged as still under active development - APIs and node shapes can change without notice. Don't build a production workflow on it without pinning the version.
- Blank prompt is caught locally. The node validates required text fields before submitting, so an empty prompt fails fast with a clear message instead of a server 400.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| resolutionopt | COMBO | 1080p | 2 options: 720p, 1080p |
| durationopt | INT | 53–15 | — |
| seedopt | INT | 00–4294967295 | — |
| aspect_ratioopt | COMBO | 16:9 | 5 options: 16:9, 9:16, 1:1, 4:3, 3:4 |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |