Nodes/GenAsset/Create Asset In GenAsset
ComfyUI Node

Create Asset In GenAsset

Create Asset In GenAsset — the explicit, all-manual first save

By steliosot·Created 4 months ago·Updated 3 months ago· 1
Create Asset In GenAsset
  • image
  • image
  • asset_id
  • version_id
  • status_json
base_urlhttps://genasset.xyz
tokenComfyUI/user/genasset.json
asset_nameNew Asset
prompt_text
negative_prompt_text
model_name
seed0
tags_csv
intentcreate_asset
extra_metadata_json{}

Most people start with Save To GenAsset, which auto-captures your prompt, model, seed, and workflow from the graph. Create Asset In GenAsset is the older, more stubborn cousin: it takes an image and saves it as a brand-new asset, but every piece of the recipe is something you type in. No graph-walking, no auto-capture, no Repro Lock. Just an image, a name, and whatever metadata you feel like filling in.

That sounds like a downgrade until you hit the use case it's actually for. This is the node for ingesting things that were never part of your current graph - a reference image, a shot you made in another tool, a file a client handed you. You want it in GenAsset as a versioned asset, but there's no ComfyUI workflow to capture. This node is the "import this picture into the system" button.

How it works

It's a plain multipart upload to api/v1/generations with asset_id empty, which tells the server to create a new asset plus its initial version. The fields - prompt_text, negative_prompt_text, model_name, seed, tags_csv, intent, extra_metadata_json - go into the request as given. What you don't fill in stays empty; unlike the auto-capture save node, there's nothing to fill it in for you.

The workflow_json stored with it is empty, so don't expect to later load a graph from an asset created this way - there was no graph to save. That's the honest trade-off of the manual node, and it's fine, because its job is "get this image into versioned storage," not "reproduce a ComfyUI run."

Inputs and outputs that matter

Required inputs are image, base_url, token, and asset_name. The image comes from anywhere - a Load Image node, a prior node's output, a VAE-decode result. asset_name is what the new asset is called.

The metadata inputs (prompt_text, model_name, seed, tags_csv, intent, extra_metadata_json) are all required in the schema but effectively optional to fill - the node will happily create an asset with blank metadata. The intent default is create_asset, a fine label to leave alone.

Outputs: image passthrough, the new asset_id, the initial version_id, and status_json. Keep that asset_id - it's the handle you'll paste into every future load or save node to keep appending to this asset.

Installation

In the steliosot/ComfyUI-GenAsset pack. ComfyUI Manager → search GenAsset → install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/steliosot/ComfyUI-GenAsset.git

Restart after. No extra dependencies; just a workspace token in the widget, GENASSET_WORKSPACE_TOKEN, or ComfyUI/user/genasset.json.

Common issues

  • The asset loads later with no workflow JSON - expected. This node stores {} as the workflow because you gave it no graph. If you need reproducibility, use Save To GenAsset on an image that's actually in a graph.
  • Blank metadata you regret later - you can't rebuild what you never entered, but you can patch it: Save Metadata Patch To GenAsset and Upsert Asset Tags Fields both let you fix records without re-uploading the image.
  • You imported a near-black image - note this node does not run the black-frame guard that Save To GenAsset has. It will happily version a blank frame, so check your input if you care about history quality.

Reach for this node when the image matters more than its origin story. When you need the full recipe preserved, you want the auto-capturing save node instead - but for getting arbitrary images into your versioned library, this is the one.

Categorygenasset

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
base_urlSTRINGhttps://genasset.xyz
tokenSTRINGComfyUI/user/genasset.json
asset_nameSTRINGNew Asset
prompt_textSTRING
negative_prompt_textSTRING
model_nameSTRING
seedINT0
tags_csvSTRING
intentSTRINGcreate_asset
extra_metadata_jsonSTRING{}

Outputs (4)

NameTypeDescription
imageIMAGE
asset_idSTRING
version_idSTRING
status_jsonSTRING