Extend Music · V4.5PLUS
Longer tracks, one continue_at slider
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
A track that stops at 90 seconds when it wanted to be three minutes is the normal outcome of AI music generation, and this node is the fix for it. Feed it the ID of a Suno track you already generated, point it at the spot where the extension should begin, and Suno's V4.5PLUS model keeps going - same style, same mood, new material. The result lands back on your canvas as a regular ComfyUI AUDIO.
The ID is the gate
audio_id is required and it is not a URL - it's the provider's identifier for a track Suno itself made, the id field inside the response. You get it from a Generate Music node's raw_json output. Paste a link to your own MP3 here and it fails, because the extend endpoint has no idea what to do with one; that's what the Upload And Extend Audio node is for.
Practically, this makes Extend Music the second half of a chain: generate → grab the ID you like → extend it. Extending the result again is how people with patience and credits assemble a full-length song out of one good chorus.
How it runs
Remote request to KIE.ai, transport model ai-music-api/extend, V4_5PLUS as the version in the payload. The node then blocks - polling until the job completes or timeout_seconds (default 1200 seconds) expires - and decodes the returned audio locally with ComfyUI's own torchaudio/PyAV.
continue_at (default 60, in seconds) is the dial that decides everything. Set it at the tail of the original and you get a clean continuation; set it early and you're asking the model to re-perform the rest of the track, which sometimes rescues a mediocre middle section and sometimes destroys one.
prompt is required as a widget and serves as the extension's lyrics - unless lyrics is filled, which overrides it. style should mirror the source, because a mismatched style makes the join audible. instrumental defaults to false on this node, so an instrumental will get vocals unless you turn it on - and when you do, clear prompt and vocal_gender, since the docs say neither should be sent in instrumental mode.
Then the usual trim: negative_tags, variety, and the style_weight / weirdness_constraint / audio_weight nudges. duration and persona_model are V5.5/V6-family features per the docs, so they're decorative here.
Outputs
audio is the extended track - the output you actually want, ready for SaveAudio or a video pipeline. all_urls_json retains every URL the provider returned (there's usually more than one take; audio is the first), url is the primary link, task_id is KIE's job handle for the detail/inspection utility nodes, and raw_json carries the full payload - that's where the next audio_id lives if you're chaining extensions. credits_consumed and credits_left come back as floats and are also displayed on the node after the run.
Install
ComfyUI Manager → search ComfyUI-KIE-Nodes-Next. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart, then visit Settings → KIE.ai Nodes Next → Connection and paste your KIE.ai key. It's checked against KIE before being saved, stored in Comfy's user config instead of your workflow JSON, and shown as a masked fingerprint with a connected status. Headless installs can set KIE_API_KEY instead and skip settings entirely. The pack's dependency list is requests, Pillow, numpy, PyYAML - no models, no CUDA.
Where it bites
Extends cost credits and you can't preview first. Auditioning five different continue_at values is five paid generations. Decide the cut first, then run once.
V4.5PLUS is the discontinued rung. KIE's parameter docs group it with V4, V4.5, V4.5ALL, V5 and V5.5 as (Discontinued), while V6, V6_MINI and V6_WILD are current. This node is the right shape, on a version that's on its way out - the V6 sibling in the same folder is the one to build on.
Extension isn't arrangement. If the source is a loop, you'll get more loop. If you want a real second section with new instrumentation, you're better off either writing it yourself in a DAW or generating a fresh track and cross-fading.
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 | — |