Restore archival footage
Restore older footage with clearer detail and a contemporary look.
Download WorkflowTry in Cloud API documentation
00:00
Inside the workflow
A read-only preview of the source template. Open it in Cloud to explore the nodes and make changes.
Loading the graph
Open full-size workflow preview- Author
- Rob
Call this model from your code
The request below uses the same prepared graph and settings as the Playground. Each submission can start a paid run; do not automatically retry a submission whose outcome is unknown.
1 Get API key ↗
What you need
- Runs on
- Comfy Cloud
- Key
- COMFY_API_KEY
- Your files
- Uploaded by the code from their urls
Needs a paid Cloud plan and credits.
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"5187": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video",
"format": "auto",
"format.codec": "auto",
"video": [
"5189:5062",
0
]
},
"_meta": {
"title": "Save Video"
}
},
"5188": {
"class_type": "LoadVideo",
"inputs": {
"file": "UPLOADED_video_FILENAME"
},
"_meta": {
"title": "Load Video"
}
},
"5190": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"5188",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"5192": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video_compare",
"format": "auto",
"format.codec": "auto",
"video": [
"5191:80",
0
]
},
"_meta": {
"title": "Save Comparison Video"
}
},
"5189:5057": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"5189:5084",
0
],
"text": "pc game, console game, video game, cartoon, childish, ugly"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"5189:5058": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 797718031774635
},
"_meta": {
"title": "RandomNoise"
}
},
"5189:5059": {
"class_type": "LatentUpscaleModelLoader",
"inputs": {
"model_name": "ltx-2.3-spatial-upscaler-x2-1.1.safetensors"
},
"_meta": {
"title": "Load Latent Upscale Model"
}
},
"5189:5060": {
"class_type": "LTXVConditioning",
"inputs": {
"frame_rate": [
"5189:5088",
2
],
"negative": [
"5189:5057",
0
],
"positive": [
"5189:5091",
0
]
},
"_meta": {
"title": "LTXVConditioning"
}
},
"5189:5061": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"5189:5087",
0
],
"negative": [
"5189:5098",
1
],
"positive": [
"5189:5098",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"5189:5062": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"5190",
1
],
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": [
"5189:5088",
2
],
"images": [
"5189:5090",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"5189:5063": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"5189:5064": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"5189:5065": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"audio_vae": [
"5189:5086",
0
],
"batch_size": 1,
"frame_rate": [
"5189:5095",
0
],
"frames_number": [
"5189:5097",
1
]
},
"_meta": {
"title": "LTXV Empty Latent Audio"
}
},
"5189:5066": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"5189:5065",
0
],
"video_latent": [
"5189:5094",
2
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"5189:5067": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"5189:5061",
0
],
"latent_image": [
"5189:5066",
0
],
"noise": [
"5189:5058",
0
],
"sampler": [
"5189:5063",
0
],
"sigmas": [
"5189:5064",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"5189:5068": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5189:5088",
0
],
"resize_type": "scale dimensions",
"resize_type.crop": "disabled",
"resize_type.height": 1088,
"resize_type.width": 1920,
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask (s2 size)"
}
},
"5189:5069": {
"class_type": "LTXVLatentUpsampler",
"inputs": {
"samples": [
"5189:5082",
2
],
"upscale_model": [
"5189:5059",
0
],
"vae": [
"5189:5085",
2
]
},
"_meta": {
"title": "LTXVLatentUpsampler"
}
},
"5189:5070": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"5189:5067",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"5189:5071": {
"class_type": "LTXAddVideoICLoRAGuide",
"inputs": {
"crop": "disabled",
"frame_idx": 0,
"image": [
"5189:5068",
0
],
"latent": [
"5189:5069",
0
],
"latent_downscale_factor": 1,
"negative": [
"5189:5099",
1
],
"positive": [
"5189:5099",
0
],
"strength": 1,
"tile_overlap": 64,
"tile_size": 256,
"use_tiled_encode": True,
"vae": [
"5189:5085",
2
]
},
"_meta": {
"title": "🅛🅣🅧 Add Video IC-LoRA Guide"
}
},
"5189:5072": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"5189:5073": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"5189:5076",
0
],
"latent_image": [
"5189:5077",
0
],
"noise": [
"5189:5078",
0
],
"sampler": [
"5189:5072",
0
],
"sigmas": [
"5189:5075",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"5189:5074": {
"class_type": "LTXVCropGuides",
"inputs": {
"latent": [
"5189:5080",
0
],
"negative": [
"5189:5071",
1
],
"positive": [
"5189:5071",
0
]
},
"_meta": {
"title": "LTXVCropGuides"
}
},
"5189:5075": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"5189:5076": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"5189:5087",
0
],
"negative": [
"5189:5071",
1
],
"positive": [
"5189:5071",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"5189:5077": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"5189:5099",
2
],
"video_latent": [
"5189:5071",
2
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"5189:5078": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 29
},
"_meta": {
"title": "RandomNoise"
}
},
"5189:5079": {
"class_type": "LTXVAudioVAEDecode",
"inputs": {
"audio_vae": [
"5189:5086",
0
],
"samples": [
"5189:5080",
1
]
},
"_meta": {
"title": "LTXV Audio VAE Decode"
}
},
"5189:5080": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"5189:5073",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"5189:5082": {
"class_type": "LTXVCropGuides",
"inputs": {
"latent": [
"5189:5070",
0
],
"negative": [
"5189:5094",
1
],
"positive": [
"5189:5094",
0
]
},
"_meta": {
"title": "LTXVCropGuides"
}
},
"5189:5083": {
"class_type": "LTXVAudioVAEEncode",
"inputs": {
"audio": [
"5189:5088",
1
],
"audio_vae": [
"5189:5086",
0
]
},
"_meta": {
"title": "LTXV Audio VAE Encode"
}
},
"5189:5084": {
"class_type": "LTXAVTextEncoderLoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev.safetensors",
"device": "default",
"text_encoder": "gemma_3_12B_it.safetensors"
},
"_meta": {
"title": "Load LTXV Audio Text Encoder"
}
},
"5189:5085": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"5189:5086": {
"class_type": "LTXVAudioVAELoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev.safetensors"
},
"_meta": {
"title": "Load LTXV Audio VAE"
}
},
"5189:5087": {
"class_type": "LTXICLoRALoaderModelOnly",
"inputs": {
"lora_name": "ltx-2.3-dearchive-lora_weights_step_05000.safetensors",
"model": [
"5189:5085",
0
],
"strength_model": 1
},
"_meta": {
"title": "🅛🅣🅧 IC-LoRA Loader Model Only"
}
},
"5189:5088": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"5188",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"5189:5089": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5189:5088",
0
],
"resize_type": "scale dimensions",
"resize_type.crop": "disabled",
"resize_type.height": 544,
"resize_type.width": 960,
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask (s1 size)"
}
},
"5189:5090": {
"class_type": "LTXVTiledVAEDecode",
"inputs": {
"horizontal_tiles": 2,
"last_frame_fix": False,
"latents": [
"5189:5074",
2
],
"overlap": 6,
"vae": [
"5189:5085",
2
],
"vertical_tiles": 2,
"working_device": "auto",
"working_dtype": "auto"
},
"_meta": {
"title": "🅛🅣🅧 LTXV Tiled VAE Decode"
}
},
"5189:5091": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"5189:5084",
0
],
"text": "A modern, high-resolution video shot in vivid color, sharp detail, contemporary cinematography."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"5189:5093": {
"class_type": "EmptyLTXVLatentVideo",
"inputs": {
"batch_size": 1,
"height": 544,
"length": [
"5189:5097",
1
],
"width": 960
},
"_meta": {
"title": "EmptyLTXVLatentVideo"
}
},
"5189:5094": {
"class_type": "LTXAddVideoICLoRAGuide",
"inputs": {
"crop": "disabled",
"frame_idx": 0,
"image": [
"5189:5089",
0
],
"latent": [
"5189:5093",
0
],
"latent_downscale_factor": 1,
"negative": [
"5189:5060",
1
],
"positive": [
"5189:5060",
0
],
"strength": 1,
"tile_overlap": 64,
"tile_size": 256,
"use_tiled_encode": True,
"vae": [
"5189:5085",
2
]
},
"_meta": {
"title": "🅛🅣🅧 Add Video IC-LoRA Guide"
}
},
"5189:5095": {
"class_type": "LTXFloatToInt",
"inputs": {
"a": [
"5189:5088",
2
]
},
"_meta": {
"title": "🅛🅣🅧 Float To Int"
}
},
"5189:5096": {
"class_type": "GetImageSizeAndCount",
"inputs": {
"image": [
"5189:5089",
0
]
},
"_meta": {
"title": "Get Image Size & Count"
}
},
"5189:5097": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(int((a - 1) / 8)) * 8 + 1",
"values.a": [
"5189:5096",
3
]
},
"_meta": {
"title": "Math Expression"
}
},
"5189:5098": {
"class_type": "LTXVSetAudioRefTokens",
"inputs": {
"audio_latent": [
"5189:5083",
0
],
"negative": [
"5189:5094",
1
],
"positive": [
"5189:5094",
0
]
},
"_meta": {
"title": "🅛🅣🅧 Set Audio Ref Tokens"
}
},
"5189:5099": {
"class_type": "LTXVSetAudioRefTokens",
"inputs": {
"audio_latent": [
"5189:5070",
1
],
"negative": [
"5189:5082",
1
],
"positive": [
"5189:5082",
0
]
},
"_meta": {
"title": "🅛🅣🅧 Set Audio Ref Tokens"
}
},
"5191:77": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"5188",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"5191:78": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"5189:5062",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"5191:79": {
"class_type": "ImageStitch",
"inputs": {
"direction": "down",
"image1": [
"5191:77",
0
],
"image2": [
"5191:78",
0
],
"match_image_size": False,
"spacing_color": "white",
"spacing_width": 0
},
"_meta": {
"title": "Stitch Images"
}
},
"5191:80": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"5191:77",
1
],
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": [
"5191:77",
2
],
"images": [
"5191:79",
0
]
},
"_meta": {
"title": "Create Video"
}
}
})
workflow.set_input("5188", "file", client.assets.from_url("https://cdn.jsdelivr.net/gh/Comfy-Org/workflow_templates@90c71fb78b3726392d010ff62a8e79e92d7296ad/input/input_dearchive.mp4"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("5187"):
output.to_file(output.name)
for output in job.get_outputs("5192"):
output.to_file(output.name)