Nodes/KIE.ai Nodes Next/Recovery Audio
ComfyUI Node

Recovery Audio

Getting a Suno Track Back When the Node Gave Up on You

By felipederosilva·Created about a month ago·Updated a day ago· 3
Recovery Audio
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄task_id{task_id}►
    ◄expert_override_json{}►

    A repair tool, not a generator

    Everything else in the Suno section of this pack makes music. This node fetches music you already made. It hits KIE's recovery endpoint - a GET that takes a task_id and hands back the record information for that job - which is the thing you reach for when a generation actually succeeded on KIE's side but your graph lost the result: ComfyUI was closed mid-run, the wait timed out, the tab died, or you queued a batch of six songs and only remember the URL for two of them.

    Local music generation has genuinely arrived - ACE-Step runs on a 4 GB card at quality people describe as "approaching Suno v4.5/v5," and it's Apache/MIT licensed, so you can train LoRAs on it. But the recurring complaint is vocals and lyrics, and that's exactly the job where hosted Suno still wins. So a node that recovers a good Suno take instead of making you regenerate it is worth having: a burned credit and a lost URL shouldn't mean a second bill.

    What you feed it

    The input list is deliberately tiny:

    • task_id - optional in the schema, but this is the node. The task_id output of your music-generation node is what goes here. The placeholder default ({task_id}) is exactly what it looks like: a template, not a value.
    • expert_override_json - the pack's escape hatch, present because this endpoint's documentation doesn't publish a request schema. Leave it as {} unless you're deliberately overriding something.

    No timeout_seconds, no callback_url. That's not an oversight: this is a GET lookup, so there's no job to wait on.

    Outputs are the pack's audio standard: audio, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. Realistically you'll wire audio into a Save or preview node and keep raw_json for when you want to see what the endpoint actually reported about the task.

    How to actually use it

    You need the ID from before. If you still have the earlier run's graph, that's easy - the music node emits task_id, so pull it from the raw_json/task_id value you logged, or from KIE's own dashboard, and type it into the widget by hand.

    A quick practical note: this node is a lookup, not a render, so it won't cost you a generation. If audio comes back empty but url or raw_json has a link in it, don't assume the recovery failed - feed the URL into KIE • Download File (which takes a URL plus a suffix and writes a local path), or KIE • Download Image if you want the cover art. Download File is the flexible one for audio.

    Install

    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 set the key once at Settings → KIE.ai Nodes Next → Connection. The connection panel shows your credit balance alongside the ✅ CONNECTED status, which is a decent way to confirm the key before you spend a recovery attempt on a typo'd task ID.

    Honest limits

    It recovers your own tasks. It doesn't recover a task from a different KIE account, and a genuinely failed generation stays failed - the endpoint reports record info, it doesn't re-run anything. If KIE's Suno endpoint has already discarded the record, there's nothing to fetch, and that window is not something you control. Save your task IDs somewhere. The one-line version: this is the seatbelt, not the brake.

    CategoryKIE Next/Audio/Suno/Music Generation

    Inputs (2)

    NameTypeDefaultDescription
    task_idoptSTRING{task_id}—
    expert_override_jsonoptSTRING{}Expert-only payload overrides for APIs whose documentation has no request schema yet.

    Outputs (7)

    NameTypeDescription
    audioAUDIO—
    urlSTRING—
    all_urls_jsonSTRING—
    task_idSTRING—
    raw_jsonSTRING—
    credits_consumedFLOAT—
    credits_leftFLOAT—