Generate Music · V4.5PLUS
Personas, weights, and eight-minute songs
- 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
V4.5PLUS is the top of the V4.5 family - the same Suno generation endpoint as its two siblings, on the version KIE describes as "richer sound, new ways to create, max 8 min". If you're going to spend API credits on a song rather than a loop, this is the node in the legacy row worth picking.
The context that matters: song generation with clean vocals is still the job local models haven't closed. The open answer, ACE-Step, is genuinely compelling on instrumentals and noticeably weaker once someone has to sing. So the API route is a defensible choice here, not just laziness.
What the node does
It builds a Suno request and ships it to KIE.ai under the transport model ai-music-api/generate, with V4_5PLUS as the model version inside the payload. Then it blocks the queue, polling the record-info endpoint every few seconds until the job succeeds or timeout_seconds (default 1200 - twenty minutes) runs out. The returned MP3 is downloaded and decoded locally into a standard ComfyUI AUDIO, using ComfyUI's own torchaudio/PyAV. Nothing runs on your GPU and no weights are involved.
The switches to understand first
custom_mode (default true) changes what your text means: in custom mode prompt is taken as exact lyrics; turn it off and the same words become a description, with Suno writing its own lyrics.
instrumental (default true) removes the vocal. In custom mode with it on, style and title are all the endpoint needs; turn it off and your lyrics get sung.
Non-custom mode is also the only mode where the reference sockets do anything: an IMAGE, up to three AUDIO inputs (audio_1–audio_3), up to three VIDEO inputs (video_1–video_3). The pack handles the upload for you - connect a track and it gets hosted and passed as a URL.
Then the dials, which only apply in custom mode: style_weight, weirdness_constraint, audio_weight (all 0–1, all mild), and variety. persona_id and persona_model are the interesting pair - a persona is a saved style/voice fingerprint you apply to new generations, and you create one with the pack's Generate Persona node.
Outputs
audio is the track - into SaveAudio, or into a video pipeline if you're scoring a render. all_urls_json keeps every URL the response returned; Suno usually produces multiple takes and only the first becomes audio, so this is where the alternates live. url, task_id and raw_json handle linking and forensics - and raw_json is also where you find a track's id, which is what the Extend Music nodes need. credits_consumed and credits_left come back as floats and are printed on the node after every run.
Installing
ComfyUI Manager → search ComfyUI-KIE-Nodes-Next. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart ComfyUI, then paste your key in Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. The pack validates it against KIE before replacing a working key, keeps it in Comfy's user config instead of the workflow, and shows a masked fingerprint with a connected status. Dependencies: requests, Pillow, numpy, PyYAML - no checkpoints and no CUDA.
The traps
Feeding an image silently rewrites your mode. Whenever image_urls is connected, the pack forces custom_mode=false and strips the custom-only fields (style, title, duration, vocal_gender, style_weight, persona_id, instrumental, variety…) before submitting, with a console message explaining why. It's a guard against a provider-side rejection, but it means your carefully set style disappears the moment you plug in a reference image.
Several widgets are no-ops on this version. duration and persona_model are documented as V5.5/V6-family features. The tooltips say so; nobody reads them.
persona_id defaults to persona_123, a placeholder. Empty optionals are dropped before submission, so clearing it is safe and probably correct.
V4.5PLUS is legacy. KIE tags it (Discontinued) along with V4, V4.5, V4.5ALL, V5 and V5.5; V6, V6_MINI and V6_WILD are the live versions. This node is the right shape on a model version that's on its way out.
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 | — |