Create Asset In GenAsset
Create Asset In GenAsset — the explicit, all-manual first save
- image
- image
- asset_id
- version_id
- status_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, useSave To GenAsseton 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 GenAssetandUpsert Asset Tags Fieldsboth 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 GenAssethas. 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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| base_url | STRING | https://genasset.xyz | — |
| token | STRING | ComfyUI/user/genasset.json | — |
| asset_name | STRING | New Asset | — |
| prompt_text | STRING | — | |
| negative_prompt_text | STRING | — | |
| model_name | STRING | — | |
| seed | INT | 0 | — |
| tags_csv | STRING | — | |
| intent | STRING | create_asset | — |
| extra_metadata_json | STRING | {} | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| asset_id | STRING | — |
| version_id | STRING | — |
| status_json | STRING | — |