Create Music Video
Suno's Auto-Visualizer, Watermark Defaults and All
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
This node takes a finished Suno track and makes a video out of it. Before you wire it up, decide what you actually want, because there are two very different jobs hiding here.
If you want a video for a track you generated - something to post, with the audio visualised - this is a one-node answer and it's cheap to try. If you want your video, with shots you chose, camera moves, and a specific look, this node is not it. It gives you Suno's visual treatment, and you have no creative control beyond two text fields. For that job, take the track into an image-to-video node (Kling, Seedance, Wan - the pack has dozens) with a still you picked.
Inputs and outputs
Two required strings, both of which are lookup keys rather than media:
task_id- the Suno task that made the music. Tooltip: it should come from Generate Music or Extend Music. Wire the generation node'stask_idoutput in.audio_id- the specific track within that task. The tooltip says it arrives in the callBackUrl data once generation finishes, which means it lives in the generation node'sraw_jsonoutput, not on a socket. Copy it from there.
Then the two optional fields that are actually burned into your output:
author(defaultDJ Electronic) - a creator name shown as a signature on the video cover, max 50 characters.domain_name(defaultmusic.example.com) - a website/brand watermark at the bottom of the video, max 50 characters.
Those defaults are placeholders, and the node ships with them filled in. Change both or you'll ship a video signed by a DJ who doesn't exist, watermarked with a domain that isn't yours. It's the single most common "why does my output look like that" moment with this node.
Also optional: timeout_seconds (default 1200, clampable 30–7200) and callback_url (leave empty; the node polls and waits instead).
Outputs: video as a native ComfyUI VIDEO object - preview it, save it, or chain it into a video upscaler. Plus url, all_urls_json, task_id, raw_json, and credits_consumed / credits_left with the credits receipt on the node.
How it works
It's a KIE Market task submission: createTask, then poll until the job lands, then download the returned MP4 and wrap it as a ComfyUI video object. The download goes through the shared media layer, which archives into output/KIE-Results/videos/ under a content-addressed filename - so a finished render doesn't die with ComfyUI's temp folder, which used to be a real complaint with API nodes in general. Video objects need a current ComfyUI build that exposes comfy_api.latest.InputImpl.VideoFromFile; on an old install the node tells you to update rather than failing cryptically.
Install
ComfyUI Manager → ComfyUI-KIE-Nodes-Next. Registry publication is prepared but not shipped according to the README:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart, then Settings → KIE.ai Nodes Next → Connection and paste your key once - validated before it replaces anything, masked fingerprint afterwards. KIE_API_KEY wins for headless installs. Python 3.10+, no GPU work, no weights.
Common issues
You shipped a video with someone else's watermark. The defaults. Change author and domain_name.
Over 50 characters. Both fields cap at 50; the provider will reject the payload. Trim it.
"Task not found" or an ID error. These are Suno task identifiers, not Comfy media. Generate first, then feed the IDs forward within the same session.
The result isn't the video you imagined. Correct - it's Suno's visualizer. If you want control, generate a keyframe image and run image-to-video instead; you'll spend more credits and get something that's actually yours.
It's a paid task every time. Including re-renders. The on-node credits receipt tells you what it cost. Video jobs are where a session gets expensive, and this category is the whole reason the KB's API-node doc says to treat per-call cost as the real trade-off rather than a footnote.
Old ComfyUI build. The video output path needs a modern video API. Update, then retry before assuming the node is broken.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| task_id | STRING | taskId_774b9aa0422f | 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 to visualize. This ID is returned in the callBackUrl data after music generation completes. |
| authoropt | STRING | DJ Electronic | Artist or creator name to display as a signature on the video cover. Maximum 50 characters. This creates attribution for the music creator. |
| domain_nameopt | STRING | music.example.com | Website or brand to display as a watermark at the bottom of the video. Maximum 50 characters. Useful for promotional branding or attribution. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
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 | — |