Get Timestamped Lyrics
Inside Get Timestamped Lyrics
- text
- task_id
- raw_json
- credits_consumed
- credits_left
What it's for
You generated a song with Suno. You have the audio. What you don't have is when each line is sung - and without that, you can't subtitle it, burn lyrics into a vertical video, or drive a visualizer that reacts per line.
That's the entire job of Get Timestamped Lyrics: hand KIE a finished music task and get the lyric lines back with their time positions. It's the step between "I have a track" and "I have a lyric video," and it's the reason it exists as its own node rather than as a checkbox on the generation node.
Worth saying plainly: everything in this pack is API-backed, so the Suno nodes are not local music generation. If you want music made on your own GPU, that's ACE-Step territory - it's the open answer to Suno, it runs in 4GB of VRAM on the cheap end, and it's genuinely good at instrumental work. Suno still wins on vocals and on finishing a whole song without babysitting. Use the API when you want the finished thing; keep ACE-Step around when you don't want to pay per track.
How it works
This node posts the documented Suno request - a task_id from a music generation or extend job, plus an audio_id for one specific track - and returns the timestamped lyric payload. Per the bundled KIE catalog it's transported through the KIE Market envelope (/api/v1/jobs/createTask) rather than a bespoke endpoint, which is why the node has a settle-and-wait shape rather than being a pure GET.
The pack's standard flow applies: authenticate, submit, wait for the job to report success, then map the result into native ComfyUI types. There's no audio socket here because what comes back is text - this node is the metadata companion to the track you already have.
Where the two IDs come from matters, and the tooltips say it directly: task_id is the identifier returned by Generate Music or Extend Music, and audio_id identifies the specific track inside that task. Suno tasks routinely contain more than one track, which is exactly why you have to name the one you want instead of just saying "the lyrics."
Inputs and outputs
Two required strings, both copy-paste from elsewhere in your graph:
task_id- the music generation task whose lyrics you want. The default shows the masked shape KIE documents (5c79****be8e); your real value is the task ID your generation node already exposes on itstask_idoutput socket.audio_id- which track within that task. KIE's docs say this arrives in the callback data once generation completes.
Optional: timeout_seconds (default 1200, adjustable 30–7200) if you're on a slow queue, and callback_url, which is documentation plumbing - leave it empty unless you're deliberately building an out-of-Comfy callback flow. The pattern is standard for this pack: the node submits, then polls until the task reports done or the timeout expires.
Outputs: text is the payload you actually want, as a STRING - feed it to a text preview, a save-text node, or an LLM node that turns timestamps into an SRT. task_id echoes the task you queried, raw_json is the full untrimmed response (check here if the timestamps look structured and you'd rather parse them yourself), and credits_consumed / credits_left tell you what this lookup cost and what's left in the account.
Note what you don't get: no AUDIO socket, no all_urls_json. This is a metadata node, so if you also need the track itself, branch from the Suno generation node's audio output instead of trying to route it through here.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart, then set your key once at Settings → KIE.ai Nodes Next → Connection. The pack ships no models and pulls nothing heavy - its requirements.txt is requests, Pillow, numpy and PyYAML - so this is a small install. The README also points Windows users at the one-click installer in dist/, which handles ComfyUI Desktop's non-obvious user-data paths for you.
Where people get burned
Mixing up the two IDs is the classic. Pasting a task ID you generated on a different platform, or a track ID from a different task, gets you an error rather than the wrong lyrics - KIE validates the pair. Get them from the same generation run.
The second is expecting timestamps to be ready immediately. Lyrics data is only available once the music task has actually finished; query too early and there's nothing there yet, which reads as a failure but is really a race. Queue the generation, let it complete, then run the lookup.
Third: the pack's node catalog is built from KIE's documentation on startup and refreshed at most once a day, so a freshly added KIE endpoint may not have a node until the next sync. If a Suno node behaves oddly right after KIE ships something new, restart ComfyUI and let it re-read the catalog before you file anything as broken.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| task_id | STRING | 5c79****be8e | Unique identifier of the music generation task. This should be a task_id returned from either the "Generate Music" or "Extend Music" endpoints. |
| audio_id | STRING | e231****-****-****-****-****8cadc7dc | Unique identifier of the specific audio track for which to retrieve lyrics. This ID is returned in the callBackUrl data after music generation completes. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |