Save Metadata Patch To GenAsset
Save Metadata Patch To GenAsset — fix the record without re-rendering
- version_id
- metadata_json
- status_json
Here's a reality of versioned generations: the recipe is right but the record is wrong. The image is perfect, yet the version says nothing about whether it was approved, what the client's feedback was, or which campaign it belongs to. You don't want to re-upload the image to fix that - you just want to update the metadata. Save Metadata Patch To GenAsset is precisely that: it merges a JSON patch into an existing version's metadata without touching the image.
In image-generation workflows, metadata is the whole reproducibility story - the workflow, seed, and settings that make a version re-runnable live in there. This node treats that metadata as a living document: you can annotate, approve, tag, or correct it after the fact, turning a plain save into an organized one.
How it works
You give it a version_id and a metadata_patch_json - a JSON object. The node merges that object into the version's existing metadata on the server (a deep merge, not a full overwrite), so fields you don't mention are untouched. The default value in the widget is {"approval": "approved"}, which tells you exactly what the author had in mind: stamping an approval status onto a version after the fact.
It's an output node, so it displays a summary in the UI and returns the updated metadata_json so you can see the merge result, plus version_id and status_json. Nothing about this node is destructive - the image and all existing metadata fields stay as they were.
Inputs and outputs that matter
Four required inputs: base_url, token, version_id, and metadata_patch_json. The last two are the whole show. version_id is the version whose record you're patching. metadata_patch_json must be valid JSON (a bare string like approved won't parse as a patch - it needs to be an object). Past the default, you might patch things like:
{
"approval": "approved",
"campaign": "summer-2026",
"reviewer": "alex"
}
Outputs: version_id (echo), metadata_json (the merged result), and status_json. Wire metadata_json into a display node if you want to verify the merge.
Installation
Part of 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; needs a workspace token (widget, GENASSET_WORKSPACE_TOKEN, or ComfyUI/user/genasset.json).
Common issues
- Invalid JSON error -
metadata_patch_jsonmust parse as a JSON object. A trailing comma, single quotes, or a plain string all fail. Test it in a JSON checker first if you're unsure. - The patch didn't show up in
metadata_json- check you used an object, not an array, and that the version id is correct. A patch to the wrong version obviously merges into the wrong record. - You want to remove a field, not add one - this node merges; it doesn't delete keys. For removing something, you'd need to re-save or handle it on the GenAsset side. It's a patch, not a full editor.
Use this node as your annotation layer. Every version can carry approval state, review comments, or campaign tags long after the render, without a single wasted re-generation.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| base_url | STRING | https://genasset.xyz | — |
| token | STRING | ComfyUI/user/genasset.json | — |
| version_id | STRING | Version id to patch. | |
| metadata_patch_json | STRING | { "approval": "approved" } | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| version_id | STRING | — |
| metadata_json | STRING | — |
| status_json | STRING | — |