Magic Hour · Text to Video
Sora 2 and Veo 3.1 in your ComfyUI graph, with zero GPUs
- video_path
The video that blew up your feed this morning was probably Sora 2, Veo 3.1, or Kling. None of those have open weights. You cannot download them, at any VRAM, ever. What Magic Hour · Text to Video does is sit in your ComfyUI graph, take a prompt, and hand the actual generation to Magic Hour's hosted infra - then drop the finished .mp4 back into your output folder like a local sampler had made it. No GPU needed. No model download. No local equivalent for the paid-tier models, because there isn't one to download.
The free-plan models are where it gets honest: wan-2.2 and ltx-2.3 are open-weights models you could run locally if you own a serious card (Wan 2.2 is the community's local quality king; LTX is the speed pick). So the node's real value splits cleanly. You use it because you have no GPU, or because you want Veo/Sora/Kling/Seedance - models local can never touch. If you have a chunky rig and only want Wan, run Wan locally; it's free after the electricity. This is the standard cloud-vs-local tradeoff, and the "local or nothing" crowd will absolutely side-eye you for it. Doesn't make it wrong.
How it works
Your prompt goes to api.magichour.ai/v1/text-to-video. The node then blocks and polls every few seconds until the job completes - the progress bar crawls up and parks at 99%, because Magic Hour reports "queued / rendering / complete" but not a percentage. When it's done, the .mp4 is streamed into your ComfyUI output folder as magichour_t2v_<timestamp>.mp4 and the file path is returned.
Budget for the wait. A 5-second clip usually lands in about a minute; longer or higher-res takes more. And because the node blocks, whatever's behind it in your queue just sits - plan around it.
The inputs that matter
- model - the dropdown label is doing triple duty: it tells you the plan you need (free vs paid), what the model is good at, and roughly how expensive it is.
sora-2costs 5xwan-2.2per second for a reason. - end_seconds - pick the clip length. Every model accepts a different set; ask Sora for 10 seconds and it silently gives you 8 with a console note.
- aspect_ratio -
16:9,9:16, or1:1. - resolution -
480p (free)up to4k (business). This is gated by your plan, not the model. - audio - a boolean worth flipping on only for the models with native audio (
minimax-h3,veo3.1-audio). Native audio was long the one thing open video couldn't match, and even MiniMax H3's answer to it is a very recent arrival - worth paying for when the scene needs it. - api_key - leave blank if you set the env var (below).
The single output is video_path (a STRING), and this is a terminal/output node - ComfyUI runs it even with nothing wired downstream. Feed the path to whatever plays or loads .mp4 files in your workflow, or just open it from the output folder.
Installing and your first run
ComfyUI Manager: search "Magic Hour" → install. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/RhythmP28/comfyui-magic-hour
Restart ComfyUI. Dependencies are just requests, pillow, and numpy - nothing heavy, nothing to download.
You need an API key: free at magichour.ai/developer, no credit card, 400 credits on signup plus 100/day. Paste it into the node, or set it once so you don't leak it when you share a workflow:
export MAGIC_HOUR_API_KEY="your_key_here"
Where people get burned
- Cost is printed before every run - e.g.
wan-2.2 · 5s · 480p = ~120 credits. Watch the log line; the free daily top-up goes fast if you leave the model onsora-2. - Paid model on a free account gets you a clear error naming the free models, not a cryptic 422.
- Resolution above your plan doesn't fail - the node steps down and retries, with a note in the console. You get a video, just shorter/shorter-res than you asked. Similarly, invalid durations are corrected, not rejected.
- Out of credits raises an explicit "out of credits" error pointing you to the top-up page.
- Failed jobs are auto-refunded, so an error costs you nothing.
The model list is a snapshot that goes stale - Magic Hour rotates models often. If a model shows up in the web app but not the dropdown, that's the pack lagging behind, not you doing it wrong.
The verdict: if you want closed frontier video inside ComfyUI and don't own a datacenter, this is one of the few doors. Just keep one eye on the credit counter - and remember every prompt leaves your machine.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | wan-2.2 · free · physics & camera motion | 13 options: wan-2.2 · free · physics & camera motion, ltx-2.3 · free · fastest, best for iterating, minimax-h3 · free · native audio, seedance-1.5 · paid · smooth, precise motion, kling-2.6 · paid · action & motion blur, kling-3.0 · paid · best cinematic, up to 4k, +7 |
| end_seconds | COMBO | 5 | 36 options: 1, 2, 3, 4, 5, 6, +30 |
| aspect_ratio | COMBO | 16:9 | 3 options: 16:9, 9:16, 1:1 |
| resolution | COMBO | 480p (free) | 4 options: 480p (free), 720p (creator+), 1080p (pro+), 4k (business) |
| audio | BOOLEAN | false | — |
| api_keyopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |