Extend Music · V4.5ALL
Continue a track you generated, not a track you own
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Extend Music is the "and then what?" node. You generated a track, liked 90 seconds of it, and the thing just stops. This node asks Suno's V4.5ALL model to carry on from a point you choose, and returns the result as a normal ComfyUI AUDIO object you can save, loop, or feed into a music video.
The one thing that trips everyone
The required input is audio_id, and it is not a URL. It's the provider's internal ID for a track Suno made - the kind of string that shows up in the API response as id. So this node is always the second half of a chain: generate first, then extend. Hand it an MP3 link and it fails, because the endpoint genuinely can't read one. Extending your own existing audio is a different node (Upload And Extend Audio) on a different endpoint.
Where do you find the ID? Generate Music returns raw_json, which contains the provider's full response with an id per take. That's your copy-paste source. It's a small friction the pack doesn't hide, and it's the reason a lot of people think this node is broken when it's actually just mis-fed.
What it does under the hood
A remote call. The node builds the extend request, submits it to KIE.ai under the transport model ai-music-api/extend, and passes V4_5ALL as the version inside the payload. Then it blocks - polling the record-info endpoint roughly every 2.5 seconds until the job resolves or timeout_seconds (default 1200 seconds) expires.
continue_at is the dial that matters: the second at which the extension begins, default 60. Set it at the tail of the original. Set it early and you've asked for a re-write, which Suno will happily attempt.
prompt is used as the extension's lyrics, but only if lyrics is empty - lyrics wins when both are filled. style should mirror the source track, or the seam will be obvious. instrumental defaults to false here, so an extension of an instrumental will try to sing at you; turn it on deliberately, and clear the prompt box when you do, because the docs say neither prompt nor vocal_gender should be sent in instrumental mode.
variety, style_weight, weirdness_constraint and audio_weight are the same optional nudges as the generation node. duration and persona_model are documented as V5.5/V6-family only, so they're inert on this version.
Outputs
audio is the decoded extension, ready for SaveAudio. all_urls_json keeps every result URL from the response (Suno generally returns more than one take, and audio is the first), url is the primary result, task_id is the KIE job handle, raw_json is the full payload - grab the new track's id from there if you want to extend it again, which is exactly how people build three-minute songs out of one good idea. credits_consumed and credits_left close the loop on cost, and both are printed on the node face after a run.
Getting it installed
ComfyUI Manager, search ComfyUI-KIE-Nodes-Next, or:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart afterwards. The pack pulls only requests, Pillow, numpy and PyYAML - no weights, no CUDA, nothing to place in models/. Then paste your key once in Settings → KIE.ai Nodes Next → Connection; it's validated against KIE before saving, never written into your workflow, and shown as a masked fingerprint. KIE_API_KEY overrides the stored key for headless installs.
Caveats worth knowing
Version status. KIE's parameter docs list V4.5ALL in the (Discontinued) bucket with V4, V4.5, V4.5PLUS, V5 and V5.5; V6, V6_MINI and V6_WILD are current. Expect this node to be a legacy path, and switch siblings if the version is retired outright.
Extends are metered, and you don't get to audition first. Each call spends credits whether the join is seamless or not. Iterating on continue_at is the expensive kind of fidgeting - decide the cut point before you press Run.
Keep the node's default title field sane. title shows up in file names and player UIs downstream, and the default "Peaceful Piano Extended" ends up stamped on a lot of unexpected tracks.
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 | — |