Upload And Cover Audio · V4.5
The middle sibling nobody reaches for
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
This is the cover-audio endpoint from the Suno API, pinned to the V4.5 model version. Feed it a track, get a new production of that track back.
Here's the honest framing: on KIE's own documentation, V4.5 is listed as discontinued, and the same cover endpoint exists in your node menu across V4, V5, V6, V6_MINI and V6_WILD flavours. V4.5 sits in the middle of that range with the worst of both worlds - no quality advantage over the current versions, no compatibility advantage over plain V4. Treat this node as the thing you use when a workflow you inherited is already wired to it, not as a starting point.
What a cover actually does
It's not remastering and it's not a stem split. The model takes the melodic and rhythmic content of your source and rebuilds the whole production around it - new instrumentation, new mix, new vocals if you ask for them. For a graph, the interesting consequence is that a cover keeps your timing while changing everything else, which is how you get a rough demo idea into a listenable arrangement without writing it twice.
Inputs
upload_url is required: a URL string to the source audio, eight minutes max per the tooltip. It is not an audio socket, so wire KIE • Upload Audio in front of it and send its url output here - that node WAV-encodes a ComfyUI AUDIO object and hosts it, which is exactly the format this field needs.
prompt holds the lyrics for the cover, and instrumental (on by default) decides whether there are vocals at all. KIE's instructions are explicit that prompt, lyrics and vocal_gender should not be passed when instrumental is on. Because ComfyUI ships every visible widget value to the node, the example lyric text sitting in the box counts as "passed" - clear it out rather than trusting the mode flag to ignore it.
The optionals: style (here you get KIE's 1000-character ceiling, unlike V4's 200), title (80 characters, and it becomes the filename), negative_tags, vocal_gender, style_weight, weirdness_constraint, audio_weight, lyrics (takes priority over prompt), variety (0–4, where 0 is "exactly this style" and 4 is "unreasonably varied"), and persona_id with persona_model to sing in a saved persona or cloned voice. The duration widget is present but KIE documents it as valid only on V5.5 and newer, so on V4.5 it doesn't do anything. timeout_seconds and callback_url are the standard wait and webhook fields.
One wiring note: the pack maps this node onto KIE's documented ai-music-api/upload-and-cover-audio transport while keeping V4_5 as the provider version inside the request, so you don't have to fight the API about which model name goes where. That mapping is a fix the author shipped after earlier versions sent the provider version in the wrong slot.
Outputs
audio (native, wire it into a core Save Audio or audio preview), url, all_urls_json, task_id, raw_json, and credits_consumed with credits_left for the receipt. The node also prints credits spent and your live balance on itself after a successful run, which is the fastest way to notice that your cover experiments are costing more than you assumed.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Or let ComfyUI Manager do it - search KIE.ai Nodes Next - and restart either way. Then paste your API key once under Settings → KIE.ai Nodes Next → Connection; the pack validates it before saving, then shows a masked fingerprint and a CONNECTED status with your balance. Dependencies are only requests, Pillow, numpy, PyYAML. Nothing runs locally, so there's no VRAM story here - just a per-call bill.
The version advice, one more time
Covers are a vocals-and-production job, which is precisely where the cloud still beats local music models, so paying for a generation makes sense. Paying for a discontinued generation doesn't. If this node is in your graph because you cloned someone's workflow, switch it to the V6 cover node and keep everything else identical - the inputs are the same shape and the output is simply better.
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 | — |