WaveSpeedAI OpenAI Sora 2 Text-to-Video Pro
Sora 2 Without an OpenAI Sub — Text-to-Video From Your ComfyUI Graph
- client
- video_url
Sora 2 is one of those models you will never run on your own GPU. OpenAI doesn't ship weights for it - it's API-only, full stop. So if you want it inside ComfyUI instead of a separate web app, this node is the door: WaveSpeedAI OpenAI Sora 2 Text-to-Video Pro turns your graph into a Sora 2 client, no OpenAI account required. You pay per clip on WaveSpeed's hosted API instead.
This is the "Pro" tier, which matters. The same pack has a non-Pro Sora 2 text-to-video node, but its resolution tops out at 720p. Pro unlocks bigger frames - up to 1792×1024 - and both tiers run up to 12 seconds. If you just want a quick mood clip, the Pro tier is overkill and overpriced; it exists for people who need the resolution.
How it works
Mechanically it's unglamorous: the node takes your prompt, a size, and a duration, POSTs them to api.wavespeed.ai/api/v3/openai/sora-2/text-to-video-pro, then polls the task every couple of seconds until the render finishes. The actual generation happens on WaveSpeed's servers, so your GPU idles while the video cooks - the only thing using your machine is a requests call and a sleep loop.
The prompt is the real product here. This isn't a one-liner box; the tooltip asks you to describe "the scene, style, camera movements, and audio cues." Sora 2 generates synchronized sound, not just picture, so you can write camera direction into the prompt and get a cut with audio back. Treat it like a one-shot movie prompt, not a Stable Diffusion tag dump.
The inputs that matter
- client - required
WAVESPEED_AI_API_CLIENTfrom a WaveSpeedAI Client node. Everything in this pack hangs off that. - prompt - multiline. Scene, style, camera, audio cues. The whole job lives here.
- size - four choices: portrait/landscape at 720×1280 / 1280×720 (Standard), or 1024×1792 / 1792×1024 (Pro). Default is 1280×720.
- duration - 4, 8, or 12 seconds. Default 4. The tooltip's gentle reminder: "pricing varies by resolution and duration."
There's one optional toggle, enable_sync_mode, and here's the honest version: it doesn't mean what you hope. Both paths block until the video is done - "async" mode just waits on a polling loop (with a 30-minute cap). Turn it on or off, you're still waiting. The output is a single video_url string, a hosted file. Not a video tensor - you can't feed it into local processing nodes; preview it or open the URL.
Installing it
One pack, one install. ComfyUI Manager → search "razv-wavespeed" → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt
Then restart ComfyUI. The README tells you to copy config.ini.tmp to config.ini and set your API key - but the config format it shows (key =) doesn't match what the code reads (api_key =). Save yourself the round trip: leave config alone and paste the key into the WaveSpeedAI Client node directly. Get the key from wavespeed.ai.
Where people get burned
The biggest trap is googling "WaveSpeed" and landing on the wrong project. The ComfyUI community's "WaveSpeed" usually means the inference acceleration tool (chengzeyi/Comfy-WaveSpeed, the 2–3x local speedup). That's a completely different thing from the WaveSpeed AI API this pack talks to. You need the API key from wavespeed.ai, not a GitHub repo of acceleration patches.
Beyond that: 12-second Pro renders are the slow, expensive corner - expect minutes of a frozen ComfyUI progress bar while the poll loop runs. And remember the output is a URL, so if you're planning to upscale or post-process the result locally, you'll need a URL-to-video loader node first. If the node doesn't show up after install, check that PyAV (av) and torchaudio are present - the pack imports them even though requirements.txt doesn't list them.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | Describe the scene, style, camera movements, and audio cues for video generation | |
| size | COMBO | 1280*720 | Video resolution - Standard (720*1280, 1280*720) or Pro (1024*1792, 1792*1024) |
| duration | COMBO | 4 | Video duration in seconds (pricing varies by resolution and duration) |
| enable_sync_modeopt | BOOLEAN | false | Wait for generation to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |