Extend Music · V6_MINI
Chaining a Suno track past its natural ending
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
What it is
Suno tracks like to stop when they feel like it. KIE_Next_V6_MINI_9dbf733f is the node that says "keep going" - it continues a track by its Suno audio_id rather than by uploading a file, which is the important structural difference from the Upload And Extend nodes beside it in the menu.
That distinction is the whole reason this node exists in a ComfyUI graph. If the track you want more of came out of Generate Music, you don't have it as a file yet - you have a task result. This node takes the identifier and asks KIE to carry on from a point you choose, using the fast V6_MINI tier. Two extensions in sequence is how you get from a 90-second sketch to something that can hold a three-minute edit.
How it works
The node submits an extend job to KIE's task API and polls for completion on its own - 2.5 seconds initially, backing off toward 15 - inside a timeout_seconds window that defaults to 1200 seconds and can go to 7200. Success means the result gets downloaded and decoded into ComfyUI's AUDIO type, so whatever comes next in the graph treats it as ordinary audio. The V6_MINI model string is sent inside the request; the outer job envelope carries KIE's market name for the extend endpoint. Cost lands on your KIE credits and is reported back to the node.
There's no local model here and no VRAM cost. What there is: your prompts and ids go to KIE, and the audio you get back is streamed to you from their storage.
Inputs that matter
audio_id- required, and the one field you have to go find. It's the track id from a previous Suno generation, not the task id: open the earlier node'sraw_jsonoutput (orall_urls_jsoncontext) and copy the track'sid. Getting the task id instead is the classic wrong-value mistake.prompt- lyrics for the extended section when you're extending a vocal track. It's a required widget, though the docs treat the source id as enough on its own.continue_at- required-ish in practice, defaulting to 60 seconds. This is where the extension starts, and it must sit inside the original track - greater than 0 and less than the track's total length. Set it at the exact end and you're inviting a seam; set it a little before the end and the model has material to blend with.instrumental- optional, and here it defaults to false, the opposite of the Upload And Extend nodes. If you're extending an instrumental track, turn it on deliberately; when it's true the docs say not to passlyrics,promptorvocal_genderat all.style- optionally steer the new section, though the docs note it should usually match the original for the seam to sell.title,negative_tags,lyrics,variety- labelling, exclusion, explicit lyrics (which overrideprompt), and stylistic spread from 0 to 4.style_weight,weirdness_constraint,audio_weight- all defaulting to 0.65. For extension work,audio_weightand a restrainedweirdness_constraintare what keep the new section sounding like the same band.persona_id+persona_model- carry a saved style or voice persona into the extension.
Outputs
audio is the extended track, ready for Save Audio or a video mux. url is the primary result URL. all_urls_json is every URL the provider returned - worth reading, since these endpoints return more than one take and the socket only carries the first. task_id matters more here than on most nodes: it's the handle for chaining another extension or editing the result further. raw_json is the full response, and credits_consumed / credits_left report the spend.
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. The dependency list is requests, Pillow, numpy, PyYAML - no models to download, nothing to fit in VRAM. Windows users can run the one-click installer from the repo's dist/ folder instead. ComfyUI Manager listing is the pack's stated direction (it ships registry metadata under publisher felipeosilva), but the clone is the route that works today.
Set the key once in Settings → KIE.ai Nodes Next → Connection; it's validated before replacing anything saved, and KIE_API_KEY wins if you're on a headless server.
Where it goes wrong
Wrong id. Task id instead of track id, or an id from a different account - you'll get a failed job, not a helpful message.
continue_at past the end. Documented as needing to be inside the track's duration.
Timing out mid-flight. The provider often finishes after your patience does. Re-poll task_id with KIE • Wait for Task before spending credits on a resubmit.
Seams. Not an error, just the physics of it: overlap the extension point slightly rather than starting at the last sample of the original.
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 | — |