Upload And Cover Audio · V4.5ALL
Same song, different clothes
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
A "cover" in Suno's vocabulary isn't a tribute act. You hand it a track, and it re-performs that track in a style you specify - the bones stay, the sound changes. Country version of your synth demo. Ambient version of a folk song. This node is the V4.5ALL version of that endpoint.
Mechanism, briefly
It's an API call, not a local model. The node builds the request, ships it to KIE.ai under the transport model ai-music-api/upload-and-cover-audio, passes V4_5ALL as the version, then blocks polling until the task resolves or timeout_seconds (default 1200 seconds) expires. You get back a decoded ComfyUI AUDIO object, same as any audio-generating node in this pack.
What you'll actually set
upload_url is required, and it's the raw material: a publicly reachable URL to the source. In this build it's a plain string widget rather than an audio socket, so a track you just made in the same graph needs to exist online before KIE can fetch it - the pack's upload utilities under KIE Next / Utility are the intended bridge. Source limit is 8 minutes; longer files are rejected rather than trimmed.
instrumental (required toggle, default true) decides whether the cover sings. With it on, the docs say don't pass lyrics, prompt or vocal_gender at all - and the source alone is still enough to generate, so a cover of an unlabelled instrumental works without any text. With it off, lyrics is used as the words for the cover and falls back to prompt if lyrics is empty.
style is the heart of the node: this is where the cover gets its new genre. title is cosmetic-ish but worth setting, since it lands in file names and player UIs downstream. negative_tags is your exclusion list. Then style_weight, weirdness_constraint, audio_weight and variety - the same optional nudges as the generation node, and just as mild. duration and persona_model are documented as V5.5/V6-family features, so they're dead weight on V4.5ALL.
Outputs
Seven. audio is the cover, ready for SaveAudio or a video pipeline. all_urls_json holds every result URL - Suno returns multiple takes and audio is only the first, so this is where the alternate versions hide. url, task_id and raw_json cover linking and debugging, and raw_json also contains the provider's source_audio_url alongside the new audio, which is handy when you're covering your own material and want to check the right source went up. credits_consumed and credits_left report the cost; the node also displays both on its face after each run.
Installation
Manager → search the title ComfyUI-KIE-Nodes-Next ("KIE.ai Nodes Next"). Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart ComfyUI when it's done. The package needs requests, Pillow, numpy and PyYAML - no model files, no VRAM. Then set your key: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. KIE validates it before the pack overwrites anything, keeps it in Comfy's user config (not in workflow JSON), and shows a masked fingerprint with a ✅ CONNECTED status. If you run ComfyUI as a service, KIE_API_KEY in the environment takes precedence.
Honest caveats
This version is on the way out. KIE's own parameter docs flag V4.5ALL (Discontinued), along with V4, V4.5, V4.5PLUS, V5 and V5.5; V6/V6_MINI/V6_WILD are the current family. The node exists because the page still documents it. New setups should start from the V6 sibling.
A cover is a fresh generation, not a remix. You don't get stem control or a partial swap - if you want to keep the original vocals and change the backing, look at Add Instrumental or the stem-separation nodes instead. Swapping one section is Replace Music Section.
Credits go whether or not the cover works. Long sources with dense arrangements are the most likely to come back strange, and you pay for the attempt. Keep source clips short while you're learning what the style field will actually do.
Mind what you're uploading. Covering someone else's released track sends it to a third-party API and comes back as a derivative - that's a licensing question, not a node question, but it's the one people forget.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| upload_url | STRING | https://storage.example.com/upload | The URL of the source audio file to cover. Required. Source audio (`upload_url`) is enough to generate. Ensure the uploaded audio does not exceed 8 minutes in length. |
| prompt | STRING | A calm and relaxing piano track with soft melodies | Lyrics for the covered 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`. |
| instrumental | BOOLEAN | true | Determines if the audio should be instrumental (no lyrics). - 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). |
| styleopt | STRING | Classical | The music style or genre for the audio. Optional. - Not required. Source audio (`upload_url`) 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 |
| titleopt | STRING | Peaceful Piano Meditation | The title of the generated music track. Optional. - Maximum 80 characters. - Displayed in player interfaces and filenames. |
| negative_tagsopt | STRING | Heavy Metal, Upbeat Drums | Music styles or traits to exclude from the generated audio. - Optional. Use to avoid specific styles. Example: "Heavy Metal, Upbeat Drums" |
| vocal_genderopt | COMBO | m | Vocal 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_weightopt | FLOAT | 0.650–1 | Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.650–1 | Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places. |
| audio_weightopt | FLOAT | 0.650–1 | Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places. |
| persona_idopt | STRING | persona_123 | Persona 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_modelopt | COMBO | style_persona | The persona model is only available for models version 5 and 5.5. |
| lyricsopt | STRING | [Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fall | Lyrics for the covered 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`. |
| varietyopt | INT | 10–4 | Controls 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 |
| durationopt | INT | 2010–360 | Audio duration in seconds. Optional. Range 10–360, default 20. Valid when `model` is ~~V5_5~~ (Discontinued), V6, V6_MINI, or V6_WILD. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |