Nodes/KIE.ai Nodes Next/Upload And Extend Audio · V4.5
ComfyUI Node

Upload And Extend Audio · V4.5

Drop in a URL, get more song

By felipederosilva·Created about a month ago·Updated a day ago· 3
Upload And Extend Audio · V4.5
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄upload_urlhttps://storage.example.com/upload►
    ◄promptExtend the music with more relaxing notes►
    ◄instrumentaltrue►
    ◄continue_at60.00►
    ◄styleClassical►
    ◄titlePeaceful Piano Extended►
    ◄negative_tagsRelaxing Piano►
    ◄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►
    ◄timeout_seconds1200►
    ◄callback_url►

    Most track-extending in this pack wants a Suno-generated audio_id - annoying when the song you want longer is one you already have. This node skips that requirement entirely: give it a URL to an audio file, tell it where to start extending, and Suno's V4.5 model picks up the thread.

    What it is

    A remote API call wrapped in a ComfyUI node. The request goes to KIE.ai under the transport model ai-music-api/upload-and-extend-audio, with V4_5 as the model version; then the node blocks, polling the record-info endpoint every few seconds until the job finishes or timeout_seconds (default 1200 - twenty minutes) gives out. The finished audio comes back decoded, as a ComfyUI AUDIO you can save, preview, or route into video work.

    Inputs, in order of how much they matter

    upload_url is required and takes a public URL. Not a path, not a file:// reference, not a Google Drive preview link - KIE's servers have to fetch the bytes themselves, and anything they can't reach fails the task. Keep the source under 8 minutes; that's a documented hard limit, not a suggestion. The current build exposes this as a plain text field rather than an audio socket, so tracks generated in the same graph need pushing somewhere public first - the pack's upload helpers under KIE Next / Utility exist for that.

    continue_at is the dial you'll be fiddling with: the second at which the extension starts, default 60. Aim it at the end of the original. Aim it mid-track and you're asking for the remaining section to be re-performed, which is sometimes exactly what you want when a bridge is wrong and sometimes a surprise.

    prompt is required as a widget and acts as lyrics for the extension, but only when lyrics is left empty - lyrics wins when both are present. style should match the source or you'll hear the handover. instrumental defaults to true, and when it's on the docs say don't send prompt, lyrics or vocal_gender; clear the text box rather than leaving the placeholder sentence in it.

    title and negative_tags are administrative. style_weight, weirdness_constraint, audio_weight and variety are optional nudges. duration and persona_model are documented as V5.5/V6-only, so they don't do anything here - leave them where they are.

    What you get back

    audio is the result, decoded and ready to wire into SaveAudio. all_urls_json contains every URL the provider returned (there's usually more than one take, and audio is just the first), url is the primary result, task_id is KIE's job handle if you want to dig into the task later, and raw_json is the full response - the place to check what the API actually saw. credits_consumed and credits_left come back as floats and are printed on the node after each run.

    Installing it

    ComfyUI Manager → search ComfyUI-KIE-Nodes-Next. Manual:

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

    Restart. Dependencies are requests, Pillow, numpy, PyYAML - nothing heavyweight, no checkpoints. Then one-time setup: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. The pack validates the key against KIE before replacing a working one, stores it outside your workflow JSON, and shows a masked fingerprint plus connection status. Server installs can skip that and export KIE_API_KEY instead; the env var wins.

    Things that catch people

    V4.5 vs V4.5ALL vs V4.5PLUS. Three nodes, near-identical schemas, different model versions - and per KIE's parameter docs, V4.5 caps style at 1000 characters (V4 caps it at 200). All three are tagged (Discontinued) next to V5 and V5.5, with V6/V6_MINI/V6_WILD current, so treat the whole V4.5 row as legacy-but-still-documented.

    Extensions are paid and unauditionable. Every call costs credits, and you only find out whether the join works after the fact. Decide continue_at first.

    One extension is not a whole arrangement. If the source is a 90-second loop, you'll get more of that loop - not a second verse with new instrumentation. For that, the honest local alternative is ACE-Step, which is fine on instrumentals and weak on vocals, but free to retry.

    CategoryKIE Next/Audio/Suno/Music Generation

    Inputs (17)

    NameTypeDefaultDescription
    upload_urlSTRINGhttps://storage.example.com/uploadThe 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.
    promptSTRINGExtend the music with more relaxing notesLyrics 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`.
    instrumentaloptBOOLEANtrueDetermines 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_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 uploaded audio. - Specifies the position in the original track where the extension should begin.
    styleoptSTRINGClassicalMusic 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
    titleoptSTRINGPeaceful Piano ExtendedMusic title. Optional. - Maximum 100 characters. - Displayed in player interfaces and filenames.
    negative_tagsoptSTRINGRelaxing PianoMusic styles to exclude from generation
    vocal_genderoptCOMBOmVocal 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_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 available for models version V5 (Discontinued), V5_5 (Discontinued), V6, V6_MINI, and V6_WILD.
    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 (`upload_url`) 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
    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—