FL Hedra API
Turn a photo and an audio clip into a talking video
- image
- frames
- api_log
Hedra is one of the paid talking-avatar platforms - it comes up in the same breath as Runway, Kling, and HeyGen whenever people compare tools for making a still photo lip-sync to audio. FL_Hedra_API is Fill-Nodes' wrapper around that service: hand it a face, an audio file, and a text prompt, and it comes back with a lip-synced performance as ComfyUI frames. Like the rest of the pack's API nodes, no generation happens locally - you're paying Hedra's cloud, this node is just the plumbing.
How it works
You give it an image (the face), a path to an audio file, and a text_prompt describing the performance. The node calls Hedra's API, polls until the job finishes, downloads the resulting video, and extracts its frames back into ComfyUI as an IMAGE batch, plus a text log of what happened along the way. Aspect ratio and resolution are set up front so the output frames come back sized the way you want, rather than needing a resize pass afterward.
The inputs and outputs that matter
Required:
api_key- your Hedra API key. This is what gets billed, not your ComfyUI host.image- the face to animate.audio_file_path- a path on disk to an audio file (default shown isassets/audio.mp3), not an AUDIO socket. That's the detail that trips people up most - see below.text_prompt- describes the performance, e.g. "character talking on a white background."aspect_ratio(1:1/16:9/9:16) andresolution(720p/540p) - set the output framing up front.
Optional: duration_seconds (0 = let the audio decide) and seed.
Outputs: frames (the IMAGE batch you feed into a video-combine node) and api_log (a STRING - read this first if something looks wrong, since Hedra errors surface here rather than as a hard crash).
How to install it
Part of the ComfyUI_Fill-Nodes pack. In ComfyUI Manager, search ComfyUI_Fill-Nodes, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart ComfyUI. No local model download - you need a Hedra account and API key, which you get from Hedra directly, not from this repo.
Common issues & troubleshooting
audio_file_path wants a file path, not an audio input. Unlike some of the pack's other avatar-generation nodes (its Fal AI Kling avatar equivalent, for instance, takes a live AUDIO socket), this one expects a string path to an audio file already sitting on disk. If your audio is coming out of an upstream ComfyUI audio node, you need to save it to a file first and point this node at that path - wiring an AUDIO output directly in won't work because the input type is STRING.
Nothing comes back, no crash either. Check api_log before anything else. A bad key, an exhausted quota, or a rejected input (unclear face, audio format Hedra doesn't like) shows up as text there rather than as a ComfyUI error popup.
It's slow, and that's expected. This is a network round-trip: upload, Hedra's generation queue, then a video download and frame extraction on your end. A long pause is normal, not a hang - don't kill the run assuming it's stuck.
Clip length follows your audio, not a slider. With duration_seconds left at 0, the output length is driven by how long your audio file is. If you want a specific clip length, trim your audio to that length first rather than expecting a duration setting to cut it short.
Front-facing, clear portraits work best. As with every talking-avatar tool in this category, a blurry, tiny, or heavily-angled source photo gives a noticeably worse lip-sync than a clean front-on portrait.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| image | IMAGE | — | |
| audio_file_path | STRING | assets/audio.mp3 | — |
| text_prompt | STRING | character talking on a white background | — |
| aspect_ratio | COMBO | 1:1 | 3 options: 1:1, 16:9, 9:16 |
| resolution | COMBO | 720p | 2 options: 720p, 540p |
| duration_secondsopt | FLOAT | 0.0 | — |
| seedopt | INT | 00–4294967295 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| api_log | STRING | — |