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

Extend Music · V4

The four-minute legacy path, still wired up

By felipederosilva·Created 2 months ago·Updated a day ago· 3
Extend Music · V4
    • 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►

    V4 is the original of the Suno line the pack exposes - "improves vocal quality, max 4 min", in KIE's own description - and this node continues a V4 track that already exists. It's here because the API page still documents the version and the pack builds a node for every documented model version. Whether you should use it is a different question, and the answer is mostly "only if you're already in V4".

    How it works

    The node composes an extend request and submits it to KIE.ai under the transport model ai-music-api/extend, with V4 as the version inside the payload. It then holds the queue while it polls for the result, waiting up to timeout_seconds (default 1200 seconds) before giving up. The finished audio is downloaded and decoded into a ComfyUI AUDIO object locally, using ComfyUI's own torchaudio or PyAV.

    The inputs

    audio_id is required and is a Suno track identifier, not a file - the id value from a previous generation's raw_json output. You can't point this at your own MP3; the Upload And Extend Audio node is the one that takes a URL instead. Practically, this node runs downstream of a Generate Music node and nowhere else.

    continue_at (default 60 seconds) is where the extension starts. Land it at the end of the original. Land it earlier and you've asked the model to redo the rest, which is a reasonable trick for a weak middle section and a bad idea if you liked it.

    prompt is required as a widget and serves as lyrics for the new section, unless lyrics is filled - lyrics wins. style should match the source, and here V4's tighter budget matters: the docs cap V4's style at 200 characters, against 1000 for the later versions. Long, stacked style prompts will get truncated or rejected, so be terse. instrumental defaults to false on this node, so an instrumental source will get vocals unless you turn it on - and if you do, clear prompt and vocal_gender, since the docs say neither should be sent in that mode.

    negative_tags, variety and the style_weight / weirdness_constraint / audio_weight dials round it out. duration and persona_model are scoped to V5.5/V6-family versions per the docs, so they do nothing on V4.

    Outputs

    audio is the extended track. all_urls_json holds every result URL the response contained (more than one take is normal; audio is the first), url is the primary link, task_id is KIE's job handle, and raw_json is the whole payload - including the new track's id, which is how you'd extend again. credits_consumed and credits_left report cost and balance, also rendered on the node after each run.

    Installation

    Through ComfyUI Manager, search ComfyUI-KIE-Nodes-Next; or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
    

    Restart ComfyUI. The pack installs four small Python packages (requests, Pillow, numpy, PyYAML) and downloads no model files at all. Set your KIE.ai key once in Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated before being saved, stays out of your workflow JSON, and appears as a masked fingerprint; KIE_API_KEY in the environment overrides it for headless setups.

    Read this before you build on it

    V4 is the oldest and most constrained rung. KIE's parameter docs list V4, V4.5, V4.5PLUS, V4.5ALL, V5 and V5.5 all as (Discontinued), with V6/V6_MINI/V6_WILD current. V4 additionally has the 4-minute track ceiling and the 200-character style limit. If you're choosing a version today, this isn't the one.

    No cross-version extending. A V4 audio_id belongs to a V4 track. Extending a V6 generation from this node is not a thing.

    Credit-burning loop. Chaining extensions is the fastest way to spend real money in this pack, and the joins are only audible after you've paid. Decide the extend point, run once, listen, then decide again.

    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—