sora / image-to-video
Sora image-to-video from your ComfyUI canvas — via Civitai's cloud
- images
- api_config
- video
- workflow_id
- raw_json
You remember when Sora clips were unattainable video you could only watch. This node ends that for ComfyUI: it runs OpenAI's Sora as an image-to-video job on Civitai's cloud, and drops the result back into your graph as a native VIDEO. No OpenAI API key, no Comfy account credits, no local GPU - you authenticate to Civitai and pay in Buzz, like every other node in the civitai-comfy-nodes pack.
The image-to-video variant is the one that earns its keep. Anchor a first frame with a LoadImage node and Sora animates forward from something you actually control - that's the difference between "a scene happens to appear" and "the scene I designed appears." If you want to compare against its sibling, the text-to-video Sora node is the same recipe minus the image input.
The inputs that matter
Only prompt is required. The rest are the dials most beginners actually set:
images- the star input. Wire your starting frame here. This is what makes it image-to-video.duration- 4 to 12 seconds (default 4). Longer clips cost more, so it's worth starting short.resolution-720por1080p(default 720p).aspect_ratio-auto,16:9, or9:16.autofollows your input image, which is usually what you want with a real source frame.use_pro- off by default. This is the Sora Pro tier toggle: better quality, bigger bill. Leave it off until you've got a prompt worth paying for.seed- set it to reproduce a result; otherwise leave at 0.api_config- auth.
Outputs
The usual pack trio: video (VIDEO) straight into a Save Video / preview node, plus workflow_id (STRING) to find the job in the Civitai sidebar and raw_json (STRING) for the raw response and per-run cost.
Install and auth
Shared one-time setup. ComfyUI Manager → search Civitai Comfy Nodes → install, restart:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt # just `requests`
Then authenticate: wire a Civitai Auth node, set CIVITAI_API_TOKEN (the reliable route for headless), or sign in from the sidebar.
Troubleshooting and honest takes
- Cost. Sora is among the pricier engines in this pack, and OpenAI's model has its own filter regardless of where you call it from.
use_prodoubles the meter; 1080p and longer durations climb too. The community's line on API video holds here: it's the right tool for a model you can't run, and an expensive default for a test. - Slow / timeouts at launch. This pack went live June 2026 in the middle of Civitai's GPU crunch - queue times were long and some users hit the default 30-minute timeout. Bump
timeout_minuteson the Civitai Auth node or setCIVITAI_COMFY_TIMEOUT. - Why did my output ignore the image? If you leave
aspect_ratioon something other thanautowhile feeding a differently-shaped input, Sora can crop or reframe. Setautoand match the source. - Filter refusals aren't a bug. Sora's content policy applies server-side; the node can't override it, so a refusal means "the model said no," not "broken install."
Reach for this when you have a strong still and want to see what Sora's physics does to it. For pure prompt-to-video, grab the text-to-video sibling instead and save the extra socket.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| durationopt | INT | 44–12 | — |
| seedopt | INT | 00–4294967295 | — |
| resolutionopt | COMBO | 720p | 2 options: 720p, 1080p |
| aspect_ratioopt | COMBO | auto | 3 options: auto, 16:9, 9:16 |
| use_proopt | BOOLEAN | false | — |
| imagesopt | IMAGE | — | |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |