Suno Load Audio (Ace Data Cloud)
Suno Load Audio doesn't call the Suno API — and needs no key at all
- audio
The name oversells it. Suno Load Audio (Ace Data Cloud) has no credential check, no API call, no idea what Suno is. Look at the code and it's a downloader with a decoder stapled on: take a URL, fetch the bytes, hand ComfyUI a tensor it can play. That's not a criticism - it's the most reliable node in the pack precisely because there's so little in it.
Its job in the graph is to be the last step: task_id → Retrieve → audio_url → this node → Preview Audio or Save Audio.
What actually happens
You feed it a URL. It parses that URL and refuses anything that isn't an https:// link on cdn.acedata.cloud or cdn.acedata2.cloud - an allowlist, not a general-purpose loader. It refuses URLs with embedded credentials, refuses redirects, caps the download at 64 MiB (checked against Content-Length first, then enforced again while streaming), and retries the fetch up to three times on a network error, backing off between attempts.
Then PyAV opens the bytes in memory, finds the first audio stream, reads the sample rate and channel count, and walks the decoded frames. Each frame becomes a numpy array → torch tensor; int16 gets divided by 2^15 and int32 by 2^31 so everything lands as float in the normal [-1, 1] range; anything else that isn't already floating point raises Unsupported audio sample format. The frames are concatenated along the time axis with a batch dimension added out front.
One plumbing detail that saves bandwidth: this is a normal node, not an output node, and ComfyUI caches nodes whose inputs haven't changed. Re-run a graph with the same audio_url and you get the already-decoded audio, not a second download. Change the URL and it fetches.
The output is one thing: audio, of type AUDIO - a dict with waveform and sample_rate, which is exactly what Preview Audio and Save Audio expect. Nothing else in this node takes a decision from you.
The only input is audio_url, a string, empty by default.
The traps
It is not a general audio loader. A hosted MP3 from anywhere other than Ace's CDN will be rejected with Audio URL must be an Ace Data Cloud HTTPS media link. For a local file, a Civitai link, or a URL your own server serves, use ComfyUI's core Load Audio (or VHS) - those don't have a host allowlist, and swapping is a five-second change people sometimes fight for twenty minutes instead.
Empty input is an error, on purpose. The error text is the useful part: Task is still pending. Query the same task ID again; do not generate again. If you ran this node straight off a submit node with nothing in between, that's the message you'll get, and it's correct.
A WAV file is not a URL yet. Suno Get Wav hands you a task_id because the conversion is asynchronous. Loading that ID here fails the host check. Retrieve the task first, then feed the resulting media URL in.
Playback silence with a waveform that looks right. That's almost always an unusual sample format rather than a download problem, and the decode path is deliberately strict about it - check the file plays elsewhere before assuming the graph is broken.
Install
This node ships with the same pack, so there's nothing extra to install beyond the pack itself. Manager → Custom Nodes → search Suno → publisher acedatacloud, package Suno by Ace Data Cloud (Registry ID ace-suno) → install → restart. From source:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/SunoComfyUI.git
cd SunoComfyUI
python -m pip install -r requirements.txt
Worth repeating what the README is explicit about: requirements.txt adds requests and jsonschema only. There is no model download, no GPU inference, and no runtime package installation in this pack - the audio decoding comes from PyAV and PyTorch, which ComfyUI already provides. The Ace key is still needed for the other nodes in the graph, and it belongs in the environment of the ComfyUI process:
export ACEDATACLOUD_API_KEY='paste-your-key-here'
python main.py
When it goes wrong
HTTP 403 or 404 from the CDN. Media URLs on Ace's CDN can expire. Query the task again - that's a read-only call - and take the fresh URL rather than the one you saved in a text file last week.
The media link contains no audio stream. You pointed it at something that isn't audio. Check with a browser before going further.
Audio file exceeds the 64 MiB limit. Suno's own tracks don't get near it; a long WAV of something else might. There's no override in the node - that limit is hard-coded.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_url | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |