Suno Enhance Style (Ace Data Cloud)
The cheapest node in the pack, and the one beginners forget
- status
- task_id
- media_urls_json
- first_media_url
- result_json
- trace_id
You write "sad piano", you get generic sad piano. You write "lofi jazz, brushed drums, upright bass, vinyl crackle, 3am apartment, tape saturation", you get something with a personality. Suno Enhance Style (Ace Data Cloud) is the node that turns the first into something closer to the second, and it's the simplest node in a 24-node pack: one text box in, an enriched style description out.
Its real job is upstream of everything else. Style text is the prompt of music generation, and the pack's fat generation node has a style field sitting there waiting for exactly this kind of string.
How it works
It POSTs your prompt to /suno/style and returns the result. There's no model selector, no action selector, no async job - just parameters_json (default {}, and effectively unused here) and one named field:
prompt- multiline, and required by the published contract. The style idea you want expanded.
Because it's a tool node, the same two rules apply as everywhere in this pack: a non-empty named field overrides the same key in parameters_json, and the whole payload is checked against the copied API contract before any request leaves your machine. A malformed parameters_json fails locally with parameters_json must contain a JSON object. - the JSON is validation, not transport.
Outputs
The standard six strings: status, task_id, media_urls_json, first_media_url, result_json, trace_id.
There's no audio and no image here, so ignore media_urls_json and first_media_url - they'll be empty. The enhanced text is in result_json. Wire that into a Preview as Text to eyeball it, or hand it onwards to a generation node's style field. This is the pattern for every one of the pack's nineteen tool nodes: result_json is the answer, the rest is bookkeeping.
Practically: run it, read the output, and edit it. Enhancement is a draft, not an oracle. It'll suggest instrumentation and production adjectives you wouldn't have bothered typing; you know which ones you actually want.
Where it earns its place
Two situations, and they're both common.
The first is writer's block with a genre. You know you want "60s spy theme" and nothing else comes to mind. Enhanced style gets you to brass stabs, tremolo guitar, walk-down bass, and a reverb that sounds like a parking garage - a much better starting point than four words.
The second is prompt discipline, and prompt-engineering.md is the general version of the lesson: what carries across model families is specificity, not volume. Its image-prompting table rates naming a real camera as the highest-leverage phrase you can write; the music analogue is naming a production technique or a real instrument rather than adding a fourth adjective to "epic". An enhancement pass does the expanding, then you cut what's wrong.
Note what it doesn't do: it doesn't write lyrics (that's Suno Generate Lyrics in either variant) and it doesn't make the song. It's prep.
Install
Part of SunoComfyUI. Manager → Custom Nodes → search Suno → publisher acedatacloud, package Suno by Ace Data Cloud (Registry ID ace-suno) → install → restart. Or 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
requests and jsonschema. No models, no GPU, nothing to download. Only requests actually does any work here, and ComfyUI already brings PyAV and PyTorch for the audio side of the pack. Key in the ComfyUI process environment, then restart:
export ACEDATACLOUD_API_KEY='paste-your-key-here'
python main.py
If your Ace application restricts API paths, /suno/style is the one this node needs.
When it goes wrong
Invalid prompt: does not meet the API's ... constraint. The contract requires prompt; an empty string in a required field is a validation failure, not a no-op.
parameters_json must contain a JSON object. You touched the JSON box. The default {} is correct - leave it alone unless you know something the widgets don't express.
HTTP 401/403. Missing key in the ComfyUI process, restricted path, or no Suno service access. Fix it in the console rather than re-running.
The output is a long, comma-stuffed paragraph. That is the normal shape of these results, and it's usually worth trimming. Enhanced style text is a menu, not a script - take the four items that fit your idea and drop the rest before sending it into a generation call.
You're not sure whether it worked. Preview the result_json. If it's empty, check status - a 200 with an empty payload means the service took your prompt but found nothing to add, which is informative in itself.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| parameters_json | STRING | {} | — |
| prompt | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| task_id | STRING | — |
| media_urls_json | STRING | — |
| first_media_url | STRING | — |
| result_json | STRING | — |
| trace_id | STRING | — |