Extend Music · V4
The four-minute legacy path, still wired up
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
V4 is the original of the Suno line the pack exposes - "improves vocal quality, max 4 min", in KIE's own description - and this node continues a V4 track that already exists. It's here because the API page still documents the version and the pack builds a node for every documented model version. Whether you should use it is a different question, and the answer is mostly "only if you're already in V4".
How it works
The node composes an extend request and submits it to KIE.ai under the transport model ai-music-api/extend, with V4 as the version inside the payload. It then holds the queue while it polls for the result, waiting up to timeout_seconds (default 1200 seconds) before giving up. The finished audio is downloaded and decoded into a ComfyUI AUDIO object locally, using ComfyUI's own torchaudio or PyAV.
The inputs
audio_id is required and is a Suno track identifier, not a file - the id value from a previous generation's raw_json output. You can't point this at your own MP3; the Upload And Extend Audio node is the one that takes a URL instead. Practically, this node runs downstream of a Generate Music node and nowhere else.
continue_at (default 60 seconds) is where the extension starts. Land it at the end of the original. Land it earlier and you've asked the model to redo the rest, which is a reasonable trick for a weak middle section and a bad idea if you liked it.
prompt is required as a widget and serves as lyrics for the new section, unless lyrics is filled - lyrics wins. style should match the source, and here V4's tighter budget matters: the docs cap V4's style at 200 characters, against 1000 for the later versions. Long, stacked style prompts will get truncated or rejected, so be terse. instrumental defaults to false on this node, so an instrumental source will get vocals unless you turn it on - and if you do, clear prompt and vocal_gender, since the docs say neither should be sent in that mode.
negative_tags, variety and the style_weight / weirdness_constraint / audio_weight dials round it out. duration and persona_model are scoped to V5.5/V6-family versions per the docs, so they do nothing on V4.
Outputs
audio is the extended track. all_urls_json holds every result URL the response contained (more than one take is normal; audio is the first), url is the primary link, task_id is KIE's job handle, and raw_json is the whole payload - including the new track's id, which is how you'd extend again. credits_consumed and credits_left report cost and balance, also rendered on the node after each run.
Installation
Through ComfyUI Manager, search ComfyUI-KIE-Nodes-Next; or:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart ComfyUI. The pack installs four small Python packages (requests, Pillow, numpy, PyYAML) and downloads no model files at all. Set your KIE.ai key once in Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated before being saved, stays out of your workflow JSON, and appears as a masked fingerprint; KIE_API_KEY in the environment overrides it for headless setups.
Read this before you build on it
V4 is the oldest and most constrained rung. KIE's parameter docs list V4, V4.5, V4.5PLUS, V4.5ALL, V5 and V5.5 all as (Discontinued), with V6/V6_MINI/V6_WILD current. V4 additionally has the 4-minute track ceiling and the 200-character style limit. If you're choosing a version today, this isn't the one.
No cross-version extending. A V4 audio_id belongs to a V4 track. Extending a V6 generation from this node is not a thing.
Credit-burning loop. Chaining extensions is the fastest way to spend real money in this pack, and the joins are only audible after you've paid. Decide the extend point, run once, listen, then decide again.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_id | STRING | e231****-****-****-****-****8cadc7dc | Unique identifier of the audio track to extend. Required for all extension requests. |
| prompt | STRING | Extend the music with more relaxing notes and a gentle bridge section | Lyrics for the extended audio. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`audio_id`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`. |
| styleopt | STRING | Classical | Music style specification for the extended audio. Optional. - Not required. Source audio (`audio_id`) is enough to generate. - Character limits by model: - **V4**(Discontinued): Maximum 200 characters - **V4_5 & V4_5PLUS**(Discontinued): Maximum 1000 characters - **V4_5ALL**(Discontinued): Maximum 1000 characters - **V5_5 & V5**(Discontinued): Maximum 1000 characters - **V6, V6_MINI, and V6_WILD**: Maximum 1000 characters - Should typically align with the original audio's style for best results. |
| titleopt | STRING | Peaceful Piano Extended | Title for the extended music track. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames. |
| continue_atopt | FLOAT | 60.00-10000–10000 | The time point (in seconds) from which to start extending the music. - Value range: greater than 0 and less than the total duration of the generated audio. - Specifies the position in the original track where the extension should begin. |
| negative_tagsopt | STRING | Heavy Metal, Upbeat Drums | Music styles or traits to exclude from the extended audio. Optional. Use to avoid specific undesired characteristics. |
| vocal_genderopt | COMBO | m | Vocal gender preference. Optional. 'm' denotes a male voice, and 'f' denotes a female voice. In practice, this parameter only influences the probability and does not guarantee strict adherence to the gender instruction. This parameter is not required if `instrumental` is set to `true`. |
| style_weightopt | FLOAT | 0.650–1 | Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.650–1 | Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places. |
| audio_weightopt | FLOAT | 0.650–1 | Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places. |
| 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 | The persona model is only applicable to the V5 (deactivated), V5.5 (deactivated), V6, V6_MINI, and V6_WILD models. |
| lyricsopt | STRING | [Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fall | Lyrics for the extended audio. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`audio_id`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`. |
| varietyopt | INT | 10–4 | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, 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 |
| instrumentalopt | BOOLEAN | false | Indicates whether it is an instrumental track. If true, passing the `lyrics`, `prompt`, and `vocal_gender` parameters is prohibited. |
| 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 | — |