Jamworks_Download
Pulling brand assets out of Jamworks and into your workflow
- output_path
Once you've got a token from Jamworks_Login, Jamworks_Download is the node that actually moves files. It downloads a Jamworks entity to a path on the ComfyUI server. And here's the first thing to un-learn: in this pack, "node" doesn't mean a ComfyUI node. Per the README - with an actual ^_^ - a node is any entity inside Jamworks: a file, a folder, a rendition, a task, anything their DAM assigns an ID to. You're pulling real business assets into your generation machine, not wiring widgets together.
It's the kind of node that only makes sense in a specific world: a team whose approved images, logos, and renders live in a company DAM instead of scattered across random drives. If that's you, this is how ComfyUI gets its hands on the official assets instead of the stale copy you downloaded three months ago.
How it works
Give it a node_id and it first asks the content API for that entity's info (/entry/{node_id}). If it's a file, it streams the download (/actions/download/{node_id}) straight to download_path in 16KB chunks. If it's a folder, it lists the folder's entries and downloads every file it finds inside. One ID in, one file or one folder's worth of files out, to the same folder.
The inputs that matter
- token - from Jamworks_Login's output. Fresh tokens only.
- node_id (INT) - the Jamworks entity ID you want. It's an integer, so paste the ID you see in Jamworks, not a URL.
- download_path - the server-side folder to write into. Needs to already exist, more on that below.
- JW2_CONTENT_URL - the base URL for Jamworks' content API, distinct from the core URL used by login.
The output
output_path (STRING). Fair warning: it returns the download_path you typed, not the full path of what actually got saved. Ask for /data/assets and download logo.png, and you get /data/assets, not /data/assets/logo.png. Fine for chaining - you know where to look - just don't expect a precise file pointer.
For wiring, the output is a plain string, so it plugs into anything that accepts a file path. One practical catch: ComfyUI's core Load Image expects a filename sitting in its input directory, so an absolute path from Jamworks won't show up in that dropdown. Copy the file into ComfyUI/input first (this pack's Shell_Command handles that fine) or use a node that takes an explicit path.
Install
Same story as the rest of the pack:
# ComfyUI Manager: search "comfyui_jamworks_client", or:
cd ComfyUI/custom_nodes
git clone https://github.com/celsojr2013/comfyui_jamworks_client
Restart, and the node appears under "Jamworks". The only dependency is requests, already present in just about every ComfyUI environment. No models, no config files - just the content URL and a working token. Expect nothing new from it either: this repo has been untouched since mid-2024.
Where people get burned
Three things bite in practice. First, there's no mkdir anywhere in the code - if download_path doesn't exist, the file write throws a FileNotFoundError and you stare at a red node wondering why. Create the directory before you run. Second, folder downloads are shallow: it pulls the files in that folder but never recurses into subfolders, so nested structures come back half-empty. Third, a stale token gets rejected by the API and you'll see an auth error instead of a download - re-run the login node and retry.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| token | STRING | — | |
| node_id | INT | — | |
| download_path | STRING | — | |
| JW2_CONTENT_URL | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_path | STRING | — |