Zhenzhen_sora2
Sora 2 video from your ComfyUI canvas, no OpenAI account required
- image1
- image2
- image3
- image4
- video
- video_url
- response
Sora 2 is OpenAI's flagship text-to-video model, and unless you're running an API budget you'll never touch it directly. Comfly_sora2 is the ComfyUI front door: it sends your prompt to the Comfly relay, polls the generation until it's done, and hands you a VIDEO object you can preview and save on the canvas. Your GPU does nothing. You pay the relay per clip.
This is one of the heavier nodes in the Comfyui_Comfly pack - a single generation can take minutes, and the node will hold your queue open while it waits. That's normal. The whole pack is a set of API relays to ai.comfly.chat, all sharing one API key from that site.
What you set
prompt- the video description. Keep it cinematic; Sora rewards scene-setting.model-sora-2orsora-2-pro. The pro tier unlocks HD and longer clips.aspect_ratio-16:9landscape or9:16portrait. No square, no custom.duration-10,15, or25seconds. Read the constraints below before you combine this with anything.hd- high definition. Onlysora-2-proaccepts it; the plain model refuses.private(optional, default true) - whether the video is published. If true it's hidden from the feed, but you also lose the ability to re-edit ("remix") it later. Flip it false only if you want the video shareable/remixable.image1–image4(optional) - reference images for image-to-video or multi-image conditioning. They're base64-encoded and sent with the prompt.
The gotchas are coded into the node: 25s and hd together is a hard error, and sora-2 (non-pro) rejects both 25s and hd outright. The node returns a clean JSON error in response instead of crashing, but check that output before assuming success.
Outputs
video - a ComfyUI VIDEO object you can wire straight into the built-in Save Video / preview nodes (the README explicitly calls this out). video_url is the hosted link, task_id identifies the job on the relay (the author's dashboard shows async task status there), and response is the JSON status blob, error included. If the relay's sora-2 endpoint is having a bad day, the task_id and response combo is how you'll find out.
Install and key
ComfyUI Manager, search "Comfyui_Comfly", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ainewsto/Comfyui_Comfly
Grab an API key at ai.comfly.chat and put it in the required apikey field (it's saved to the pack's Comflyapi.json). The relay is paid and prepaid; a failed task refunds the money, so a hard error isn't a total loss. README caveats: only tested on Windows 11, and the quality tier you get for the base sora-2 model is capped at standard-def 10s or 15s in practice.
The honest take
This is a "pay for the model you can't run" node, and it does that job fine. Just set expectations: it's an async relay, so expect multi-minute waits, and the hd/25s limits mean the headline features only exist on the pro tier. If you want Sora-2-grade video in a ComfyUI pipeline without a second mortgage on API credits, this is a reasonable middle ground - for everything else, a local video model is still the better long-term home.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | sora-2 | 3 options: sora-2, sora-2-pro, sora-2-vip |
| aspect_ratio | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| duration | COMBO | 15 | 3 options: 10, 15, 25 |
| hd | BOOLEAN | false | — |
| apikey | STRING | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| seedopt | INT | 00–2147483647 | — |
| privateopt | BOOLEAN | true | — |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| response | STRING | — |