Magic Hour
Run Sora 2, Veo 3.1, Kling 3.0 and Seedance inside ComfyUI, plus face swap and lip sync, via the Magic Hour API.
Nodes (4)
Two images in, one out
A hosted image generator that hands you Nano Banana Pro and Seedream as a tensor
Animate anything already in your graph, rendered on someone else's GPUs
Sora 2 and Veo 3.1 in your ComfyUI graph, with zero GPUs
ComfyUI × Magic Hour
Run frontier video models — Sora 2, Veo 3.1, Kling 3.0, Seedance, MiniMax H3 — inside your ComfyUI workflow, plus face swap and hosted image generation. No GPU needed; everything renders on Magic Hour's infrastructure.
These models can't run locally. This node puts them in your graph next to everything that can.
Nodes
| Node | In | Out | |---|---|---| | Magic Hour · Text to Video | prompt | video path | | Magic Hour · Image to Video | IMAGE + prompt | video path | | Magic Hour · Image Generator | prompt | IMAGE | | Magic Hour · Face Swap (Photo) | 2× IMAGE | IMAGE |
Video nodes write an .mp4 into your ComfyUI output folder and return its path.
Install
ComfyUI Manager: search "Magic Hour" → install.
Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/YOUR_GITHUB/comfyui-magic-hour
Restart ComfyUI.
API key
Free at magichour.ai/developer — no credit card, 400 credits on signup plus 100/day.
Paste it into the node, or better, set it once so you don't leak it when sharing workflows:
export MAGIC_HOUR_API_KEY="your_key_here"
Models
Labels in the dropdown tell you the plan you need and what each model is for.
Free plan
| Model | Credits/sec | Durations | Notes |
|---|---|---|---|
| wan-2.2 | 24 | 3–15s | physics & camera motion |
| ltx-2.3 | 24 | 1–30s | fastest, good for iterating |
| minimax-h3 | 24 | 1–30s | native audio, max 1080p |
Paid plans
| Model | Credits/sec | Durations | Notes |
|---|---|---|---|
| seedance-1.5 | 30 | 4–12s | smooth, precise motion |
| kling-2.6 | 36 | 5 or 10s | action & motion blur |
| kling-3.0 | 48 | 3–15s | best cinematic, up to 4k |
| veo3.1-lite | 48 | 4–56s | Veo quality, cheaper |
| seedance-2.0-mini | 96 | 4–15s | max 720p |
| veo3.1 | 96 | 4–56s | highest realism |
| veo3.1-audio | 96 | 4–56s | Veo + native audio |
| sora-2 | 120 | 4/8/12/24/36/48/60s | max 720p |
| seedance-2.0 | 144 | 4–15s | reference-to-video, max 720p |
| seedance-2.5 | 288 | 4–30s | best quality, max 720p |
Resolution
Gated by plan, not by model:
| Resolution | Plan | |---|---| | 480p | Free | | 720p | Creator+ | | 1080p | Pro+ | | 4k | Business |
If you pick something above your plan, the node steps down and retries rather than failing — you get a video and a note in the console.
Behaviour worth knowing
- Invalid durations are corrected, not rejected. Every model accepts a different set of clip lengths; ask Sora for 10 seconds and you get 8, with a console note.
- Cost is printed before each run, e.g.
wan-2.2 · 5s · 480p = ~120 credits. - Failed jobs are auto-refunded by Magic Hour — an error costs you nothing.
- Nodes block while polling. A 5s clip usually lands in about a minute; longer or higher-res takes more.
- Model list changes often. If something new appears in the web app, add it to
VIDEO_MODELSandMODEL_CONSTRAINTSinnodes.py.
Links
Docs · API reference · OpenAPI spec · Pricing
License
MIT