Nodes/Quality of Life Nodes for ComfyUI/TensorScale Cosmos3 Nano Video To Video (Soze)
ComfyUI Node

TensorScale Cosmos3 Nano Video To Video (Soze)

Restyle a clip's appearance, not its motion

By SozeInc·Created 2 years ago·Updated a day ago· 10
TensorScale Cosmos3 Nano Video To Video (Soze)
  • video
  • video
  • video_path
  • request_id
  • config
  • status
prompt
seconds5.0
fps24
resolution720
aspect_ratio16,9
seed0
video_url
num_steps50
guidance4.5
use_fal_uploadtrue
api_key_envTENSORSCALE_API_KEY_COSMOS3_NANO
timeout1800

The video-to-video sibling of the Cosmos3 Nano text node, and the one with the most important single sentence in its tooltip: the prompt describes the target appearance, not the motion. Cosmos is a world model - it already understands what the source clip is doing. Your job is to say what it should look like, not to re-describe the action. Feed it a clip of a car driving and prompt "rainy night, neon reflections, cinematic grade" and you get the same car, same driving, new look.

The inputs

Same required spine as the t2v node: prompt, seconds, fps, resolution (height profile: 256–768), aspect_ratio (comma form - 16,9, not 16:9), seed. Then the source clip:

  • video - the source VIDEO object. By default it's inlined as base64, and the tooltip says the obvious thing: inline video usually exceeds the 10 MiB body cap.
  • video_url - a public HTTPS URL. Overrides the video socket when set. If your clip is hosted, this is the path of least resistance.
  • use_fal_upload - defaults to on, because it's the mechanism that saves you: the connected video goes to FAL's CDN and a URL is sent instead of inlining. Leave it on. (It needs a working FAL_KEY even though generation is TensorScale.)

The two tuning dials differ from the t2v node: num_steps defaults to 50, the documented high-quality transformation setting (not the t2v's 35), and guidance defaults to 4.5. These are the values the service ships for restyling - if the output looks under-processed, steps are the first thing to raise.

How it works

TensorScale's /v2/cosmos3-nano/v2v runs synchronously with a model-scoped key (TENSORSCALE_API_KEY_COSMOS3_NANO, falling back to TENSORSCALE_API_KEY). The request is a single POST that stays open through the whole generation - the timeout widget (default 1800s) is a read timeout, and video-in/video-out is the slowest shape in this family.

Outputs: video, video_path, request_id, config, status.

Install and key

From the Soze pack ("Quality of Life Nodes for ComfyUI"), via ComfyUI Manager or:

cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt

Restart, then set TENSORSCALE_API_KEY or TENSORSCALE_API_KEY_COSMOS3_NANO (environment variable or .env in the repo root). Don't commit keys.

Common issues

  • Prompting for motion does nothing. You're fighting the model's design - prompt appearance, let Cosmos keep the motion.
  • 10 MiB body errors. Inline video blew the cap. Confirm use_fal_upload is on, or use video_url with a hosted clip.
  • use_fal_upload fails with a FAL error. Check FAL_KEY - the upload hop needs it, separate from your TensorScale key.
CategoryTensorScale/VideoGeneration

Inputs (13)

NameTypeDefaultDescription
promptSTRINGDescribes the target appearance, not the motion.
secondsFLOAT5.01–60
fpsINT241–60
resolutionCOMBO720Output height profile.
aspect_ratioCOMBO16,95 options: 16,9, 9,16, 1,1, 4,3, 3,4
seedINT00–4294967295
videooptVIDEOSource clip. Inline unless use_fal_upload is on.
video_urloptSTRINGPublic HTTPS URL of the source video. Overrides the video socket.
num_stepsoptINT501–10050 is the documented high-quality transformation setting.
guidanceoptFLOAT4.50–30
use_fal_uploadoptBOOLEANtrueUpload the video socket to FAL's CDN and send a URL. On by default — inline video usually exceeds the 10 MiB body cap.
api_key_envoptSTRINGTENSORSCALE_API_KEY_COSMOS3_NANOEnvironment variable holding the model-scoped key. Falls back to TENSORSCALE_API_KEY when unset.
timeoutoptINT180060–7200Read timeout in seconds. These endpoints are synchronous — the socket stays open for the whole generation.

Outputs (5)

NameTypeDescription
videoVIDEO
video_pathSTRING
request_idSTRING
configSTRING
statusSTRING