Nodes/NanoBananaComfyUI/Nano Banana Retrieve Tasks (Ace Data Cloud)
ComfyUI Node

Nano Banana Retrieve Tasks (Ace Data Cloud)

One Node to Collect a Whole Night of Queued Nano Banana Tasks

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Nano Banana Retrieve Tasks (Ace Data Cloud)
    • results_json
    ◄task_ids_json[]►

    Retrieve Task asks about one ID and waits for it. That's fine for a single image and tedious for twenty. AceNanoBananaRetrieveBatch is the bulk read: hand it a list of task IDs, get back the status of every one of them in a single request, and not a cent charged, because it queries rather than generates.

    If the pack's async split - submit now, collect later - is what put you off the whole thing, this node is the answer to it. Queue thirty edits before bed, collect them in the morning with one call.

    How it works

    One POST to /nano-banana/tasks with action: retrieve_batch and your array of IDs. Read-only, so it gets the same three-attempt retry treatment the single retrieve does while the paid submits get exactly one shot. No waiting, no polling loop, no wait_seconds - it reports whatever the tasks are right now and returns.

    The normalization is where the useful behavior lives. For each task it looks for a completion state or image URLs, and if a task has failed it records that as status: "failed" instead of throwing. So one dead job among twenty doesn't take out the whole batch - you get a result row you can act on. Non-dict entries get skipped silently, and a malformed batch response does raise, because at that point there's nothing sensible left to do.

    Inputs and outputs

    • task_ids_json - multiline, a JSON array of strings. The field must be a nonempty array, and every element must be a nonempty string, or you get "Task IDs must be a nonempty JSON array of strings." This is the part that catches people: it's a real JSON array, ["abc123", "def456"], not one ID per line. That's the difference from the Edit node's reference field, which accepts either format.
    • Output: results_json - a single string holding a JSON array, one object per task: status, task_id, image_urls, trace_id. Plus a small UI panel that prints how many tasks were retrieved.

    Yes, it's a string rather than an IMAGE, and that's correct - different tasks can have different sizes and different counts, so there's no honest way to batch them into one tensor. Read the array, take the image_urls from the tasks that succeeded, and send those to Load Images one task at a time.

    Install

    ComfyUI Manager → Custom Nodes → search Nano Banana, confirm publisher acedatacloud, install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/NanoBananaComfyUI.git
    cd NanoBananaComfyUI
    python -m pip install -r requirements.txt
    

    requests>=2.31,<3 and nothing else - no model downloads, no GPU, no heavy wheels. Key in the process environment, then restart ComfyUI:

    export ACEDATACLOUD_API_KEY='paste-your-key-here'
    python main.py
    

    Where people get burned

    Nothing to watch it with. results_json is a string, so there's no image preview and no obvious node to route it into. The README's advice - "Copy the task ID from Preview as Text" - is the same shape of problem in the other direction. In practice you either read the panel, or wire it into a text-display node, or paste it somewhere you can see it. It's a reporting node, not a pipeline node.

    Task IDs you never wrote down. This node can only collect IDs you kept. The Generate and Edit nodes try to make that easy by printing the ID in their own panel output, but once the graph has run and the panel is gone, the ID is in the Comfy console log or nowhere. Keep a scratch text file when you're queueing in bulk.

    "Nano Banana returned an invalid batch result." The service returned something the node couldn't parse - usually a service-side hiccup rather than your IDs. Since this is a free read, just run it again.

    One failed task isn't a failed batch. People queue a bunch, see an error row, and assume the whole thing is dead. Read the array - failures are marked individually, and the successes still hold URLs worth collecting.

    CategoryAce Data Cloud/Nano Banana

    Inputs (1)

    NameTypeDefaultDescription
    task_ids_jsonSTRING[]—

    Outputs (1)

    NameTypeDescription
    results_jsonSTRING—