Nodes/AIYang_TripleAPI/Triple API Generate (NanoBanana + Doubao + HiDream)
ComfyUI Node

Triple API Generate (NanoBanana + Doubao + HiDream)

The Triple API node's parallel gamble

By AlexXia007·Created 11 months ago·Updated 11 months ago· 1
Triple API Generate (NanoBanana + Doubao + HiDream)
    • nanobanana_image
    • doubao_image
    • hidream_image
    • nanobanana_task_id
    • nanobanana_response
    • doubao_response
    • hidream_response
    • hidream_task_id
    • status_info
    • nanobanana_image_urls
    • doubao_image_urls
    • hidream_image_urls
    ◄prompt►
    ◄nanobanana_server_urlhttps://api.nanobananaapi.ai►
    ◄nanobanana_api_key►
    ◄doubao_server_urlhttps://ark.cn-beijing.volces.com/api/v3/images/generations►
    ◄doubao_api_key►
    ◄hidream_server_urlhttps://visual.volcengineapi.com►
    ◄hidream_req_key►
    ◄enable_nanobananatrue►
    ◄enable_doubaotrue►
    ◄enable_hidreamtrue►
    ◄seed-1►
    ◄image_urls_input►
    ◄poll_interval3►
    ◄poll_timeout240►
    ◄fallback_image_url►
    ◄nanobanana_typeTEXTTOIAMGE►
    ◄nanobanana_num_images1►
    ◄nanobanana_image_size_modeauto►
    ◄nanobanana_watermark►
    ◄doubao_modeldoubao-seedream-4-0-250828►
    ◄doubao_size1K►
    ◄doubao_watermarktrue►
    ◄doubao_typetxt2img►
    ◄doubao_sequential_generationdisabled►
    ◄doubao_num_images1►
    ◄hidream_typetxt2img►
    ◄hidream_scale0.5►
    ◄max_retries3►
    ◄retry_interval2►

    Type one prompt, get three images back from three different hosted services at once. That's the pitch of Triple API Generate, the flagship node of the AlexXia007/AIYang_TripleAPI pack - it fires NanoBanana, Doubao, and the 即梦 (Jimeng) visual API in parallel and hands you each result as a separate image. It's a quality-comparison rig, a hedge against one flaky API, and a fast way to spend credits on all three platforms simultaneously. No local model, no GPU: you supply the API keys and the services do the work.

    The naming is worth a moment

    Before you trust the labels, know what you're actually calling. "HiDream" in this node is not the Beijing HiDream.ai that ships MIT open weights - it's 即梦, ByteDance's image API on Volcano Engine (the default server is visual.volcengineapi.com, the Seedream family). And "NanoBanana" is the third-party hosted API at api.nanobananaapi.ai, not Google's Nano Banana. So "three platforms" is really two ByteDance/Volcano properties plus one outside service. ByteDance keeps Seedream API-only by design, which is exactly why this node exists: it's the cloud path for models you can't run locally.

    How it works

    Under the hood it's a ThreadPoolExecutor with three workers, so the calls genuinely run in parallel - each with its own retry loop (max_retries, retry_interval) and its own polling for the async generation jobs. Fault isolation is the whole point: if Doubao errors, NanoBanana and Jimeng still come back. A failed or disabled platform doesn't kill the run; it returns a white placeholder tensor (or your fallback_image_url if you set one) and records what happened in status_info. The *_image_urls outputs follow the README's convention: a real URL list on success, ["api_error"] on failure, ["api_disabled"] when you left the key empty or the toggle off.

    The inputs and outputs that matter

    Setup is really just three things:

    • prompt - the one input all three platforms share.
    • The key/server pairs - nanobanana_api_key, doubao_api_key, hidream_req_key, each with a *_server_url default that you can usually leave alone. Fill only the keys you own, and use the enable_nanobanana / enable_doubao / enable_hidream toggles to switch off the rest - otherwise a keyless platform just burns a slot on a white image.
    • seed - shared across all three for reproducible comparisons.

    The optional bank is where the per-platform tuning lives: image_urls_input for the img2img modes (Doubao's img2img uses the first URL, multi_img_fusion uses them all, Jimeng takes up to 10), doubao_model (default doubao-seedream-4-0-250828), doubao_size (1K/2K/4K), hidream_type (including shopImg2img and vton), and hidream_scale for edit strength. Leave them until you know you need them.

    Outputs: nanobanana_image, doubao_image, and hidream_image (all IMAGE) - wire each into a Preview Image or Save Image node. The *_task_id, *_response, and status_info strings go to ShowText nodes when you're diagnosing a failure, and *_image_urls are handy if you want to hand the result off to another system without re-downloading.

    Install

    Same as any node from this pack - no models, no heavy deps (Pillow/numpy/torch, all already in ComfyUI):

    cd ComfyUI/custom_nodes
    git clone https://github.com/AlexXia007/AIYang_TripleAPI.git
    cd AIYang_TripleAPI
    pip install -r requirements.txt
    

    Restart ComfyUI and it appears as Triple API Generate (NanoBanana + Doubao + HiDream) under the AIYang_TripleAPI category. (The README tells you to cd AIYang_comfyui_tripapi after cloning - that directory doesn't exist; it's AIYang_TripleAPI.)

    Common issues

    • Three keys is the real setup cost. You need accounts at nanobananaapi.ai, the Volcano Engine console for Doubao, and 即梦's developer portal. There's no way around it; the node is only as useful as the keys you paste in.
    • White images on a slot. That's a disabled platform or an empty key. Disable what you don't use, or you'll spend a while wondering why one output is a blank square.
    • Slow runs. Everything is async and polls on your timers; bump poll_timeout (default 240s) if generations time out.
    • It's real money per image on every platform, run in parallel by design. A failed comparison costs you three API calls, not one. The README is also Chinese-only and rot-prone - it documents an img2img sibling node that isn't registered in the shipped code.
    CategoryAIYang_TripleAPI

    Inputs (29)

    NameTypeDefaultDescription
    promptSTRING—
    nanobanana_server_urlSTRINGhttps://api.nanobananaapi.ai—
    nanobanana_api_keySTRING—
    doubao_server_urlSTRINGhttps://ark.cn-beijing.volces.com/api/v3/images/generations—
    doubao_api_keySTRING—
    hidream_server_urlSTRINGhttps://visual.volcengineapi.com—
    hidream_req_keySTRING—
    enable_nanobananaBOOLEANtrue—
    enable_doubaoBOOLEANtrue—
    enable_hidreamBOOLEANtrue—
    seedINT-1-1–99999999—
    image_urls_inputoptSTRING—
    poll_intervaloptINT31–60—
    poll_timeoutoptINT2405–3600—
    fallback_image_urloptSTRING—
    nanobanana_typeoptCOMBOTEXTTOIAMGE2 options: TEXTTOIAMGE, IMAGETOIAMGE
    nanobanana_num_imagesoptINT11–4—
    nanobanana_image_size_modeoptCOMBOauto11 options: auto, 1:1, 9:16, 16:9, 3:4, 4:3, +5
    nanobanana_watermarkoptSTRING—
    doubao_modeloptSTRINGdoubao-seedream-4-0-250828—
    doubao_sizeoptCOMBO1K3 options: 1K, 2K, 4K
    doubao_watermarkoptBOOLEANtrue—
    doubao_typeoptCOMBOtxt2img3 options: txt2img, img2img, multi_img_fusion
    doubao_sequential_generationoptCOMBOdisabled2 options: disabled, auto
    doubao_num_imagesoptINT11–15—
    hidream_typeoptCOMBOtxt2img4 options: txt2img, img2img, shopImg2img, vton
    hidream_scaleoptFLOAT0.50.1–2—
    max_retriesoptINT31–5—
    retry_intervaloptINT21–60—

    Outputs (12)

    NameTypeDescription
    nanobanana_imageIMAGE—
    doubao_imageIMAGE—
    hidream_imageIMAGE—
    nanobanana_task_idSTRING—
    nanobanana_responseSTRING—
    doubao_responseSTRING—
    hidream_responseSTRING—
    hidream_task_idSTRING—
    status_infoSTRING—
    nanobanana_image_urlsSTRING—
    doubao_image_urlsSTRING—
    hidream_image_urlsSTRING—