ComfyUI node
Push images generated by a ComfyUI workflow straight into your DesignVault library. Drop the Save to DesignVault node at the end of your graph and every render lands as an asset — tagged, titled, and optionally filed into a collection.
Install
The node is a standard ComfyUI custom node. No pip install is needed — it uses only numpy and Pillow (both ship with ComfyUI) plus the Python standard library.
cd ComfyUI/custom_nodes
git clone https://github.com/Pascalxz/DesignVault
ln -s "$(pwd)/DesignVault/comfyui-designvault" comfyui-designvault
# then restart ComfyUIOnce it's published to the ComfyUI Registry, you'll also be able to install it from ComfyUI Manager by searching Save to DesignVault.
Get an API key
In DesignVault, go to Settings → API keys → New key and create a key with the assets:write scope. Keys look like dv_live_… and are scoped to your organization — everything the node uploads lands in that org.
Use it
- Add the Save to DesignVault node (category: DesignVault).
- Wire your final
IMAGEoutput into itsimagesinput. - Set
api_key— or leave it blank and export theDESIGNVAULT_API_KEYenvironment variable (recommended, see below). - Set
asset_type(required — must match one of your DesignVault asset types, e.g.other,social_media,icon_illustration). - Queue the prompt. Watch the ComfyUI console for
[DesignVault] image 1/1: created <asset_id>.
The node passes the image batch through unchanged, so you can keep a Preview or Save Image node downstream. Every image in a batch becomes its own asset.
Inputs
- images — a standard ComfyUI
IMAGE(batches supported, one asset per image). - asset_type (required) — must match one of your org's DesignVault asset types (e.g.
other,social_media); an unknown value returns 400. - api_key — blank falls back to the
DESIGNVAULT_API_KEYenv var. - base_url — defaults to production; the
DESIGNVAULT_BASE_URLenv var overrides it. - title — a batch index is appended when there's more than one image.
- description — free text.
- tags — comma-separated; validated (max 20, letters/digits/space/dash/underscore), invalid ones are skipped with a console warning.
- collection_name — must already exist and be a manual collection (smart collections are rejected).
- client / product — metadata columns.
- source_url — a provenance link.
- prompt_text — appended to the description; handy for storing the positive prompt.
Keep your key out of shared workflows
ComfyUI workflow .json files embed node field values, so a pasted key would leak if you share the graph. Prefer the environment variable and leave the api_key field blank:
export DESIGNVAULT_API_KEY="dv_live_…"Limits & behavior
- Duplicates — DesignVault de-dupes; a repeat upload returns
duplicate: trueand the existing asset id (logged asduplicate). - Plan limits — uploads count toward your org's asset quota. A full quota returns HTTP 403 and the node logs
FAILED (403). - Rate limit — 120 uploads/min per key, the same bucket as any programmatic upload.
- Assets are badged
created_by_aiand arrive with statusactive— they show up in the grid immediately, and AI auto-tagging runs asynchronously afterward.
Under the hood
The node calls the same public endpoint used by AI pipelines — POST /api/v1/assets — encoding each rendered image as base64. There's nothing DesignVault-specific to configure on the server. See the programmatic API for the full endpoint contract, and the MCP server if you'd rather drive your library from an AI client.