Generate Music · V6_MINI
Generate Music · V6_MINI is the whole Suno prompt-to-song node, references included
- 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
The one you probably want first
If you're going to learn a single node from this family, learn this one. KIE_Next_V6_MINI_e5ffe3de is prompt-to-song on KIE's V6_MINI tier, and unlike its Cover/Extend/Add-Vocals siblings it doesn't need source audio - just a description, a style and a title, and it also accepts image, audio and video references as real ComfyUI sockets.
Where the other nodes in this pack shine is stitching one specific job onto audio you already have. This one is the workhorse underneath: a song from nothing, in a graph, so the output can flow straight into a video pipeline instead of living in a browser tab. That's the argument for API music nodes in the first place - generating the track is only half the job, and having it already inside ComfyUI as an AUDIO object is the other half. Local models cover a lot of this ground free; clean vocals and lyric phrasing are still the hosted models' advantage.
The mode matrix you have to understand
Two required booleans decide almost everything, and the tooltip lays it out:
custom_mode= true (the default) means you're in control:styleandtitlecarry the song, and the extra weights apply.instrumentalthen splits it - true needs onlystyleandtitle; false additionally needsprompt, which is sung verbatim as your lyrics.custom_mode= false is the simplified mode:promptbecomes a description and lyrics get written for you. Theninstrumentaltrue needsstyle+prompt, and false needsstyle,promptandlyrics, wherelyricsacts as an attachment alongside the description inprompt.
Most of the "why did it ignore my lyrics" and "why is my description being sung" confusion is just these two toggles disagreeing with your expectations. There's one automatic behaviour worth knowing: image references are only legal when custom mode is off, and the pack detects that combination and switches custom_mode to false for you locally, dropping the now-invalid custom-only fields before the request goes out. It prints a line about it rather than failing remotely, which is the right call.
The rest of the inputs
style, title, negative_tags - the genre, the label, and the exclusion list. duration - 10 to 360 seconds, and only valid in custom mode. persona_id + persona_model - apply a saved Suno style or voice persona. style_weight, weirdness_constraint, audio_weight, all 0.65 - how strictly the style holds, how experimental it gets, and how the audio features are weighted (that last one does nothing on vocal-free output, per the tooltip). variety - 0 to 4, from "same style twice" to "unreasonably varied." vocal_gender - a probability nudge only, in custom mode only.
And the references: image_urls takes a normal IMAGE socket (batches welcome), while audio_1/audio_2/audio_3 and video_1/video_2/video_3 each take one native audio or video input. Anything you connect gets uploaded to KIE automatically and swapped in as a URL - no copy-pasting links.
Outputs
audio - the finished track, native ComfyUI audio. url - the first result URL. all_urls_json - every URL in the response, and your route to the second take, since only the first reaches the socket. task_id - the job handle. raw_json - the full provider payload, which is where you look up the track id that Extend Music needs. credits_consumed and credits_left - the spend, also drawn on the node after the run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next && pip install -r requirements.txt
Restart ComfyUI. Dependencies are requests, Pillow, numpy and PyYAML - no model files, nothing to download, zero VRAM. Windows users have the one-click installer in the repo's dist/ folder. ComfyUI Manager support is the pack's stated direction (registry metadata ships under publisher felipeosilva); the clone is the route that works today.
Then paste your KIE.ai API key once in Settings → KIE.ai Nodes Next → Connection - validated before it replaces a working key, shown only as a masked fingerprint. Servers can use KIE_API_KEY, which takes priority.
Failures worth expecting
The node waits for the job by polling, 2.5 seconds rising to about 15, until timeout_seconds (1200 by default) expires. If it times out, the task usually isn't dead - check the task_id with KIE • Wait for Task before resubmitting and paying for a second run. Provider failures surface with KIE's reason in raw_json; content-filter rejections on explicit lyrics are the common one. Empty-reference combinations get rejected upstream too: in non-custom mode you need at least one of the reference inputs, style, or lyrics, and in custom mode at least style, lyrics or negative tags.
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 | — |