Add Instrumental to Music · V4
The label says instrumental, the fields say sound effects
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Read the inputs before you trust the name. This node is filed as Add Instrumental to Music · V4, but the fields it actually gives you are sound_loop, sound_tempo, sound_key and grab_lyrics - that's a Suno sounds request, not an "add a backing track to my song" request. KIE's own documentation for this endpoint opens by describing it as a Sounds Task, and the node is generated from that page verbatim. So plan for what it does, not what it's called.
What it is
KIE_Next_V4_37ca60bf comes from the KIE Next pack, which builds a ComfyUI node for each KIE.ai Market operation and each documented provider version. The · V4 in the name is the pinned provider version - there's no model dropdown, the version is baked into the node class. So this is the V4 rung of a ladder whose other rungs (V4_5, V4_5ALL, V6, V6_MINI, V6_WILD) are separate nodes in the same menu.
And "V4" is the old rung. KIE's model note on the same docs page now says to use V6, V6_MINI or V6_WILD. Reach for this one only if you need to reproduce something you made on V4.
How it works
The pack's standard transport: assemble the documented request, create the task, poll until timeout_seconds (1200 by default), download the first result URL into a ComfyUI AUDIO object, and report credits spent on the node. The prompt leaves your machine and Suno renders it - which is the only option for this class of model. There's no open-weights Suno, and even the local competition that's genuinely good at instrumental music - ACE-Step, which the community rates as "really compelling" for instrumental work - is a different sound and a different workflow.
Where this fits in a real graph: you've rendered a clip and it's silent, or you need an ambience bed under a product shot. A short generated loop plus a video assembly node beats scrolling a sample library.
The inputs that matter
prompt is required and capped at 500 characters - short. Describe the sound, not the song: "warm vinyl crackle and distant rain on a tin roof, no music". The pack's default is literally sint, KIE's example placeholder. Replace it first thing.
sound_loop asks for a seamless loop. Turn it on for anything that has to repeat under a longer clip; leave it off for a one-shot effect.
sound_tempo is BPM, 1–300, and omitting it lets the model choose. Set it when the sound has to sit on a beat - 90-ish for something languid, 120+ if it's meant to drive.
sound_key is a 25-option enum, Any plus the minor and major keys. Same advice: leave it on Any unless you're matching an existing track, in which case the key matters and this is the field that saves you pitching in post.
grab_lyrics asks the provider to call back for lyric subtitles after completion. It's on a sounds task, so treat it as a curiosity unless you're generating something vocal.
Outputs
audio is a ComfyUI AUDIO object - wire it to ComfyUI's Save Audio or Preview Audio, or better, into the pack's KIE • Assemble Video + Music, which takes up to four VIDEO takes plus one AUDIO track, can duck the music under detected dialogue, and returns a VIDEO you can drop into KIE • Save Video.
url is the remote file (not an archive), all_urls_json holds all result URLs, task_id feeds KIE • Reuse Completed Image/Video/Audio if you need the same result again without paying twice, raw_json is the truth when something goes sideways, and credits_consumed/credits_left are your receipt.
It's not an output node, so nothing executes until the audio is consumed downstream. This trips up more people than any setting on the node.
Installing it
ComfyUI Manager → search "KIE.ai Nodes Next", or:
comfy node install kie-ai-nodes-next
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart, then Settings → KIE.ai Nodes Next → Connection and paste your KIE.ai API key. It's validated before it replaces a saved key, then displayed only as a masked fingerprint. Environment-variable keys are not supported by design.
Dependencies: requests, Pillow, numpy, PyYAML. No model downloads, no VRAM.
Where people get burned
The name, mostly. People install this expecting to feed it a music track and get the same track back with an instrumental bed, and then wonder why there's no audio input socket. There isn't one - the schema has no audio input at all. If that's your job, you want the music-generation or section-replacement nodes instead.
Second: the 500-character cap. Long descriptive prompts are the first thing everyone writes and the pack's local preflight will stop you before upload rather than after. Right-click → KIE Next · Check inputs & model controls shows the cached documented limits for free.
Third: timeout_seconds at 1200 is generous for a short sound, but if you're queuing a batch during a busy hour and jobs stall, raise it rather than re-submitting paid tasks.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | sint | Description of the sound (max 500 characters). |
| sound_loopopt | BOOLEAN | false | Whether the generated sound loops seamlessly. |
| sound_tempoopt | INT | 1661–300 | Tempo in BPM (1–300). Omit for automatic tempo. |
| sound_keyopt | COMBO | Any | Musical key. Default "Any" (automatic). |
| grab_lyricsopt | BOOLEAN | false | Whether to capture the lyrics subtitles Will the interface be called after completion to obtain the lyrics subtitles? |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |