Nodes/ComfyUI_Fill-Nodes/FL Runway Act2
ComfyUI Node

FL Runway Act2

FL_RunwayAct2 — drive a character's performance with Runway Act-Two from ComfyUI

By filliptm·Created 3 years ago·Updated about 20 hours ago· 628
FL Runway Act2
  • character_video
  • character_image
  • reference_video
  • video_frames
  • status_text
api_key
character_typevideo
ratio1280:720
runway_api_version2024-11-06
body_controltrue
expression_intensity3
seed0
public_figure_thresholdNOT_GIVEN
polling_interval5
max_polling_attempts60
timeout_sdk60
timeout_download120

This node wraps Runway's Act-Two API - their character-performance model. You give it a character (a still image or a video) and a reference performance video of someone acting, and Runway animates your character to match that performance: the body movement, the facial expression, the timing. Think of it as motion-and-expression transfer, run in Runway's cloud and pulled back into your ComfyUI graph as frames.

It's the same job the local Wan ecosystem does with Wan Animate and SCAIL-2 (throw a reference and a driving video at the model, get your character performing the motion), except this one is a hosted, paid API. Runway is a closed commercial video company now, so Act-Two is a product you rent, not weights you download. If you don't have the GPU for local motion transfer, or you want Runway's specific quality on faces, this is the bridge.

How it works

You wire up your character on the input side, wire up the driving performance as reference_video, and hit run. The node uploads to Runway, kicks off the Act-Two job, and then polls for completion - video generation isn't instant, so it checks back on an interval until the result is ready or it gives up. When it's done, it downloads the video and hands you the frames.

The inputs and outputs

  • api_key - your Runway API key.
  • character_type - image or video. This tells the node which character input you're using; match it to what you actually wired.
  • character_image / character_video - your character (use the one matching character_type).
  • reference_video - the driving performance to transfer.
  • body_control (default on) - transfer body movement, not just the face.
  • expression_intensity (1–5) - how strongly to push the facial performance.
  • ratio - output aspect ratio (1280:720, 720:1280, and so on).
  • The polling and timeout knobs (polling_interval, max_polling_attempts, timeout_download) control how patient the node is.

Outputs: video_frames (the result as an image batch) and status_text (job status and errors - check it when things go sideways).

How to install it

Part of filliptm's Fill-Nodes pack. ComfyUI Manager → search ComfyUI_Fill-Nodes → Install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
pip install -r ComfyUI_Fill-Nodes/requirements.txt

No local weights. You need a Runway account with API access and credits.

Common issues & troubleshooting

The job times out before finishing. Longer or higher-res performances take a while, and the defaults may not wait long enough. Bump max_polling_attempts and timeout_download so the node keeps checking instead of bailing on a job that's still cooking.

character_type doesn't match your wiring. If you set it to video but only connected character_image (or vice versa), the node has nothing to work with. The type switch and the input you populate have to agree.

Content gating. Runway's public_figure_threshold is a moderation control. If a job comes back rejected, status_text will usually say why - recognizable public figures and certain content are gated on Runway's side, and there's nothing the node can do about that.

It costs credits per run, and polling isn't free time. Each generation bills to your Runway account. Get your character and reference right before spending a full-res run - iterate on the idea cheaply, then commit.

Category🏵️Fill Nodes/AI

Inputs (15)

NameTypeDefaultDescription
api_keySTRING
character_typeCOMBOvideo2 options: video, image
ratioCOMBO1280:7206 options: 1280:720, 720:1280, 960:960, 1104:832, 832:1104, 1584:672
runway_api_versionSTRING2024-11-06
character_videooptIMAGE
character_imageoptIMAGE
reference_videooptIMAGE
body_controloptBOOLEANtrue
expression_intensityoptINT31–5
seedoptINT00–4294967295
public_figure_thresholdoptCOMBONOT_GIVEN3 options: auto, low, NOT_GIVEN
polling_intervaloptINT51–60
max_polling_attemptsoptINT601–120
timeout_sdkoptFLOAT605–300
timeout_downloadoptFLOAT1205–600

Outputs (2)

NameTypeDescription
video_framesIMAGE
status_textSTRING