Nodes/SpicyAPI/Suno v6 · Text to Music
ComfyUI Node

Suno v6 · Text to Music

Hand It Your Lyrics or Let It Write Them

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Suno v6 · Text to Music
  • image_urls
  • reference_video_urls
  • reference_audio_urls
  • audio
  • task id
◄prompt►
◄lyrics►
◄generate_lyricstrue►
◄instrumentalfalse►
◄title►
◄negative_prompt►
◄vocal_gendermodel default►
◄style_weight-1.00►
◄weirdness-1.00►
◄audio_weight-1.00►
◄variety-1►
◄persona_id►
◄persona_modelmodel default►
◄seed0►

This is the full-strength Suno v6 node: a style brief and, if you have them, your words, and you get back two finished songs with vocals. Flat $0.072 per run, no GPU, no model download. It's the node you'd reach for over its Mini sibling when the song is the deliverable rather than a draft.

The one decision that matters

Everything else on this node is polish. The real fork is whether the model writes the lyrics or you do, and it's controlled by two widgets with rules people miss.

Leave lyrics empty with generate_lyrics on and instrumental off, and the model writes the words from your prompt. Fill lyrics in, and your words get sung in order - with [Verse], [Chorus] and [Bridge] acting as structure tags that shape the song without being sung. The author's own tooltip spells this out: generate_lyrics "only applies when lyrics is empty and instrumental is off." title has the same conditional smell: it's metadata, not a sung line, and it applies with lyrics or an instrumental, otherwise the model names the song itself.

The second-order rule is on the three autogrow sockets - mood images, a reference video, a reference audio clip. All three say "only when the model writes the lyrics." So if you've wired up five mood boards and the song sounds nothing like them, check whether you've also pasted lyrics in. You probably have.

What you get

The API returns two takes. The pack downloads both MP3s, decodes them with PyAV, and hands them back as a single batched AUDIO value on the audio output, next to a task id string. Wire Save Audio to it and you get one file per take. If the two takes are too similar (or too far apart), that's variety - 0 for off, 1 normal, 2 high, 3 extra, 4 max. It's not a "how weird should this be" dial; weirdness is, and it runs 0 to 1.

Inputs worth touching

  • prompt - genre, mood, tempo, instruments, voice. Up to 1,000 characters.
  • lyrics - your words, section tags included.
  • negative_prompt - styles and elements to keep out.
  • vocal_gender - nudges the lead toward female or male, when there's a lead at all.
  • style_weight / weirdness / audio_weight - all default to -1. In this pack, -1 means "omit the field and let the model decide", not "zero". Same for variety.

persona_id and persona_model (style_persona or voice_persona) pull in an existing Suno persona to reuse a style or a voice - the one input here you can't fake with a good prompt, because it's the model's memory of a previous session, not a style description.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi

Restart ComfyUI, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys. On a server, set SPICY_API_KEY in the environment instead. Then restart once more, because the node list is rebuilt from your account at startup - that's also why a model you saw on the site might not be in your menu yet.

There is genuinely nothing else to install. pyproject.toml lists dependencies = []; the pack runs on what ComfyUI already ships (aiohttp, torch, Pillow, PyAV) and needs Python 3.10+ and the V3 node API. ComfyUI Manager will find it by the pack name too, if you'd rather not touch a terminal.

Where people get burned

The key never lands in the workflow or in a saved image's metadata - it sits in user/spicyapi/config.json, and if you share a graph it's just a graph. Good design, and it means the failure mode you'll actually hit is "No SpicyAPI key is set", not a leaked key.

Seeds on these nodes start on fixed rather than randomize, deliberately: every run is billed, so queueing the same graph twice reuses the cached result instead of quietly charging you again. When you do want a new song, change the prompt or flip control-after-generate to randomize - and set Max cost per run in the same settings panel so nothing surprising gets through. Cancelling a run stops you waiting; it does not stop the job on SpicyAPI, which is charged if it succeeds.

Cheap trick worth knowing: keep the same lyrics, flip instrumental on, and you get a karaoke-style check on your arrangement before you spend more runs on vocals.

One note on the genre itself. Our KB's read on audio is that this is the newer, thinner layer of the ecosystem - the models are real, but the tooling lives at the edge rather than the centre. Suno-through-an-API-node is exactly that shape: excellent output, a meter running, and a workflow that's only as portable as your internet connection.

CategorySpicyAPI/Audio/Suno

Inputs (17)

NameTypeDefaultDescription
promptSTRINGDescribe 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.
lyricsSTRINGWords to sing, sung in order. Section tags such as [Verse], [Chorus] and [Bridge] shape the song and are not sung.
generate_lyricsBOOLEANtrueLet the model write the lyrics from the prompt. Only applies when lyrics is empty and instrumental is off.
instrumentalBOOLEANfalseGenerate music with no vocals.
titleSTRINGSong title (metadata, not sung). Applies with lyrics or an instrumental; otherwise the model names the song.
negative_promptSTRINGStyles or elements to keep out of the song.
vocal_genderCOMBOmodel defaultMake a female or male lead vocal more likely. Applies with lyrics.
style_weightFLOAT-1.00-1–1How closely to follow the style in the prompt, from 0 to 1. -1 leaves it to the model.
weirdnessFLOAT-1.00-1–1How experimental the song may get, from 0 (conventional) to 1 (unusual). -1 leaves it to the model.
audio_weightFLOAT-1.00-1–1How strongly a persona's audio shapes the result, from 0 to 1. Songs with vocals only. -1 leaves it to the model.
varietyINT-1-1–4How 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_idSTRINGID of an existing Suno persona to reuse its style or voice.
persona_modelCOMBOmodel defaultWhether persona_id is a style persona or a voice persona.
seedINT00–2147483647This 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_urlsoptCOMFY_AUTOGROW_V3Up to 5 mood images (JPEG, PNG or WebP, 10 MB each). Only when the model writes the lyrics.
reference_video_urlsoptCOMFY_AUTOGROW_V3One reference video (MP4 or WebM, up to 100 MB and 241 seconds). Only when the model writes the lyrics.
reference_audio_urlsoptCOMFY_AUTOGROW_V3One reference audio clip (MP3 or WAV, 6 seconds to 30 minutes). Only when the model writes the lyrics.

Outputs (2)

NameTypeDescription
audioAUDIOSeveral results come back as a batch; Save Audio writes one file each.
task idSTRINGThe SpicyAPI task id, for the console logs or support.