Nodes/SeedreamComfyUI/Seedream Generate Image (Ace Data Cloud)
ComfyUI Node

Seedream Generate Image (Ace Data Cloud)

Pick the model first, everything else follows

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Seedream Generate Image (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄model(from JSON/default)►
    ◄prompt►
    ◄image►
    ◄size►
    ◄sequential_image_generation►
    ◄sequential_image_generation_options►
    ◄watermark►
    ◄output_format►
    ◄tools►
    ◄optimize_prompt_options►
    ◄callback_url►
    ◄layer_decomposition►
    ◄background►

    Some jobs your GPU simply can't do. Not because of VRAM - because the model was never released. Seedream is ByteDance's image line and it's API-only, permanently: ByteDance ships components open (Depth Anything, PuLID, SDXL-Lightning, Bernini) and keeps every product behind an API. So if you want its prompt adherence and text rendering inside a Comfy graph, a node like this is the only door. Generate Image is that door, and it needs no GPU, no checkpoint, and no disk space - just credits.

    The upside is real: people reach for Seedream specifically for consistent subjects from a single reference image and for typography that local checkpoints still fumble. The tradeoffs are the standard ones for this category - per-call metering, inputs leaving your machine, and a content filter you can't strip out because there are no weights to edit. Use it for what local can't do, not as a default.

    The mechanism, briefly

    You type a prompt, the node builds a request body from its widgets, validates that body against a local copy of the published API contract, and posts it. Validation happens before anything goes out, so a nonsense size or a Pro/Lite-only setting fails instantly and free instead of as a paid error. Paid submissions are sent without retries: one attempt, and if the connection dies you get an error plus whatever task ID was accepted. That's a feature - you don't want a dropped socket silently generating a second billed image.

    Prompts and reference URLs come back as a task, not as pixels.

    The one input that decides everything

    model. Four fixed IDs: doubao-seedream-5-0-pro-260628, doubao-seedream-5-0-lite-260128, doubao-seedream-4-0-250828, doubao-seedream-4-5-251128. The default is the sentinel (from JSON/default); the API's own default is the 5.0 Lite at 2K.

    Which one you pick constrains the rest of the node, and this is where people waste a run:

    • 5.0 Pro - quality-first. Sizes 1K, 1.5K, 2K. Accepts reference images (up to 10) alongside the prompt, and is the only model allowed to do layer decomposition or background control. No sequential generation, no web search.
    • 5.0 Lite - the workhorse, and the only model that supports sequential_image_generation: auto (with sequential_image_generation_options, a JSON object like {"max_images": 4}, 1–15 images) and the tools web-search option. Sizes 2K, 3K, 4K, or explicit WxH.
    • 4.0 / 4.5 - plain text-to-image with a prompt. Everything else in the widget list - layer_decomposition, background, output_format, tools - is refused.

    prompt is a multiline string and for text-to-image it's the whole input. image is there too, as a URL string or a JSON array of URLs: that's your image-guided generation path, and it's why this node overlaps with Edit Image rather than being strictly text-to-image.

    Everything else is the pack-wide override rule: size, watermark, output_format, sequential_image_generation, sequential_image_generation_options, tools, optimize_prompt_options, callback_url, plus the freeform parameters_json - leave a widget empty and it's omitted from the request; fill it in and it wins over the matching JSON field.

    Outputs and wiring

    Six STRINGs: status, task_id, media_urls_json, first_media_url, result_json, trace_id. On a fresh submission you'll usually see status come back pending with empty URLs - that's normal and expected. Take task_id, run Seedream Retrieve Task with it, and once the status reads succeeded, send first_media_url into Seedream Load Image to get an IMAGE (or parse media_urls_json for all of a sequential batch). result_json is the normalized response with request internals and token-ish fields stripped, so it's the safe field to print or log.

    A pattern worth stealing: generate the frame here, then upscale and detail it locally.

    Installing

    ComfyUI Manager: search Seedream, confirm publisher acedatacloud and package Seedream by Ace Data Cloud, install, restart.

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

    Then ACEDATACLOUD_API_KEY (or ACEDATACLOUD_API_TOKEN) into the ComfyUI process environment, restart. Requirements are just requests and jsonschema; there's no model to download and no ComfyUI version drama beyond the native-loader note in the README.

    Common issues

    Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart. - the env var exists in your shell but not in whatever launched ComfyUI. Set it for the process, restart the app.

    Sequential generation and web search require a supporting Lite model. - you asked for multi-image output or the web-search tool on Pro. Switch model to a 5.0 Lite.

    Layer decomposition and background control require Seedream 5.0 Pro. - the mirror image of that, and the reason a 4.x model refuses both outright.

    Pending forever - you're looking at a submission, not a result. Use the retrieve node. And if a run errored on a connection failure, resist the urge to hit Queue again: the accepted task_id was probably printed, and re-submitting is paying twice for the same picture.

    Last caveat, since this is the pack's flagship node: Ace Data Cloud is a reseller with essentially no community footprint, so there's no crowd-sourced reliability record here the way there is for the official Partner Nodes. The registry path exists and the publisher is verifiable, but a key-holding, network-calling pack is exactly the shape of thing that got weaponized in this ecosystem once already.

    CategoryAce Data Cloud/Seedream

    Inputs (14)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    modelCOMBO(from JSON/default)5 options: (from JSON/default), doubao-seedream-5-0-pro-260628, doubao-seedream-5-0-lite-260128, doubao-seedream-4-0-250828, doubao-seedream-4-5-251128
    promptSTRING—
    imageSTRING—
    sizeSTRING—
    sequential_image_generationSTRING—
    sequential_image_generation_optionsSTRING—
    watermarkSTRING—
    output_formatSTRING—
    toolsSTRING—
    optimize_prompt_optionsSTRING—
    callback_urlSTRING—
    layer_decompositionSTRING—
    backgroundSTRING—

    Outputs (6)

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