Nodes/Comfyui-zhenzhen/Concurrent Submit | zhenzhen-sora2-fal
ComfyUI Node

Concurrent Submit | zhenzhen-sora2-fal

Sora 2 through fal, with character IDs and 4-second clips

By T8mars·Created about a year ago·Updated 2 days ago· 740
Concurrent Submit | zhenzhen-sora2-fal
  • image
  • task
prompt
modeauto
image_url
api_key
modelsora-2
duration4
aspect_ratio16:9
resolution720p
delete_videotrue
detect_and_block_ipfalse
character_ids
image_waybase64
poll_interval6
max_poll_attempts600
skip_errorfalse
seed0

Every Sora 2 node in Comfyui-zhenzhen wraps the same model, but the routes differ - and this one goes through fal.ai. That matters for two reasons. First, it unlocks Sora 2 clips as short as 4 seconds and as long as 20, which the other nodes' fixed 10/15/25 options don't offer. Second, fal's queue API is the stable, independently-hosted path - the author's changelog treats the fal Sora 2 node as the dependable lane when the main OpenAI groups are melting down.

The concurrent wrapper is the same pattern as all the other Submit nodes: it doesn't block. It validates your inputs, pushes the generation onto the pack's shared video pool (ten workers), and hands back a task. That task goes into the Concurrent Collect Videos node, and out comes your finished clip in its numbered slot.

Inputs worth your attention

  • mode - auto (default), text_to_video, or image_to_video. Auto decides based on whether you gave it an image. The tooltip spells out the logic: image or image_url present → image-to-video, otherwise text-to-video.
  • image / image_url - the reference for image-to-video. Give it a connected image, or a public URL. If an image is connected, the URL is ignored.
  • character_ids - the interesting one. Sora 2 supports up to two persistent characters, comma- or newline-separated. These are the @username-style characters you can create once and reuse, which is a genuinely useful feature if you want a consistent face across clips.
  • model - sora-2, plus the dated snapshots sora-2-2025-12-08 and sora-2-2025-10-06. Pin one if you need reproducibility.
  • duration - 4 through 20 seconds, in 4s steps.
  • aspect_ratio - auto, 16:9, 9:16. Text-to-video auto is sent as 16:9; image-to-video auto follows the image.
  • resolution - auto or 720p.
  • image_way - base64 (default) or image_url, for how your reference is transmitted.
  • poll_interval / max_poll_attempts - how hard it polls fal for the result; the defaults (6s × 600) give a 3600s ceiling.

Then the usual api_key, seed, skip_error. Note the fal nodes take api_key, not apikey - the naming is inconsistent across the pack, so don't trip on it.

How it works

Under ComflyConcurrent.py's wrapper, the original Comfly_sora2_fal class submits a job to fal's queue endpoint and polls it until done. The wrapper itself is simpler: validate → hand the call to the bounded executor → return a COMFLY_VIDEO_FUTURE task immediately. The collector waits on all tasks, keeps your slot order, and reports per-slot status. Set its failure_mode to placeholder if you want failed jobs to return a blank clip instead of failing the run.

Setup

The pack installs once for all of it - ComfyUI Manager (search "Comfyui-zhenzhen"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

No models to fetch. You need a paid Zhenzhen key - ai.t8star.org overseas, api.seedance.nz domestic - and the fal route uses pre-deduction billing: fal charges a base amount when you submit and settles up when the job finishes, so don't be startled if credits move before the video appears.

The usual Sora 2 caveats

500s are frequently OpenAI's load, not your config - rerun. Timeouts don't always mean failure; the fal job can finish after the node gave up, so check the async task page in your account for the MP4. The overseas endpoint needs a reachable proxy from many regions (443 errors = network, not node). And since this shares the ten-worker video pool, an already-busy queue just means your jobs wait in line - which, with the whole point being concurrency, is usually exactly what you want.

Categoryzhenzhen/Video/Concurrent Submit

Inputs (17)

NameTypeDefaultDescription
promptSTRING
modeoptCOMBOautoauto: image/image_url -> image-to-video, otherwise text-to-video.
imageoptIMAGE
image_urloptSTRINGOptional public image URL for image-to-video. If image is connected, this is ignored.
api_keyoptSTRING
modeloptCOMBOsora-23 options: sora-2, sora-2-2025-12-08, sora-2-2025-10-06
durationoptCOMBO45 options: 4, 8, 12, 16, 20
aspect_ratiooptCOMBO16:9auto is only available for image-to-video; text-to-video auto is sent as 16:9.
resolutionoptCOMBO720ptext-to-video auto is sent as 720p.
delete_videooptBOOLEANtrue
detect_and_block_ipoptBOOLEANfalse
character_idsoptSTRINGOptional character IDs, up to 2, separated by comma or newline.
image_wayoptCOMBObase642 options: image_url, base64
poll_intervaloptINT62–30
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse开启后,节点失败时不报错、返回默认空结果。
seedoptINT00–18446744073709550000Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter.

Outputs (1)

NameTypeDescription
taskCOMFLY_VIDEO_FUTURE