Upload And Extend Audio · V5
Your file, extended on the V5 stack
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Same job as the other Upload And Extend nodes - hand over a hosted audio file, tell the model where to continue, get a longer track back - running on Suno's V5 version. If you've been reading V4.5 articles, here's the difference that actually matters: the persona controls work on V5. persona_id and persona_model are documented as applicable to the V5/V5.5/V6 family, so on this node they stop being decorative.
Under the hood
The node builds the request, posts it to KIE.ai under the transport model ai-music-api/upload-and-extend-audio, and passes V5 as the version. It then waits - polling the job until it completes or timeout_seconds (default 1200 seconds, twenty minutes) expires. The audio comes back as a ComfyUI AUDIO object, decoded locally by ComfyUI's own torchaudio or PyAV; the pack itself only needs requests, Pillow, numpy and PyYAML.
The inputs that decide the result
upload_url is required and must be a publicly fetchable URL - not a local path, not a network share. It's a text field in this build rather than an audio socket, so anything generated in the same graph has to be hosted first; the pack's utility nodes under KIE Next / Utility are the intended route. Source limit: 8 minutes.
continue_at (default 60, seconds) is where the extension starts. Aim it at the end of what you want to keep.
prompt is required as a widget and acts as the new section's lyrics when lyrics is empty - lyrics overrides it. style steers the continuation and should match the source; the docs give V5 a 1000-character budget for it, so unlike V4 you can be reasonably descriptive. instrumental defaults to true, and when it's on the docs say to send neither prompt, lyrics nor vocal_gender - clear the text boxes rather than leaving defaults in place.
Optional: negative_tags, variety (0–4), the style_weight / weirdness_constraint / audio_weight weights, and the persona pair. persona_model takes style_persona or voice_persona, and the docs scope it to V5, V5.5, V6, V6_MINI and V6_WILD - so it's live here. duration is scoped to V5.5/V6/V6_MINI/V6_WILD and is not valid on plain V5, so leave that alone.
Outputs
audio is the extended track - straight into SaveAudio or a video pipeline. all_urls_json holds every URL the response carried (multiple takes are typical; audio is the first), url is the primary result, task_id is the KIE job ID, and raw_json is the full provider payload, which is where the new track's id lives if you plan to extend again. credits_consumed and credits_left come back as floats and are displayed on the node after each run.
Installing
ComfyUI Manager → search the title ComfyUI-KIE-Nodes-Next ("KIE.ai Nodes Next"). Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart ComfyUI. Then one-time auth: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. The pack checks the key against KIE before saving it over a working one, stores it in Comfy's user config rather than in your workflow, and shows a masked fingerprint with connection status. Servers can use KIE_API_KEY instead - the environment value wins. No models, no CUDA, no build step.
Worth knowing before you spend
V5 is on the discontinued list. KIE's parameter docs mark V5 and V5.5 (Discontinued) alongside V4, V4.5, V4.5PLUS and V4.5ALL; V6, V6_MINI and V6_WILD are current. The node works because the API page still documents it - nothing you can fix locally if that changes.
Personas are the reason to prefer V5 over the V4.5 nodes here, so if you're extending songs in a series that should sound like the same artist, this is the legacy version to pick, and the V6 node is the forward-looking one.
No preview, no refunds. Extensions cost credits, and whether the join works is only audible afterwards. Set continue_at deliberately, then run once.
You still need hosting. The URL requirement is the single most common reason this node fails on someone's first try.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| upload_url | STRING | https://storage.example.com/upload | The URL of the source audio file to extend. Required. Source audio (`upload_url`) is enough to generate. Ensure the uploaded audio does not exceed 8 minutes in length. |
| prompt | STRING | Extend the music with more relaxing notes | 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 (`upload_url`) is enough to generate. - Do not pass this parameter when `instrumental` is `true`. |
| instrumentalopt | BOOLEAN | true | Determines whether the audio is instrumental (without lyrics). Optional; defaults to `false`. - If `true`: generate instrumental music (no vocals). Do not pass `lyrics`, `prompt`, or `vocal_gender`. - If `false`: use `lyrics` as lyrics (fall back to `prompt` if `lyrics` is not provided). |
| 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 uploaded audio. - Specifies the position in the original track where the extension should begin. |
| styleopt | STRING | Classical | Music style, e.g., Jazz, Classical, Electronic. Optional. - Not required. Source audio (`upload_url`) is enough to generate. - Character limits by model: - **V6, V6_MINI & V6_WILD**: Maximum 1000 characters - **V5_5 & V5** (Discontinued): Maximum 1000 characters - **V4_5PLUS & V4_5** (Discontinued): Maximum 1000 characters - **V4_5ALL** (Discontinued): Maximum 1000 characters - **V4** (Discontinued): Maximum 200 characters |
| titleopt | STRING | Peaceful Piano Extended | Music title. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames. |
| negative_tagsopt | STRING | Relaxing Piano | Music styles to exclude from generation |
| vocal_genderopt | COMBO | m | Vocal gender preference for the singing voice. Optional. Use 'm' for male and 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Do not pass this parameter when `instrumental` is `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 available for models version V5 (Discontinued), V5_5 (Discontinued), V6, V6_MINI, and V6_WILD. |
| 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 (`upload_url`) 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 |
| 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 | — |