Generate Music · V5
The legacy Suno tier, and when it's still the right pick
- image_urls
- audio_1
- audio_2
- audio_3
- video_1
- video_2
- video_3
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
KIE's own documentation calls V5 discontinued. So why does this node exist, and why would you touch it?
Two reasons, both honest. First, reproducibility: if you generated something on V5 last year and you want more of it, "use the newer model" is not an option - the newer model is a different voice. Second, this node is what an existing workflow already points at. KIE keeps the tier callable, the pack generates a node for every model version it finds, and so you get a node named Generate Music · V5 sitting next to the V5.5 and V6 ones. For anything new, use the V6 node. For keeping old work alive, this is it.
The wider context is unchanged: local music (ACE-Step) is where you go for free instrumental work and experimentation, the API is where you go when vocals need to hold up. Every call costs credits and leaves the machine.
How it works
The pack generates its node classes from KIE's official API documentation at startup, one node per documented model version, so V5 is baked into this class - there's no model dropdown to accidentally change, and no way to upgrade the tier by editing a widget. The node builds the documented request body, submits it to KIE's task endpoint (envelope model ai-music-api/generate, inner model V5), polls KIE's record-info endpoint every couple of seconds with backoff, then downloads the resulting audio and returns it as a ComfyUI AUDIO. Failures raise with the task id and the provider's message.
The inputs that matter
Three required, and they set the mode:
- custom_mode - default
truefor detailed control,falsefor simplified. - instrumental - default
true. Per the docs: in custom mode with this true, onlystyleandtitleare required; with it false,style,titleandpromptare required andpromptis used as exact lyrics. - prompt - exact lyrics in custom mode, a loose creative brief in non-custom mode.
Optional, and mostly custom-mode-only: style (this tier's docs cap it at 1000 characters), title (80 characters), negative_tags, vocal_gender, style_weight, weirdness_constraint, audio_weight, persona_id / persona_model, lyrics (takes priority over prompt), variety (0–4), plus the reference sockets image_urls (IMAGE), audio_1/2/3 and video_1/2/3 - the pack uploads those media inputs itself, which is why there's no URL plumbing in sight.
One version-specific caveat worth stating plainly: the duration widget is present on this node, but the docs only bless it for V5.5, V6, V6_MINI and V6_WILD. On the V5 node it's documented as not applicable. Leave it alone and let the model decide the length.
Outputs: audio, url, all_urls_json (generation usually returns more than one track - this is where the full set lives), task_id, raw_json, credits_consumed, credits_left. The two credit floats are also rendered on the node after a run, which is the cheap way to see what a tier costs before you commit a session to it.
A trap the pack handles for you
If you connect an IMAGE to image_urls and leave custom_mode at its default, KIE rejects the request - but only after your file has been uploaded. The pack catches this: on Generate Music it forces non-custom mode locally, strips the fields that are only valid in custom mode (duration, style, title, negative_tags, the weight/vocal fields, persona_id, instrumental), and logs what it removed. Useful, but it means the payload isn't literally what your widgets say. Watch the console.
Installing
ComfyUI Manager, search "KIE Nodes Next". The README describes the registry listing as prepared rather than shipped, so if Manager has nothing:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart and set the key once at Settings → KIE.ai Nodes Next → Connection. It's validated before it replaces a working key, only a masked fingerprint reaches the frontend, and KIE_API_KEY overrides it for headless installs. Four small dependencies, no torch, no model files.
Where people get burned
- Expecting modern features on a discontinued tier.
durationdoesn't apply here, and the tier's character is what it is. - Mode mismatch - custom mode plus
instrumentaltrue plus lyrics gets you an instrumental. Read the matrix. - No key configured raises an explicit error pointing at the settings page.
- Mixed-release installs are refused at import. Version and generated-node build must agree; if they don't, delete the folder and reinstall.
- Two results per call.
audiois the first; the rest are inall_urls_json.
If you're maintaining an old workflow, keep this node exactly as it is and don't retune it - changing the tier changes the output, which defeats the point of using the old node at all.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A calm and relaxing piano track with soft melodies | A description of the desired audio content. Optional. - Custom mode (`custom_mode=true`): When provided, the prompt is used strictly as lyrics and sung in the generated track. Character limits by model: - V4: Maximum 3000 characters - V4_5, V4_5PLUS, V4_5ALL, V5_5, V5: Maximum 5000 characters - Non-custom mode (`custom_mode=false`): When provided, the prompt serves as the core idea. Lyrics are generated automatically based on it and do not strictly match the input. Maximum 3000 characters. `prompt` is not required. In non-custom mode, provide at least one of `image_urls`, `video_urls`, `audio_urls`, `style`, or `lyrics`. In custom mode, provide at least one of `style`, `lyrics`, or `negative_tags`. Generation is rejected if all related inputs are empty. |
| custom_mode | BOOLEAN | true | Determines whether advanced parameter customization is enabled. - If `true`: Allows detailed control - If `false`: Simplified mode |
| instrumental | BOOLEAN | true | Determines whether the audio should be instrumental (no lyrics). - In Custom Mode (`custom_mode: true`): - If `true`: Only `style` and `title` are required. - If `false`: `style`, `title`, and `prompt` are required (`prompt` is used as the exact lyrics). - In Non-custom Mode (`custom_mode: false`): - If `true`: Only `style` and `prompt` are required. - If `false`: `style`, `prompt`, and `lyrics` are required (`lyrics` is used as a lyrics attachment and can be used together with the audio description in `prompt`). |
| styleopt | STRING | Classical | Music style specification for the generated audio. - Character limits by model: - **V4** (Discontinued): Maximum 200 characters - **V4_5 and V4_5PLUS** (Discontinued): Maximum 1000 characters - **V4_5ALL** (Discontinued): Maximum 1000 characters - **V5_5 and V5** (Discontinued): Maximum 1000 characters - **V6, V6_MINI, and V6_WILD**: Maximum 1000 characters - Common examples: Jazz, Classical, Electronic, Pop, Rock, Hip-hop, etc. |
| titleopt | STRING | Peaceful Piano Meditation | Title for the generated music track. - Required in Custom Mode (`custom_mode: true`). - Max length: 80 characters. - Will be displayed in player interfaces and filenames. |
| negative_tagsopt | STRING | Heavy Metal, Upbeat Drums | Music styles or traits to exclude from the generated audio. Optional. Use to avoid specific styles. |
| vocal_genderopt | COMBO | m | Vocal gender preference. Optional. Use `m` for male and `f` for female. This parameter is only effective when `custom_mode` is true. In practice, it only increases probability and cannot guarantee male/female voice instructions are followed. |
| style_weightopt | FLOAT | 0.650–1 | Only available when Custom Mode (`custom_mode: true`) is enabled. Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.650–1 | Only available when Custom Mode (`custom_mode: true`) is enabled. Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places. |
| audio_weightopt | FLOAT | 0.650–1 | Only available when Custom Mode (`custom_mode: true`) is enabled. Relative weight of audio features. Optional. Range 0–1, up to 2 decimal places. - `audio_weight` is not supported when there are no vocals |
| persona_idopt | STRING | persona_123 | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona](https://docs.kie.ai/suno-api/generate-persona) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice](https://docs.kie.ai/suno-api/suno-voice-generate) endpoint. |
| persona_modelopt | COMBO | style_persona | Persona model. Only available for V5 (Discontinued), V5.5 (Discontinued), V6, V6_MINI, and V6_WILD. |
| durationopt | FLOAT | 20.0010–360 | Audio duration. Optional; only valid when `custom_mode` is true and the model is V5_5 (Discontinued), V6, V6_MINI, or V6_WILD. |
| image_urlsopt | IMAGE | — | |
| varietyopt | FLOAT | 1.000–4 | Only available when Custom Mode (`custom_mode: true`) is enabled. Controls the diversity and stylistic variation of generated results. Optional. Range 0–4, integer, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly |
| lyricsopt | STRING | Lyrics for the generated audio. Optional. - V6: Maximum 5000 characters. - When `custom_mode=true`, `lyrics` is used as lyrics first; if `lyrics` is not provided, `prompt` is used as lyrics. - When `custom_mode=false`, `lyrics` is used as a lyrics attachment and can be used together with the audio description in `prompt`. | |
| audio_1opt | AUDIO | — | |
| audio_2opt | AUDIO | — | |
| audio_3opt | AUDIO | — | |
| video_1opt | VIDEO | — | |
| video_2opt | VIDEO | — | |
| video_3opt | VIDEO | — | |
| 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 | — |