FeiHou-API Video
Text-to-video via API — plus the last-frame trick that makes clips chain
- media
- video
- video_url
- last_frame
FeiHou-API Video calls api.fei-hou.net for a video generation - the Seedance line, the provider's own feihou-video-* models, and neighbours - and returns the finished clip as a native VIDEO. Nothing is sampled locally: no checkpoint, no VRAM ceiling, no open weights. ByteDance's Seedance models are API-only, so if you want one in your graph, calling it is the only door.
Two things make it worth reading past that. The video output is a real VIDEO, so it wires straight into SaveVideo, a combine node, or the pack's own Video Combine V2 with no adapter. And it also emits last_frame as an IMAGE, which is the cheap way to stitch clips: the last frame of shot one becomes the first-frame reference of shot two.
How it works
The node POSTs to the provider's /v1/videos endpoint, and most models answer with a task id rather than a result. Then it polls - every 5 seconds, up to 240 attempts, progress bar advancing as it waits. That budgets roughly 20 minutes per clip. On success it downloads the file, wraps it in ComfyUI's native video type, and shows an ephemeral preview in the node UI (the preview is for your eyes; it saves no separate file).
The last-frame output is belt and braces. If the model supports a tail image, return_last_frame asks for one and the node uses it. Otherwise - or if you left the toggle off - it decodes the final frame from the video it just downloaded, via PyAV. So the output is populated either way; the toggle is an optimisation.
The inputs that matter
Required: api_key, model, prompt. Enter the key, click Refresh models to pull the video catalog, write your prompt. The key is a plain widget, so it lives in the saved workflow JSON - clear it before sharing.
The optional knobs are all model-gated, and that's where people trip:
media- wildcard references: the FeiHou-API Media loader, or a nativeIMAGEbatch,VIDEO,AUDIO. This is how image-to-video models get an input. Limits differ per model;-multivariants are the ones taking image, video and audio together.resolution-defaultthrough480p,720p,1080p,native4k, depending on model.aspect_ratio-16:9,9:16,1:1,4:3,3:4,21:9, per model.duration-default,-1(auto, newer Seedance), or seconds. The ceiling is model-specific; not everything goes to 30.seed- Seedance only.generate_audio(default/on/off) - Seedance only, and billed as part of the generation.return_last_frame- the tail-image request above.
Audio and video references are sparse: most models reject them, and the node tells you before it spends a call.
Outputs: video → save or feed a preview node. video_url → the provider's link, useful but not an archive. last_frame → the next clip's reference, a thumbnail, an upscale source. The node is an output node, so it runs as a terminal even with nothing wired past it.
How to install it
ComfyUI Manager: search ComfyUI-FeiHou-Toolbox, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/FX-FeiHou/ComfyUI-FeiHou-Toolbox.git
Restart and hard-refresh the browser. No declared Python dependencies and no model downloads - that's the point of an API video node; the 8 GB checkpoint is somebody else's problem now.
Common issues
- "The API task timed out. Please check the provider task history." You blew the ~20-minute polling ceiling. Long 4K or queued jobs do this, and the job may have finished on the provider's side after your node gave up - check their history before re-spending the money.
- "does not support resolution=1080p. Supported: …" You switched models and kept a stale widget. The list in the error is authoritative; set widgets back to
defaultwhen you change models. - The pack won't import on a fresh ComfyUI. The v2.10.1 changelog describes a fix for an import failure on ComfyUI 0.33.1 in the video preview helper. Update if your checkout is older.
- Audio/video references rejected. Not every model is multimodal, and the gating is honest about it. A
-multivariant is the usual answer. - The bill. Video is where API generation gets genuinely expensive: the community reaction to Seedance arriving in ComfyUI was mostly sticker shock, and the fair reply was that this is simply the real price of the render. Test at low resolution and a short duration, confirm the prompt, then spend on the real take.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | Your FeiHou API key. It is sent only to api.fei-hou.net; do not share a workflow containing it. | |
| model | COMBO | Click Refresh models after entering the API key. | |
| prompt | STRING | — | |
| mediaopt | * | Connect FeiHou-API Media, or a native IMAGE batch, VIDEO or AUDIO. | |
| resolutionopt | COMBO | default | 8 options: default, 480p, 720p, 1080p, 2k, 4k, +2 |
| aspect_ratioopt | COMBO | default | 15 options: default, 1:1, 16:9, 9:16, 4:3, 3:4, +9 |
| durationopt | COMBO | default | 31 options: default, -1, 2, 3, 4, 5, +25 |
| seedopt | INT | -1-1–2147483647 | — |
| generate_audioopt | COMBO | default | 3 options: default, on, off |
| return_last_frameopt | BOOLEAN | false | Ask supported models for a tail image. If none is returned, the last frame output is extracted from the video. |
| media_filesopt | STRING | [] | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| last_frame | IMAGE | — |