This ComfyUI workflow performs a video face swap by applying a single reference face image to every frame of a driving video, then recombining the frames into a final clip. The pipeline starts with VHS_LoadVideo to decode the source video into frames and LoadImage to bring in your reference face. A custom face-swap node (dc72113f-8276-4a5a-af12-85d6bec89ed5) drives the actual face transfer using the LTX 2.3 LoRA trained by @Alissonerdx. PrimitiveFloat and PrimitiveInt nodes expose key controls (such as effect strength, region size, or frame step), while ImageResizeKJv2 aligns the reference face scale to your target footage.
To stabilize results and keep the background intact, the workflow composites the generated face back onto each original frame with ReservedRegionFrameComposer. This node lets you define a consistent “reserved” region for the face and blend it with feathered edges, reducing temporal jitter and preserving hair, lighting, and scene motion. ComfyMathExpression is used to derive dynamic values (for example, region size from video resolution), keeping settings in sync with whatever you load. For quality checks, ImageConcanate can assemble side-by-side previews of original vs. swapped frames. Finally, the processed frames are encoded to a video using VHS_VideoCombine or CreateVideo, and the result is written out with SaveVideo.
API
Use this workflow from code
Every Comfy workflow is a JSON graph. The payload below is this workflow, exactly as ComfyUI runs it — fetch it from the URL, keep it in version control, or load it in ComfyUI and run it node by node.
GET https://comfy.org/workflows/download/bed989744195.jsonFetching workflow JSON…
Run it from Python or TypeScript with the Comfy SDK. The same code targets Comfy Cloud or a ComfyUI you host yourself — only the base URL changes.
# Install (beta)
pip install comfy-sdk # Python
npm i @comfyorg/sdk # TypeScript
# Run this workflow (Python)
from comfy_sdk import Comfy
client = Comfy(api_key="comfyui-...")
wf = client.workflows.from_file("workflow_api.json")
job = client.run(wf)
for output in job.get_outputs("<output-node-id>"):
output.to_file(output.name)The SDK takes a workflow in API format: open this workflow in ComfyUI and use File → Export Workflow (API). API access requires a Comfy Cloud plan with an API key. SDK docs · Get an API key
FAQ














