Nodes/ACE-Step-ComfyUI/ACE-Step Text2music Server
ComfyUI Node

ACE-Step Text2music Server

Where ACE-Step's audio actually gets made — the node everything else feeds

By ace-step·Created 7 months ago·Updated 6 months ago· 78
ACE-Step Text2music Server
  • gen_params
  • settings
  • audio
  • info
  • audio_codes
modecloud
server_urlhttps://api.acemusic.ai
api_key

Every other node in the ACE-Step pack is a way of preparing input for this one. ACE-Step Text2music Server takes the gen_params bundle from the Gen Params node, the settings bundle from the Settings node, and actually calls the generation service - then hands you back the finished audio, plus the generation's info text and its raw audio codes.

Here's the honest pitch: it's an API call dressed as a node. It hits an OpenAI-style /v1/chat/completions endpoint with modalities: ["audio"] and model acemusic/acestep-v15-turbo, and it parses the returned WAV data into a normal ComfyUI AUDIO tensor. So it's fast, it needs almost no VRAM in cloud mode, and it works with zero models downloaded. The flip side is that if the network or the key is wrong, nothing happens locally to tell you - you get an error from the server.

The two modes

  • cloud (default) - calls https://api.acemusic.ai. You need an API key from acemusic.ai/api-key, either pasted into the optional api_key field or set as the ACESTEP_API_KEY environment variable. The pack auto-saves your key in .config/ under the node directory, shows it as ●●●●, and - importantly - never embeds it in the workflow JSON, so sharing a workflow won't leak your key. The pack itself is published under the name "ACE-Step-v1.5-online-free," which is a decent hint there's a free tier to start with.
  • local - runs the ACE-Step-1.5 inference server on your own GPU. Set mode to local, and server_url auto-fills to http://127.0.0.1:8002; the api_key field hides itself because you don't need one. This is the path that costs VRAM instead of API credits, and it's the one people struggle with (more below).

Outputs - what wires where

  • audio (AUDIO) - the song. Into a Save Audio node (or a preview) and you're done.
  • info (STRING) - the server's text response: LLM-generated parameters, metadata, lyrics. Wire it into an AceStep Show Text node to actually read it. This is how you see what the LLM decided when auto was on.
  • audio_codes (STRING) - the <|audio_code_N|> tokens of what was generated. Feed these into an Audio Codes node to keep them around; reusing them as a source for a follow-up cover is a neat trick, and the server converts them internally when needed.

Install (the full story)

This is the official ACE-Step pack, so Manager knows it: ComfyUI Manager → search ACE-Step-ComfyUI → install. Manual path:

cd ComfyUI/custom_nodes
git clone https://github.com/ace-step/ACE-Step-ComfyUI.git
cd ACE-Step-ComfyUI
pip install -r requirements.txt

Restart ComfyUI. Dependencies are only torch, numpy, and requests - light. The Server node will re-run on every Queue press (it's marked always-changed, so ComfyUI never tries to cache a result), which is what you want for generation but means you can't "disable" it to save credits.

Local mode is where the install gets real. You need the separate ACE-Step-1.5 repo on a GPU with serious VRAM:

git clone https://github.com/ace-step/ACE-Step-1.5.git
cd ACE-Step-1.5
uv sync   # or: pip install -e .
uv run acestep-openrouter --host 0.0.0.0 --port 8002

First launch downloads the model weights, then it listens on http://127.0.0.1:8002.

Troubleshooting

The most common failures, in rough order: 401/403 on the cloud API means the key is wrong or not attached - check it, or confirm ACESTEP_API_KEY is set in the environment ComfyUI runs in (the pack reads it at call time). Connection errors in cloud mode mean the endpoint is unreachable; in local mode, almost always the ACE-Step server isn't actually running or isn't on port 8002. Community reports of the local server failing to start are usually a version mismatch - people fixed it by updating ACE-Step-1.5, so if you cloned a while ago, pull latest. And a request can genuinely time out (the call allows 600s); a 30-second song with thinking on can legitimately take a while, so don't rage-kill it too early.

Categoryapi node/audio/ACE-Step

Inputs (5)

NameTypeDefaultDescription
modeCOMBOcloud2 options: cloud, local
server_urlSTRINGhttps://api.acemusic.ai
gen_paramsACESTEP_GEN_PARAMS
settingsACESTEP_SETTINGS
api_keyoptSTRING

Outputs (3)

NameTypeDescription
audioAUDIO
infoSTRING
audio_codesSTRING