SF WaveSpeed Sora 2 Image to Video Pro
The price tag is the feature
- client
- video_url
OpenAI's Sora 2 is about as closed as a frontier model gets - no weights, no local install, API only. This node is the crack through which it enters ComfyUI: an image in, a motion prompt, and Sora 2 Pro renders you a video on WaveSpeed's servers. It's the "Pro" tier, which matters, because the tooltip does something most API wrappers won't: it tells you exactly what you'll pay before you commit. 720p: 4s for $1.20, 8s for $2.40, 12s for $3.60. 1080p: 4s for $2.00, 8s for $4.00, 12s for $6.00. These are per-generation prices.
So the first question to ask isn't "is it good" - Sora 2 Pro is excellent at physics-aware motion, keeping your subject's identity, and cinematic camera moves. The first question is "do I want this to be my workflow's video engine," because every run is real money. This is a finish a hero shot node, not an iterate node.
How it works
You hand it an image URL, a prompt that describes mood, motion style, or camera behavior (per the tooltip - not a full scene re-description; the image already carries the scene), a resolution, and a duration. It POSTs to /api/v3/openai/sora-2/image-to-video-pro and returns a hosted video_url (STRING) - a link you save, download, or wire into a loader that accepts URLs.
The identity-preservation claim isn't marketing fluff you should dismiss, by the way. Image-to-video models live or die on keeping the first frame's subject consistent through the motion, and Sora 2 Pro's whole job is that it holds lighting, composition and character while the camera does something interesting. That's the value you're paying for over a generic animate-the-image model.
The inputs that matter
- client - required, the SF WaveSpeed Client node connection.
- image - reference image URL (PNG/JPEG per the tooltip), wired from ComfyUI's Upload Image node. Must be public; WaveSpeed's servers fetch it.
- prompt - motion, mood, camera behavior. Short and directional beats long and descriptive here.
- resolution - 720p or 1080p. 1080p is 60%+ more expensive at every duration.
- duration - 4, 8, or 12 seconds, with the cost spelled out in the dropdown's tooltip.
- enable_sync_mode - default off. The node submits and polls (up to a 30-minute timeout on the async path - long videos take a while), then returns the URL.
Install
The pack-wide route: ComfyUI Manager → search "SF ComfyUI Nodes" → install → restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt
Then drop in the SF WaveSpeed Client node, add your WaveSpeed key (widget, config.ini [API] api_key, or WAVESPEED_API_KEY), and connect it to this node's client input. No models, no VRAM, nothing local to tune.
Gotchas
- Budget first. The duration dropdown is a price list in disguise. A 12s 1080p run is $6.00 per generation, before retries. Decide whether you can afford a second take before you queue a batch.
- The output is a URL, not a file. If your workflow expects a local video path, you need a download step.
- Public image URLs only. Localhost and private addresses are rejected by design.
- The README's config.ini example shows
wavespeed_api_key; the code readsapi_key. Copyconfig.ini.tmp.
If you mostly do local video and just need one unreasonably good shot, Sora 2 Pro is a defensible splurge. If you're testing motion ideas at 60 frames a minute, you'll run the bill up before you learn anything - for iteration, this is not your node. It's the reward node at the end of a workflow that's already working.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| image | STRING | Reference image URL for video generation (PNG/JPEG) - connect from Upload Image node | |
| prompt | STRING | Describe the mood, motion style, or camera behavior for video generation | |
| resolution | COMBO | 720p | Video output resolution - 720p or 1080p (higher cost) |
| duration | COMBO | 4 | Video duration in seconds (720p: 4s=$1.20, 8s=$2.40, 12s=$3.60 | 1080p: 4s=$2.00, 8s=$4.00, 12s=$6.00) |
| enable_sync_modeopt | BOOLEAN | false | Wait for generation to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |