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 10 months ago·Updated 10 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