Nodes/MidjourneyComfyUI/Midjourney Get Seed (Ace Data Cloud)
ComfyUI Node

Midjourney Get Seed (Ace Data Cloud)

The Node That Lets You Go Back to That One Image

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Midjourney Get Seed (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄image_id►

    What it is

    Every image a diffusion model produces comes from a seed, and if you have the seed you can get that composition back. Locally this is free and automatic - your sampler has a seed widget, your workflow JSON is embedded in the PNG, and the number travels with the file. Midjourney's side of the world doesn't hand it to you by default, and this node is how you pull it out: give it an image ID, get the seed.

    Why it matters inside a ComfyUI graph is continuity. You generate something in Midjourney through Imagine, like the composition, keep iterating on it, and later want that exact starting point again for a variant. Without the seed you're re-rolling and hoping. With it, you're reproducing. If you've ever had a great local generation ruined because you flattened the image and lost the embedded workflow, you already understand why this node exists - it's the API-side version of that anxiety.

    How it works

    The contract behind this tool is the simplest in the pack: a POST to /midjourney/seed with one required field, and - unlike Imagine, Edits and Videos - no async mode. There's no task to poll. The answer arrives with the same call.

    So the shape of the result is different from the generator nodes: status reads succeeded, task_id is empty, and the number you want is somewhere in result_json. media_urls_json and first_media_url will typically be empty strings, because this response is text. The node still exposes all six STRING outputs - every tool node in this pack does, since they're all generated from the same template.

    Inputs and outputs

    • image_id (required) - the Midjourney image identifier, not a URL and not the CDN link. The contract's own fixture uses a string like owned-image. Notably this means it works on images the account owns; it's not a universal "look up any Midjourney picture" service.
    • parameters_json - the shared escape hatch, defaulting to {}. Leave it alone unless the published contract has a field the widgets don't cover.
    • Outputs: status, task_id, media_urls_json, first_media_url, result_json, trace_id. Read result_json; keep trace_id if you're debugging a call with the vendor.

    One honest caveat about where this fits a graph: the pack's Imagine node has no seed widget, and the shipped /imagine contract has no seed field either. So the seed you get here is for you, not for a wire on the canvas - you record it, or you hand it to the service the way Midjourney normally takes it (as prompt-side syntax) if you're comfortable writing that. Anyone building an automatic seed round-trip in this pack is going to have to do it through prompt text and parameters_json, not through a dedicated field.

    Install

    ComfyUI Manager → search Midjourney → publisher acedatacloud, package Midjourney by Ace Data Cloud (Registry ID midjourney) → install → restart. Or from source, inside your ComfyUI install:

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

    Set the key where ComfyUI can see it and restart:

    export ACEDATACLOUD_API_KEY=your-key-here
    

    ACEDATACLOUD_API_TOKEN works too. Dependencies are just requests and jsonschema; nothing to download, no rebuild.

    Common issues

    Key not found. The error is explicit - "Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart." Exporting it in one terminal and launching ComfyUI from another is the usual cause. There is no key widget on the node by design; putting a credential in a workflow JSON is how keys end up in screenshots.

    "Invalid image_id" style rejection before any request. Empty required fields are caught locally against the contract - the pack validates first and calls the service second. That's a feature: a malformed lookup costs you nothing.

    You have a URL, not an image ID. The CDN link from a completed task won't do here. This endpoint wants the service's own image identifier, so keep the result_json from your generation around - the ID you need is in there, and it's much easier to grab at generation time than to reconstruct later.

    Random image doesn't behave like the seed you saved. Seeds fix the starting noise, not the whole pipeline. A prompt change, a different version (--v), or a different aspect ratio will move the output even with the seed held constant. This is as true in Midjourney as it is in a local sampler, and it's the single most common false expectation around seeds anywhere.

    It's a billable call. Cheap, but not free. Batching it over an archive of images is the sort of thing people do once and regret.

    CategoryAce Data Cloud/Midjourney

    Inputs (2)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    image_idSTRING—

    Outputs (6)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    media_urls_jsonSTRING—
    first_media_urlSTRING—
    result_jsonSTRING—
    trace_idSTRING—