FetchApi
Pull your ComfyUI outputs off the server and into your Downloads folder
ComfyUI saves your images to a folder on whatever machine it's running on. If that machine is your own PC, the file is already where you want it - this node is pointless, close the tab. But if ComfyUI lives on a rented GPU box, a VPS, or a shared server, every render is stranded somewhere you can't reach. FetchApi is the workaround: it grabs any file ComfyUI has - from its input or output directories - and downloads it straight to your browser. Tick auto_download, run, and the image lands in your Downloads folder instead of gathering dust on a box you can't see.
It shows up in your node list as Fetch (the class name is FetchApi, the display name is Fetch, which trips up exactly one person per month). And the pack's title oversells a bit: it promises "a collection of nodes for interacting with ComfyUI's internal HTTP APIs," but it ships one node. Fetch is the whole thing.
How it works
The name is a small lie - it doesn't fetch data into the graph. It's an output node with zero sockets, a pure UI action. The Python side (ComfyUIHttpApi.py) is barely a node: RETURN_TYPES = (), OUTPUT_NODE = True, and process() just echoes its widget values back to the frontend as ui.result. All the real work lives in the frontend extension (js/main.js), which hooks onExecuted and, if auto_download is on, builds a GET to ComfyUI's built-in /view endpoint:
/view?filename=mesh.obj&type=output&subfolder=3d/models&<cache-buster>
That's the same endpoint ComfyUI uses to serve every image you see in the UI, so there's no API key, no auth dance, and no extra dependency - pyproject.toml lists zero Python dependencies. The author, jtydhr88, is one of those community node devs who ships lean; his other releases have the same no-dependencies ethos. The response becomes a blob, gets wrapped in an object URL, and a hidden <a download> click triggers the browser save.
It also parses paths for you: put filename: 3d/models/mesh.obj with an empty subfolder and it splits into subfolder=3d/models, filename=mesh.obj. If you already set a subfolder, the two merge.
The inputs that matter
Four widgets, all required, all plain text or toggles:
- type -
inputoroutput, which directory to look in. - subfolder - optional subpath; empty for the root.
- filename - exact name, extension included, or a relative path like
models/3d/mesh.obj. - auto_download -
truefetches right after the run;falsemeans you click the node's download button.
No outputs at all. It's an action node, not a data node - you can't wire its result into anything, and there's nothing to wire.
Install
ComfyUI Manager → search "ComfyUI HTTP API" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyUI-http-api
Restart ComfyUI. That's it - no models to download, no pip installs, nothing heavy.
Where people get burned
- "Unable to fetch file" means the file isn't where you said. Check the exact filename including the extension, and which side of
input/outputit's actually on. - Downloads that never appear are usually the browser quietly blocking automatic downloads. If
auto_downloadseems dead, allow the site to auto-download or fall back to the manual button. - It downloads exactly what you typed. No wildcards, no "grab the latest file." You have to know the name, which gets fiddly when ComfyUI's
00001_counter numbering is unpredictable - you'll often find yourself typing the name you see in the output listing.
Reach for it when the server isn't where you are: remote GPU boxes, shared rigs, or pulling one specific file (a mesh, a video, a reference image you dropped into input) that the UI won't hand you. Run locally? Skip it - the file's already on your desk.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| type | COMBO | 2 options: input, output | |
| subfolder | STRING | — | |
| filename | STRING | — | |
| auto_download | BOOLEAN | — |
Outputs (0)
No outputs