Nodes/VNTANA/VNTANA Upload Render
ComfyUI Node

VNTANA Upload Render

Send your generated image back to VNTANA as a product render

By VNTANA-3D·Created 8 months ago·Updated 8 months ago· 0
VNTANA Upload Render
  • credentials
  • image
  • success
  • blob_id
◄product_uuid►
◄workspace_uuid►
◄filenamerender►
◄formatPNG►

VNTANADownloadRender gets the "in" half of the loop. This is the "out": take whatever image you generated in ComfyUI - a relit product shot, a new background, a batch of variations - and push it back into VNTANA as a render on a specific product. This is the node that closes the loop for teams doing AI-driven product photography on a 3D catalog.

What it does

It converts a ComfyUI IMAGE tensor to PNG or JPEG bytes, and uploads those bytes as a RENDER attachment on the product you point it at. The upload isn't a simple POST - it's the signed-URL pattern: the node asks the VNTANA API for a Google Cloud Storage upload URL, then PUTs the image bytes straight to GCS. It's the same architecture every real upload service uses, and it's why this node can move multi-megabyte renders without tying up the API.

Outputs are two: success (a BOOLEAN you can use to gate downstream nodes) and blob_id (the ID of the uploaded attachment, handy for tracking or wiring into reporting).

Inputs that matter

  • credentials and product_uuid - required. The product UUID comes from VNTANASearchProducts (or hardcoded, once you know it).
  • image - required, the tensor you generated. Standard IMAGE, so wire it straight out of your sampler or VAE decode.
  • filename - default "render", without the extension; the node sanitizes it and appends .png or .jpg for you. Watch this if you're uploading multiple versions - same filename, later upload may not overwrite, and you'll end up with a pile of render files.
  • format - PNG or JPEG (default PNG). PNG for transparency and lossless quality, JPEG when size matters.

Two honest gotchas

First, batches get truncated. The node converts the tensor to a PIL image and takes tensor[0] - the first frame of a batch. Generate four variations in one batch and only the first one gets uploaded. If you want all four, split them into separate uploads.

Second, this node needs a workspace, like everything else in the pack. Set default_workspace_uuid on the Credentials node and forget about it, or pass workspace_uuid here.

Install

Same pack, same drill - clone into custom_nodes, pip install, restart. No models, no heavy deps.

cd ComfyUI/custom_nodes
git clone https://github.com/VNTANA-3D/vntana-comfyui-node
cd vntana-comfyui-node
pip install -e .

Or grab it from ComfyUI Manager by searching "vntana-comfyui-node".

Troubleshooting

  • success is false / "Upload failed" - first suspect is the signed URL domain. The node only uploads to storage.googleapis.com or storage.cloud.google.com (SSRF protection), so if the API ever starts handing back a different host, uploads die. That's a platform-side thing, not something you can fix in the workflow.
  • Wrong product? - you fed it the wrong product_uuid, or the product is in a different workspace than your default. Double-check what Search returned.
  • File too large - the 30GB cap that validation enforces is generous for images, so if you hit it, something's genuinely wrong upstream.

For the batch of four variations you wanted but only got one of - that's the tensor-truncation gotcha above. It's a small node with a clear job, and the first-frame behavior is the one thing that actually surprises people.

CategoryVNTANA

Inputs (6)

NameTypeDefaultDescription
credentialsVNTANA_CREDENTIALS—
product_uuidSTRING—
imageIMAGE—
workspace_uuidoptSTRING—
filenameoptSTRINGrender—
formatoptCOMBOPNG2 options: PNG, JPEG

Outputs (2)

NameTypeDescription
successBOOLEAN—
blob_idSTRING—