Upload And Cover Audio · V5
Covers on the discontinued tier
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
A cover is one of the few music jobs where an API genuinely has no local equal. You hand KIE a track, describe the style, and get a new performance back - with the vocal quality that is the whole reason people still pay for Suno instead of running ACE-Step. This node is that endpoint at the V5 tier, which KIE's docs mark as discontinued.
That marker doesn't make it useless. It means: for new work, use the V6 sibling; for re-running a cover you made months ago, or for a workflow already pinned to V5, this is the node that keeps the output identical. Covers are also cheap enough per call that the tier question is mostly about sound, not cost.
How it works
The pack generates one node class per documented model version from KIE's API docs at startup, so the tier is baked into the class - no model dropdown, nothing to accidentally change. The node assembles the documented request body, submits it to KIE's task endpoint (envelope model ai-music-api/upload-and-cover-audio, inner model V5), polls the record-info endpoint every couple of seconds with exponential backoff until the task completes, then downloads the resulting audio and returns a native ComfyUI AUDIO. Errors raise with the task id and the provider's message rather than silently returning nothing.
The inputs that matter
Three required:
- upload_url - the source track, as a URL KIE can fetch. The docs cap source audio at 8 minutes and say the source alone is enough to generate a result.
- prompt - the docs are specific: it's used as lyrics only when
lyricsisn't provided. Setlyricsand the prompt stops being lyrics. And wheninstrumentalis true, don't pass it at all. - instrumental - default
true, i.e. no vocals. That default surprises people who came here to make a sung cover; flip it to false.
Optional: style (the genre - up to 1000 characters on this tier), title (80 characters), negative_tags, vocal_gender (m/f; the docs only claim it shifts the odds), style_weight, weirdness_constraint, audio_weight, lyrics (takes priority over prompt), variety (0–4; 0 pins the style, 4 wanders), duration (10–360 seconds - note the tooltip says it applies to V5.5/V6 and not this tier), persona_id and persona_model (Suno's reusable persona feature, which the docs scope to V5, V5.5 and V6 explicitly - here it's actually sanctioned), plus timeout_seconds and callback_url.
Outputs: audio, url, all_urls_json (the response carries both the source and the cover URL - this is where the full set lives), task_id, raw_json, credits_consumed, credits_left.
Feeding it a file
upload_url is a text box, so there's no dragging an AUDIO onto it. Add KIE • Upload Audio from KIE Next/Utility/Media, feed it the audio you want covered, then right-click upload_url on this node, pick Convert widget to input, and connect the returned URL string. Two extra nodes and you never paste a URL again.
Installing
ComfyUI Manager, search "KIE Nodes Next". The README describes registry publication as prepared rather than finished, so if Manager shows nothing, install manually:
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 paste your key once at Settings → KIE.ai Nodes Next → Connection. It's validated before it overwrites a working key, the UI only ever sees a masked fingerprint, and the key never lands in workflow JSON - which matters, because API-node packs are exactly the category where a leaked key is the failure mode. KIE_API_KEY beats the saved key on headless installs. Dependencies: four small libraries, no torch.
Where people get burned
- Instrumental is on by default. Fill in lyrics, run it, get a karaoke track - that's the default, not a bug.
- Prompt vs. lyrics precedence. If your words aren't being sung, check whether
lyricsis set; it wins overpromptevery time. - No key configured gives an explicit error naming the settings page.
- Mixed-release installs are refused at import time. If the pack says its version and generated-node build disagree, delete the folder and reinstall.
- Not a legal opinion. Covering someone else's song is a licensing question wherever you publish it; the node doesn't care and neither does the model.
- V5 is discontinued per KIE's docs - expect to move to the V6 node eventually.
If you're covering for a video, the workflow that holds up is: get the cover right first, then feed its audio output into whatever makes the video. Chasing both at once means you can't tell which change made the mouth stop matching.
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 | — |