KIE • Upload Audio
The node that makes WAVs out of your waveform
- audio
- config
- url
Audio is the awkward media type on the API side. Image and video inputs get native sockets in this pack, but a lot of KIE's audio fields are still URL strings - and the Suno voice nodes are exactly that. This node is how you get a ComfyUI AUDIO object across the gap.
What it does
It takes the standard ComfyUI audio dict - a waveform tensor plus a sample rate - converts it to a plain 16-bit PCM WAV, uploads it to KIE's file service, and hands back a URL. The sample rate is preserved as-is, and channels are interleaved straight across, so a stereo clip stays stereo. That matters more than it sounds: you're not just moving bytes, you're re-encoding to the one container KIE reliably accepts from a wrapper like this.
The WAV choice has a cost. PCM WAV is uncompressed, so a couple of minutes of stereo audio is tens of megabytes, and the upload is correspondingly slower than the same clip as an MP3. Worth knowing, because several of KIE's audio endpoints document size caps (10MB shows up in the catalog on a few of them). Trim your clip before uploading rather than after the provider rejects it.
Inputs and outputs
audio is the only required input - a native AUDIO socket, so wire it from a loader, a TTS node, a music node, or anywhere else that produces audio.
config is optional and takes a KIE_CONFIG connection. Ignore it in a normal setup: the pack resolves the API key you saved once in ComfyUI Settings, and KIE_API_KEY in the environment wins on headless machines.
url is the only output, a plain string. Where it goes depends on the endpoint. Into the Suno voice nodes' verify_url and voice_url fields. Into $audio_url in KIE • Universal Market Task (Advanced) when you're hand-rolling a request. Into the upload_url field of the Suno cover and extend nodes, which want a URL to the source track. Anywhere a KIE field is typed as a string and named like a URL, this is the node that fills it.
Install
ComfyUI Manager, search KIE.ai Nodes Next, install, restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart afterwards. Then set your API key once in Settings → KIE.ai Nodes Next → Connection: the pack validates it against KIE before overwriting a working key, shows a masked fingerprint, and reports CONNECTED with your balance. Dependencies are light - requests, Pillow, numpy, PyYAML - and there's nothing to download model-wise, since all inference is remote and metered.
Things to know before you build around it
Uploads produce temporary hosted files, not permanent assets. If a workflow depends on a URL, re-upload when you run it rather than pasting a link you saved last month.
You also need a current ComfyUI for the whole media layer to be comfortable: the audio outputs this pack returns are decoded into native AUDIO objects via torchaudio with a PyAV fallback, and the file-based helpers assume the modern media runtime. On a very old build, expect decode errors on results rather than anything subtle.
For local audio work, keep the split in mind: a heavy audio pipeline in ComfyUI usually means a bespoke node pack with its own runtime isolation, precisely because audio model dependencies fight with the image ones. This node sits outside all of that - it moves bytes and nothing else, so it can't break your environment, but it also can't generate anything. It only ever answers one question: what URL do I give the API for this sound?
Last, the standard caveat for this pack's whole utility shelf: uploading sends your file to KIE's servers. For a voice reference or a music bed that's usually fine; for anything you don't want a third party holding, don't run the node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| configopt | KIE_CONFIG | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |