Nodes/ComfyUI-teamToken/teamToken Image
ComfyUI Node

teamToken Image

Nano-banana and GPT Image in your graph, with no GPU and no weights

By TeamToken-store·Created 5 days ago·Updated a day ago· 0
teamToken Image
  • image
  • images
  • cost_usd
model
prompt
aspect_ratio
resolution
n1
seed0
api_key
server_url

There is no nano-banana checkpoint to download. Google never shipped one, GPT Image is a product rather than a file, and no amount of VRAM gets you either - the closed models have no open weights at all, which is the whole reason API-wrapper nodes exist. teamToken Image is one of those: a thin HTTP client with a node's face on it. Your prompt goes out to the teamToken gateway, a base64 PNG comes back, and a perfectly ordinary IMAGE socket comes out the other side as if a local sampler had made it.

That's the pitch, and it's worth being clear about the trade. You get the strongest instruction-following and text-in-image models available, on hardware you don't own, at per-image prices. You give up privacy (prompt and reference image leave the machine), reproducibility (there's no seed to fix), and offline operation.

How it works

The node POSTs a small JSON body to /v1/images/generations on the gateway. The gateway polls the provider for up to ~150 seconds and, if the image is ready, hands back base64 inline; if generation outruns that window it returns a 202 with a job id and the node keeps polling until the bytes arrive. Either way you get one stacked IMAGE tensor back.

Two mechanism details are worth knowing before you spend anything:

  • seed is never sent to the API. Media generation server-side is non-deterministic and the endpoint doesn't accept a seed, so the widget exists purely to steer ComfyUI's own cache. Identical inputs reuse the previous result and are not re-billed; moving the seed forces a fresh, paid generation. It also ships with control_after_generate, so one click on the dropdown is enough to force a fresh image.
  • The model list is live. The dropdown is fetched from the gateway's public catalog (GET /cabinet/api/public/media-models) in a background thread, so new models and repriced tiers show up without a pack update. A bundled snapshot keeps the dropdown populated when you're offline. If you ever see (no models - check API/network), that's the fallback also missing - check the gateway URL.

The inputs that matter

Required are just model and prompt. Of the optional ones, these are the three you'll actually touch:

  • aspect_ratio (default 1:1) and resolution (1K/2K/4K) - separate from the model name, unlike some providers. The node always sends both, so "default" really means 1:1 at 1K unless you change them.
  • n - how many images in one request, 1 to 10. They come back as a single batched IMAGE, so a Save Image node writes all of them. If the provider returns a mixed batch of sizes, the node zero-pads each frame onto the largest canvas rather than dropping generations you already paid for; crop downstream if that bites.
  • image - optional reference image. With it, the same node acts as image-to-image and your prompt turns into an edit instruction.

api_key and server_url are overrides. Leave them empty - a key typed into the node gets saved into the workflow file and travels with anything you share. Outputs are images (wire it anywhere an IMAGE goes) and cost_usd, a string with the exact charge for that call.

Install

ComfyUI-Manager: search ComfyUI-teamToken and install. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/TeamToken-store/ComfyUI-teamToken
pip install requests
# restart ComfyUI

requests is the only dependency - the pack deliberately doesn't pin torch or Pillow, since ComfyUI supplies them and pinning risks a resolver fight. No models, no GPU, nothing to download. Get a key at app.teamtoken.store → Keys, then set it once via Settings → teamToken → API key, or:

export TEAMTOKEN_API_KEY=sk-...   # before launching ComfyUI

Where people get burned

402 and 401. A 402 is "insufficient balance" - your credits ran out. A 401 is a missing or wrong key. Errors surface with the provider's own code, so [EMPTY_PROMPT] means exactly what it says: an empty or whitespace-only prompt is rejected before anything is billed.

"Nothing changed and I got the same image." That's the cache, not a bug - and it's free. Change the seed if you wanted a different one.

Old job ids expire. Results live 7 days server-side. The node returns bytes immediately, so this only matters if you re-poll an old id; re-running an expired one throws a "this result expired" error.

Weird host errors. The client refuses to send your key over plaintext HTTP or to an untrusted host - a shared workflow can't point server_url at an attacker to harvest the key. Running your own gateway? Add its host: export TEAMTOKEN_ALLOWED_HOSTS=gateway.example.com.

One honest note on cost: the bundled catalog lists nano-banana-pro around $0.027/image and grok-image at $0.02, while gpt-image-2 ranges from roughly $0.06 for low/1K to about $0.94 for high/4K. Those are snapshot numbers and the live catalog is authoritative, but they tell you the shape of the thing - 4K at n=10 is not a cheap experiment.

CategoryteamToken/image

Inputs (9)

NameTypeDefaultDescription
modelCOMBOImage model, fetched live from the teamToken catalog
promptSTRINGWhat to generate; with an IMAGE input it guides the edit
aspect_ratiooptCOMBOOutput aspect ratio (default 1:1)
resolutionoptCOMBOOutput resolution tier (default 1K)
noptINT11–10How many images to generate in one request
imageoptIMAGEOptional reference image for image-to-image
seedoptINT00–18446744073709550000Change to force a fresh (paid) generation; identical inputs reuse the cached result
api_keyoptSTRINGOverrides the teamToken settings key. ⚠️ This value is saved INTO the workflow file — prefer the teamToken Settings pane or $TEAMTOKEN_API_KEY so your key isn't shared with the workflow
server_urloptSTRINGLeave empty to use the teamToken settings / env / default gateway

Outputs (2)

NameTypeDescription
imagesIMAGE
cost_usdSTRING