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

Upload And Extend Audio · V5.5

Your file, continued from where you pick

By felipederosilva·Created about a month ago·Updated about 22 hours ago· 3
Upload And Extend Audio · V5.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►

    Here's the difference between this node and its sibling Extend Music, in one line: Extend takes a Suno audio_id, this one takes an upload_url. If your source is a file you already own - a loop you made, a stem, an old render, something from a local model - this is the node, because KIE can fetch a URL and it can't fetch your hard drive.

    The job is the same: pick a point in the track and let the model continue from there. Useful when a 20-second generate comes back and you want a 90-second version, or when a locally generated loop needs a middle section before you cut it into a video.

    How it works

    The pack builds its node classes from KIE's official API documentation on startup, one node per documented model version - so this class is fixed to V5_5 with no dropdown to change. The node builds the documented request body, submits it to KIE's task endpoint (envelope model ai-music-api/upload-and-extend, inner model V5_5), then polls KIE's record-info endpoint every couple of seconds with exponential backoff until the task completes. On success it downloads the mp3 and returns a native ComfyUI AUDIO; on failure it raises with the task id and the provider's message.

    The inputs that matter

    • upload_url (required) - the source, as a public URL. The docs cap upload-based source audio at 8 minutes and say the source alone is enough to generate.
    • prompt - used as lyrics only if lyrics is empty, and it must not be set when instrumental is true.
    • continue_at - the field that actually matters. Seconds, default 60, and per the docs it must be greater than 0 and less than the total duration of the uploaded audio. Get this wrong in either direction and the request fails.
    • instrumental - defaults to true, which is worth noticing, because it means a lyrics prompt is ignored unless you flip it. That default is the opposite of the Extend node's.

    The rest is steering: style (align it with the source; it's up to 1000 characters on this tier), title, negative_tags, vocal_gender, style_weight, weirdness_constraint, audio_weight, persona_id / persona_model, lyrics, variety (0–4), plus timeout_seconds (1200) and callback_url (leave empty).

    Outputs: audio, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. When you extend an upload, the response carries both source and generated URLs - all_urls_json is where you keep them, and task_id plus url make cheap logging if you're iterating on continue_at.

    Feeding it a local file

    upload_url is a text box, not an AUDIO socket, so wire it: drop KIE • Upload Audio (in KIE Next/Utility/Media), connect your AUDIO to it, then right-click upload_url on this node, choose Convert widget to input, and connect the URL string. Once that's in place you can run a fully local-generate → upload → extend chain without touching a URL by hand.

    Installing

    ComfyUI Manager, search "KIE Nodes Next"; the README still frames registry publication as prepared rather than live, so the clone path is what actually works when Manager comes up empty:

    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 the key once at Settings → KIE.ai Nodes Next → Connection. It's validated before replacing a working key, and nothing but a masked fingerprint reaches the UI. KIE_API_KEY in the environment overrides the saved key if you're running headless. Dependencies are four small libraries - no torch, no model files, no VRAM cost.

    Where people get burned

    • continue_at outside the source's length is the most common failure. Check the actual duration first; a value of 60 on a 45-second file can't work.
    • Instrumental defaults. If you set prompt and got an instrumental back, that's why - instrumental shipped true.
    • No key throws an explicit error with the settings path in it. Always check that before debugging anything else.
    • A timeout isn't a cancellation. The node stops polling at timeout_seconds; the remote task can still finish. Look at credits_consumed before rerunning.
    • Mixed installs are refused on startup. If the pack complains that its version and the generated-node build disagree, delete the ComfyUI-KIE-Nodes-Next folder and reinstall.
    • V5.5 sits in the discontinued tier per KIE's docs. New work should use the V6 sibling; this one earns its keep reproducing existing renders.

    Worth saying out loud: extension quality degrades with distance. Adding ten seconds to a track usually sounds seamless; adding two minutes tends to wander. Chain short extensions and re-check the seam each time rather than asking for one long one.

    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—