Save Video to Numonic
Video is where workflow lineage goes to die — this saves it before it does
- video
- gallery_url
Still images carry their workflow around in the PNG metadata, and everyone knows it. Video is where that story falls apart: a rendered mp4 has no ComfyUI graph tucked inside unless something deliberately puts it there. This node is that something - a drop-in for the native Save Video that uploads the real file to your Numonic library with the workflow embedded, so the video and its lineage never get separated.
How it works
It takes a VIDEO input (the native ComfyUI video type - the same one Create Video and Save Video use), lets ComfyUI's own save_to primitive encode it with the prompt and workflow metadata written as container tags, uploads the result to Numonic's API, then deletes the temp file it made along the way. Reusing ComfyUI's own encoder rather than rolling its own means what you upload is what native Save Video would have written - the bytes just go to your gallery instead of only your disk.
Inputs and outputs
video(VIDEO) - off Create Video (the usual generative case: a model produces frames, Create Video turns them into a VIDEO), or off Load Video to push an existing file infilename_prefix(defaultnumonic)format(auto/mp4/webm, defaultauto) - leave it alone unless you have a reasoncodec(auto/h264/vp9, defaultauto) - same
Auto lets ComfyUI pick, which is right for 99% of cases. Output is a single gallery_url string.
The gotcha that will actually bite you
This node needs a recent ComfyUI - the build with the native VIDEO type. On older builds the input socket won't even resolve, and if the VIDEO object lacks a save_to primitive the node fails with a message that's refreshingly clear about it: update ComfyUI. Quick tell: if you don't have Create Video / Save Video in your node list, you're on an old build and this node won't work. The image version in this pack has no such requirement, so that's your fallback.
Same wiring rule as the image node: don't chain it after the stock Save Video - that's a terminal node with no output socket. Put it alongside.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/numonic-labs/comfyui-workflow-recovery
or ComfyUI Manager → search "Numonic Workflow Recovery", then restart. No dependencies to install: the pack leans entirely on Python stdlib plus what ComfyUI already ships. The encoder behind save_to is PyAV, which native video support requires anyway.
Setup and troubleshooting
Same key setup as the image node: a napi_ key from Numonic → Settings → API Keys (the "ComfyUI node key" preset mints a least-privilege comfy-ingest key), stored on the host in ~/.numonic/config.json or the NUMONIC_API_KEY environment variable. Not a widget, on purpose - a widget key would serialize into your workflows and embed into your output files.
Errors are shared with the pack: No Numonic API key found is usually a config saved as config.json.txt or an env var that never reached the ComfyUI process; 401/403 is a stale or mis-scoped key; 413 is storage full; 429 is rate-limiting - wait and re-run.
Honest framing: this node is only useful if your ComfyUI is current enough for native video and you're already using Numonic as your archive. Both true, and it closes the loop most video workflows leave wide open - your generations, their prompts, their models, one place, findable. Either one false, and skip it; the lineage-recovery node works for everyone regardless.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — | |
| filename_prefixopt | STRING | numonic | — |
| formatopt | COMBO | auto | 3 options: auto, mp4, webm |
| codecopt | COMBO | auto | 3 options: auto, h264, vp9 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| gallery_url | STRING | — |