Suno v6 Mini · Text to Music
Two Finished Songs for Seven Cents
- image_urls
- reference_video_urls
- reference_audio_urls
- audio
- task id
"Mini" is the wrong word for this node. It costs the same flat $0.072 per run as full Suno v6, and it hands you two complete MP3 songs with vocals, not a preview. What you're actually buying is turnaround: the API lists this as the lighter build of v6, so you reach for it when you want the song back sooner and you're not being precious about the final mix.
And yes, it's a hosted model. The node is an HTTP client with your key on it. No GPU, no weights, no pip.
Why an audio node at all
Our own read on the audio layer is that the community closed the music gap locally - ACE-Step at Suno-adjacent quality, on a modest card - but song generation is one of the two jobs where the hosted model still wins outright, the other being best-in-class multilingual TTS. If you're building a Comfy graph that ends in sound and local music generation isn't getting you there, this is the node that says "fine, I'll just pay for it."
Same reason anyone uses an API node: the workflow stays intact. Your prompt comes from a Chat node, your lyrics get written upstream, your result lands on the canvas like any other AUDIO, and a Save Audio writes files.
How it works
You write a style brief - genre, mood, tempo, instruments, voice - and optionally your own lyric sheet. SpicyAPI runs Suno v6 Mini on its own servers and returns two takes as MP3s. The pack downloads them, decodes them with PyAV, and folds both into one AUDIO value as a batch. Save Audio then writes one file per take, so two songs show up in your output folder. That batching is the thing people find surprising; the other is that variety is what controls how far apart those two takes sit (0 off, 1 normal, 2 high, 3 extra, 4 max).
Uploads are cached: the pack hashes each file and remembers the uploaded copy per account for about twelve hours, so re-running with a new prompt doesn't re-upload the same reference image.
The inputs you actually set
Most of the widgets you can ignore. The three that decide the song:
- prompt - up to 1,000 characters. With lyrics or
instrumentalon, this is the style brief. With neither, it's also what the model writes the words from. - lyrics - your words, sung in order.
[Verse],[Chorus]and[Bridge]are structural tags: they shape the song and are not sung. - generate_lyrics - the switch that explains most "it ignored my lyrics" confusion. It only applies when
lyricsis empty andinstrumentalis off.titlehas the mirror-image rule: it only takes effect with lyrics or an instrumental, otherwise the model names the song.
vocal_gender nudges toward a female or male lead when there are lyrics. style_weight, weirdness, audio_weight and variety all ship at -1, which the pack translates to "leave it out and let the model decide" - worth knowing before you assume -1 means zero. persona_id plus persona_model (style_persona or voice_persona) reuses an existing Suno persona.
The three autogrow sockets at the bottom - up to five mood images, one reference video, one reference audio clip - only do anything when the model is writing the lyrics. Each grows a new socket when you connect one.
Outputs: audio (both takes, as a batch) and task id, a string worth keeping for console logs or a support request.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, then open Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys. On a headless box, set SPICY_API_KEY instead. The key lives in user/spicyapi/config.json, never in the workflow or PNG metadata.
The install is boring on purpose: pyproject.toml declares dependencies = []. It uses aiohttp, torch, Pillow and PyAV - all things ComfyUI already ships. Given that the pack you installed last week probably overwrote someone else's transformers pin, a node pack that installs nothing is worth noticing. Needs Python 3.10+ and the V3 node API (tested against ComfyUI 0.39).
Where people get burned
- The node list comes from your account at startup. New models appear after a restart. Without a key, the list bundled with the release is used.
- Every run is billed, and seeds start on
fixed. Queue twice and the second run reuses the cached result rather than paying again. Want a different song? Change the prompt, or set control-after-generate torandomize- and expect the second charge. - Cancelling stops your wait, not the job. The generation continues on SpicyAPI, is charged if it succeeds, and sits in your console for up to 14 days.
- Set a ceiling. Settings > SpicyAPI > Max cost per run refuses any run quoted above it, before anything is charged.
No SpicyAPI key is set,40310(verify your email),40004(that combination has no deployment - change the option it names), and errors ending inrequest_id(send that to support) are all in the README's troubleshooting table.
Like the song but not the vocal? Flip instrumental and keep everything else - the cheapest way to hear whether the arrangement works.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the song: genre, mood, tempo, instruments and voice. With lyrics or an instrumental this is the style (up to 1,000 characters); with no lyrics the model writes the words from it. | |
| lyrics | STRING | Words to sing, sung in order. Section tags such as [Verse], [Chorus] and [Bridge] shape the song and are not sung. | |
| generate_lyrics | BOOLEAN | true | Let the model write the lyrics from the prompt. Only applies when lyrics is empty and instrumental is off. |
| instrumental | BOOLEAN | false | Generate music with no vocals. |
| title | STRING | Song title (metadata, not sung). Applies with lyrics or an instrumental; otherwise the model names the song. | |
| negative_prompt | STRING | Styles or elements to keep out of the song. | |
| vocal_gender | COMBO | model default | Make a female or male lead vocal more likely. Applies with lyrics. |
| style_weight | FLOAT | -1.00-1–1 | How closely to follow the style in the prompt, from 0 to 1. -1 leaves it to the model. |
| weirdness | FLOAT | -1.00-1–1 | How experimental the song may get, from 0 (conventional) to 1 (unusual). -1 leaves it to the model. |
| audio_weight | FLOAT | -1.00-1–1 | How strongly a persona's audio shapes the result, from 0 to 1. Songs with vocals only. -1 leaves it to the model. |
| variety | INT | -1-1–4 | How different the two versions are from each other: 0 off, 1 normal (the model default), 2 high, 3 extra, 4 max. -1 leaves it to the model. |
| persona_id | STRING | ID of an existing Suno persona to reuse its style or voice. | |
| persona_model | COMBO | model default | Whether persona_id is a style persona or a voice persona. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
| image_urlsopt | COMFY_AUTOGROW_V3 | Up to 5 mood images (JPEG, PNG or WebP, 10 MB each). Only when the model writes the lyrics. | |
| reference_video_urlsopt | COMFY_AUTOGROW_V3 | One reference video (MP4 or WebM, up to 100 MB and 241 seconds). Only when the model writes the lyrics. | |
| reference_audio_urlsopt | COMFY_AUTOGROW_V3 | One reference audio clip (MP3 or WAV, 6 seconds to 30 minutes). Only when the model writes the lyrics. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | Several results come back as a batch; Save Audio writes one file each. |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |