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

Upload And Extend Audio · V6

Your own file, continued, on the live tier

By felipederosilva·Created about a month ago·Updated a day ago· 3
Upload And Extend Audio · V6
    • 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►

    This is the extend node for files you own. Chat with the family long enough and you'll notice there are two of them: Extend Music takes a Suno audio_id, and this one takes an upload_url. If your source is a local render, a loop you made, a stem, or anything that isn't a Suno track, you want this node - KIE can fetch a URL, and it can't fetch your hard drive.

    The use case is the one that bites everyone generating music through an API: you get a good 25 seconds and you need 90 for the edit. Or you've got a decent local loop from ACE-Step and want a middle section before you cut it into a video. This node is the bridge between a locally generated bed and the API's continuation.

    How it works

    The pack generates its node classes from KIE's official API documentation at startup, one per documented model version, so V6 is baked into this class - no model selector to mis-set. The node assembles the documented request body, submits it to KIE's task endpoint (envelope model ai-music-api/upload-and-extend, inner model V6), polls KIE's record-info endpoint every couple of seconds with exponential backoff until the task succeeds, then downloads the resulting mp3 and returns a native ComfyUI AUDIO. Failures raise with the task id and the provider's message.

    The inputs that matter

    • upload_url (required) - the source audio as a public URL. The docs put a ceiling on upload-family sources: under 8 minutes, and the source alone is enough to generate something.
    • prompt - used as lyrics only when lyrics is empty, and it must not be set when instrumental is true.
    • continue_at - seconds, default 60, and per the docs it must be greater than 0 and less than the total duration of the uploaded audio. This is the field that decides whether you get a continuation or a different song that happens to start the same way.
    • instrumental - defaults to true on this node, which means your prompt is effectively ignored unless you flip it. Worth noticing before you spend a call on a lyric idea that never gets read.

    Optional steering: style (match the source - up to 1000 characters on this tier), title, negative_tags, vocal_gender, style_weight, weirdness_constraint, audio_weight, persona_id / persona_model, lyrics (5000-character cap, takes priority over prompt), variety (0–4), timeout_seconds (1200) and callback_url (leave empty).

    Outputs: audio, url, all_urls_json (an upload-and-extend response carries both the source and the generated URLs), task_id, raw_json, credits_consumed, credits_left.

    Wiring a local file in

    upload_url is a text widget, so you can't attach an AUDIO to it. Drop KIE • Upload Audio from KIE Next/Utility/Media, feed it your AUDIO, right-click upload_url on this node, pick Convert widget to input, and connect the returned URL string. Now ACE-Step → Upload Audio → this node is one graph, and the local bed and the API continuation stay in sync without you copying URLs between browser tabs.

    Installing

    ComfyUI Manager, search "KIE Nodes Next". The README still describes registry publication as prepared rather than complete, so if Manager shows nothing:

    cd ComfyUI/custom_nodes
    git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
    pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
    

    Restart, then set your key once under Settings → KIE.ai Nodes Next → Connection. It's validated before it replaces a working key, only a masked fingerprint is shown, and KIE_API_KEY takes priority on headless installs. Four small dependencies - requests, Pillow, numpy, PyYAML - and no model weights, which is the entire pitch of an API-node pack.

    Where people get burned

    • continue_at outside the file. Check the actual duration: the docs require the value to fall inside it, so a 60-second default on a 40-second file simply fails.
    • The instrumental default. It ships true here. If your prompt went nowhere, that's why.
    • URLs KIE can't fetch. A localhost address or a local path won't work; upload first.
    • No key configured raises an explicit error naming the settings page.
    • A timeout isn't a cancellation. Polling ends at timeout_seconds, but the remote job may still complete - and be billed. Check credits_consumed before rerunning.
    • Mixed-release installs are refused on startup. Version and generated-node build must agree; if the pack says they don't, delete the folder and reinstall.

    One habit: extend in short steps and listen to each seam. Two fifteen-second extensions usually hold together better than one thirty-second jump, and when a join goes bad, short hops tell you exactly where.

    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—