Nodes/EvoLink (Official)/EvoLink Upload Image (Official)
ComfyUI Node

EvoLink Upload Image (Official)

The EvoLink Upload Node You Probably Don't Need (Yet)

By deeplearning-goethe·Created about a month ago·Updated 17 days ago· 0
EvoLink Upload Image (Official)
  • image1
  • image2
  • image3
  • image4
  • image5
  • image6
  • image7
  • image8
  • image_urls
  • count
api_key

First, the honest headline: for normal image-to-image you do not need this node. The EvoLink pack's whole trick is that you wire a Load Image straight into image1 of EvoLink GPT Image 2 and the local file rides up through EvoLink's own upload channel automatically. This node exists for the edge case where you want the upload as its own step - when your workflow is complicated enough that you need public URLs as a first-class value you can route around.

What it does

It takes local images, pushes them through EvoLink's official file channel, and hands you back the temporary public URLs as text. Think of it as "expose these images to the internet for 72 hours." That expiry is deliberate: files are auto-deleted after three days, and there's no third-party image host (no imgbb, no signup) in the path. The default quota is 2,000 uploaded files.

How it works

Under the hood it's plain and slightly inelegant in a way that works fine: each image is encoded as a base64 PNG data URI and POSTed one at a time to files-api.evolink.ai/api/v1/files/upload/base64, which returns a file_url. ComfyUI IMAGE tensors get converted frame-by-frame to PNG, so a batch input uploads every frame. One request per image, each with a 120-second timeout.

The inputs and outputs

Inputs are minimal:

  • image1 (required) - the image(s) to upload; accepts a batch.
  • image2 through image8 - seven more sockets if you need to upload a pile at once. Note the asymmetry: the generation node accepts reference images on just four sockets, so this node's eight are a genuine extension for heavy multi-reference setups.
  • api_key - same story as everywhere in this pack: fill once, it's saved to a local config file, leave it blank after that.

Outputs:

  • image_urls - a STRING with the public URLs, one per line.
  • count - an INT telling you how many files got uploaded, which is handy if a batch silently came up short.

Where it fits in a workflow

The natural target is the image_urls text input on EvoLink GPT Image 2 (or any cloud node that accepts URLs), which lets you mix uploaded images with pre-existing public URLs up to the API's 16-reference limit. That's a genuinely useful pattern for "place my subject into a new scene" workflows with more references than four sockets allow. If you're not hitting that ceiling, skip this node - it's extra moving parts with nothing to gain.

Installing it

Same pack as the generator, so one install covers both:

cd ComfyUI/custom_nodes
git clone https://github.com/deeplearning-goethe/comfyui-evolink.git

Then restart ComfyUI fully (console window closed, not just a browser refresh). The only dependency is requests, already present in a normal ComfyUI install. In ComfyUI Manager you can just search EvoLink.

Gotchas worth knowing

Two real ones. First, the 72-hour expiry means any URL you produce is a time bomb in a saved workflow - a workflow that references an uploaded image today will find it dead by the weekend. Second, there's a default 2,000-file upload quota, and the error message will cheerfully point you at support for a raise when you hit it. And the usual API-node hygiene applies: this thing takes your key and phones home by design, so keep the api_key field empty when you share workflows - the node reads your local config file instead, and the key never has to travel in the workflow JSON.

CategoryEvoLink

Inputs (9)

NameTypeDefaultDescription
image1IMAGE要上传的图片(可接 batch)
api_keyoptSTRINGEvoLink API Key(sk- 开头)。首次填写后自动保存到本机配置,之后可留空。分享工作流前请清空此框,避免泄露 Key。获取:evolink.ai/dashboard/keys
image2optIMAGE
image3optIMAGE
image4optIMAGE
image5optIMAGE
image6optIMAGE
image7optIMAGE
image8optIMAGE

Outputs (2)

NameTypeDescription
image_urlsSTRING
countINT