Relay Sound Generator
Suno Tracks, Generated Inside ComfyUI
- audio
- clip_id
- task_id
- response
- audio_url
Music is the one generation job where the API still cleanly beats local: Suno is best-in-class at full songs, and there's no open-weights equivalent at its quality (the closest, ACE-Step, is a 4GB-friendly local option with famously rough vocals). RelaySoundGenerator puts Suno into your ComfyUI graph - submit a description or lyrics, poll until the track's done, and get back an AUDIO object, a clip_id for extending it, and the URL. If you're scoring a video you rendered in ComfyUI, this closes the loop without leaving the app.
Like the other generators it's a passenger on Relay API Settings: pick sound as the task type, Suno as the platform, and either suno/submit or runninghub-/openapi/v2 as the format, and the info wire carries the rest.
How it works
Submit, then poll. On the suno/submit format the node POSTs to /suno/submit/music and polls GET /suno/fetch/{task_id}; on the RunningHub path it submits to /openapi/v2/rhart-audio/suno-v5.5/single (or custom) and polls /openapi/v2/query. Your version choice maps to Suno's internal mv codes - V3 through V5.5 become chirp-v3.0 up to chirp-fenix - so "V5" in the dropdown is literally asking the relay for a chirp-crow generation. Two submission styles exist: description mode (describe the song, Suno figures it out) and lyrics mode (you hand it the words), which are the node's two generation_mode values - labeled in Chinese (描述模式 and 歌词定制模式), so don't be surprised when the dropdown isn't in English.
Inputs and outputs that matter
generation_mode- description mode vs. custom-lyrics mode.title/tags/prompt- the song title, style tags, and the description or lyrics.make_instrumental- true for instrumental-only, no vocals.version- V3 → V5.5, mapped to thechirp-*model codes.negative_tags- styles you explicitly don't want.extend_mode/continue_clip_id/continue_at- continuation. Run a track, take itsclip_id, feed it back with a start offset and the node extends rather than starts fresh.seed- ComfyUI-local only; not sent to Suno.
Outputs: audio (the track, as an AUDIO object for a preview/save node), clip_id (for extending), task_id, response (JSON), and audio_url.
Installing the pack
cd ComfyUI/custom_nodes
git clone https://github.com/flywhale-666/ComfyUI-relayapi
…or search "ComfyUI-relayapi" in ComfyUI Manager, restart, and you're done - no dependencies beyond ComfyUI's bundled requests and Pillow, no models to download.
Gotchas
The README is upfront about the weirdest Suno quirk: a single request can return two songs, and this node only hands you the best clip on the audio output - the full list stays in response.query, so if you wanted both, grab them from there. If you pick a version the relay doesn't serve, or a custom_model that doesn't match the suno/submit format, expect a model-mismatch error rather than a graceful fallback. And the usual relay rules apply: key must match base, api_base must be one the Suno endpoints actually exist on, and every generation bills you - good for a few scoring tracks, brutal as a default for experiments. If your use case is "instrumental loop, local, free per call," ACE-Step is the honest alternative; if you want a real song with vocals and don't want to fight the Suno web UI's queue, this node is exactly the shortcut it looks like.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| generation_mode | COMBO | 描述模式 | 2 options: 描述模式, 歌词定制模式 |
| title | STRING | — | |
| tags | STRING | — | |
| prompt | STRING | — | |
| make_instrumental | BOOLEAN | false | — |
| version | COMBO | V5 | 7 options: V3, V3.5, V4, V4.5, V4.5+, V5, +1 |
| seed | INT | 00–18446744073709550000 | — |
| infoopt | STRING | — | |
| negative_tagsopt | STRING | — | |
| extend_modeopt | BOOLEAN | false | — |
| continue_clip_idopt | STRING | — | |
| continue_atopt | FLOAT | 0.0 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| clip_id | STRING | — |
| task_id | STRING | — |
| response | STRING | — |
| audio_url | STRING | — |