Nodes/KIE.ai Nodes Next/Extend Music · V4.5PLUS
ComfyUI Node

Extend Music · V4.5PLUS

Longer tracks, one continue_at slider

By felipederosilva·Created about a month ago·Updated a day ago· 3
Extend Music · V4.5PLUS
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄audio_ide231****-****-****-****-****8cadc7dc►
    ◄promptExtend the music with more relaxing notes and a gentle bridge section►
    ◄styleClassical►
    ◄titlePeaceful Piano Extended►
    ◄continue_at60.00►
    ◄negative_tagsHeavy Metal, Upbeat Drums►
    ◄vocal_genderm►
    ◄style_weight0.65►
    ◄weirdness_constraint0.65►
    ◄audio_weight0.65►
    ◄persona_idpersona_123►
    ◄persona_modelstyle_persona►
    ◄lyrics[Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fall►
    ◄variety1►
    ◄instrumentalfalse►
    ◄timeout_seconds1200►
    ◄callback_url►

    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.

    CategoryKIE Next/Audio/Suno/Music Generation

    Inputs (17)

    NameTypeDefaultDescription
    audio_idSTRINGe231****-****-****-****-****8cadc7dcUnique identifier of the audio track to extend. Required for all extension requests.
    promptSTRINGExtend the music with more relaxing notes and a gentle bridge sectionLyrics 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`.
    styleoptSTRINGClassicalMusic 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.
    titleoptSTRINGPeaceful Piano ExtendedTitle for the extended music track. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames.
    continue_atoptFLOAT60.00-10000–10000The 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_tagsoptSTRINGHeavy Metal, Upbeat DrumsMusic styles or traits to exclude from the extended audio. Optional. Use to avoid specific undesired characteristics.
    vocal_genderoptCOMBOmVocal 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_weightoptFLOAT0.650–1Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
    weirdness_constraintoptFLOAT0.650–1Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
    audio_weightoptFLOAT0.650–1Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.
    persona_idoptSTRINGpersona_123Persona 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_modeloptCOMBOstyle_personaThe persona model is only applicable to the V5 (deactivated), V5.5 (deactivated), V6, V6_MINI, and V6_WILD models.
    lyricsoptSTRING[Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fallLyrics 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`.
    varietyoptINT10–4Controls 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
    instrumentaloptBOOLEANfalseIndicates whether it is an instrumental track. If true, passing the `lyrics`, `prompt`, and `vocal_gender` parameters is prohibited.
    timeout_secondsoptINT120030–7200—
    callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

    Outputs (7)

    NameTypeDescription
    audioAUDIO—
    urlSTRING—
    all_urls_jsonSTRING—
    task_idSTRING—
    raw_jsonSTRING—
    credits_consumedFLOAT—
    credits_leftFLOAT—