Get Music Video Details
Suno Made You a Music Video — This Node Tells You Where It Went
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
What it's for
Suno doesn't just make the song - it can hand back a video for it. That's a rendering job, so it runs as an async task like everything else in KIE's catalog, and tasks are things you have to look up when the graph that started them isn't there to catch the result.
Get Music Video Details is that lookup for the music-video endpoint. If a workflow crashed mid-render, if you queued the video from the KIE dashboard, or if you handed the task to an external automation tool, this is how you get the video back into ComfyUI as a native VIDEO.
It's a read. No render, no charge. And on a normal run you won't touch it: this pack's Suno generation nodes submit and wait, and hand back their outputs directly.
How it works
The node queries the music-video task record through the pack's shared client, using the key saved in Connection Settings. The pack's status reader understands Suno's conventions: it expects a status field on the response data, treats SUCCESS as done, and raises a KIE API error when it sees one of the terminal failure states - CREATE_TASK_FAILED, GENERATE_AUDIO_FAILED, CALLBACK_EXCEPTION, SENSITIVE_WORD_ERROR or FAILED. So a failed video task comes back as a message you can read, not as an empty socket you have to interpret.
One structural thing about Suno tasks that makes this node's naming worth a second look: a generation task is a container. Tracks and their derived artifacts - lyrics, stems, video - hang off it under their own identifiers. Several of the sibling nodes in this pack therefore need both a task ID and an additional ID. Keep that model in your head and this family starts making sense.
Inputs and outputs
Required: prompt - a multiline STRING, tooltip "Prompt sent to this KIE model." This one is a placeholder. KIE's docs page for this record endpoint didn't carry a machine-readable request schema when the pack built its catalog, so the node was generated from the fallback template, and the prompt box is the fallback's generic label rather than a real parameter of a status read.
Optional:
timeout_seconds- INT, default 1200, min 30, max 7200, step 30. How long the node will wait on the request.expert_override_json- STRING, default{}. On a GET-shaped node the pack sends these keys as query parameters, so this is where a task ID actually goes. Fill this and leave the prompt alone.
Because the pack re-resolves unresolved docs on demand from KIE's documentation, a later UI reload may replace these placeholders with real fields. If they appear, use them.
Outputs: video (VIDEO), url, all_urls_json, task_id, raw_json (STRING), credits_consumed, credits_left (FLOAT). Read raw_json for the record and url for the first extracted link. The media socket follows the API family's kind; a report call is metadata first.
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 ComfyUI, then save your key at Settings → KIE.ai Nodes Next → Connection. The pack checks the key against KIE before overwriting anything and shows a masked fingerprint afterwards; the stored key sits in ComfyUI's user config directory instead of your workflow file. For servers, KIE_API_KEY takes priority.
Requirements: requests, Pillow, numpy, PyYAML. No model weights to fetch, because nothing here runs offline. Windows users can take the one-click installer under dist/ instead of hand-placing the folder.
Where people get burned
Expect the video to take longer than you'd like, and expect a lookup that happens too early to look like a failure. Music-video renders are the long jobs in this family; query once, and if the record isn't terminal yet, wait rather than resubmitting - resubmitting is a new bill.
Second: the placeholder input. If the node returns a perfectly valid record that says nothing about your video, you almost certainly queried with an empty override.
Third, the Suno-shaped gotchas that bite everyone eventually. Multi-track tasks mean "the result" is ambiguous - make sure you're pointing at the right artifact. And Suno's own filters can fail a render after it starts, typically as a sensitive-word error. That's the provider refusing, not your graph misbehaving; if that's a recurring fight, local generation sidesteps it entirely.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Prompt sent to this KIE model. | |
| timeout_secondsopt | INT | 120030–7200 | — |
| expert_override_jsonopt | STRING | {} | Expert-only payload overrides for APIs whose documentation has no request schema yet. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |