Nodes/ComfyUI Razv WaveSpeed Nodes/WaveSpeedAI OpenAI Sora 2 Text-to-Video
ComfyUI Node

WaveSpeedAI OpenAI Sora 2 Text-to-Video

Sora 2 from text alone — no image, no subscription, just a prompt and $0.40

By razvanmatei-sf·Created 12 months ago·Updated 9 months ago· 0
WaveSpeedAI OpenAI Sora 2 Text-to-Video
  • client
  • video_url
prompt
size1280*720
duration4
enable_sync_modefalse

Sora 2's text-to-video is the one that made everyone re-watch their own prompts - describe a scene with camera language and you get back something that moves like it was shot. It's closed, it's API-only, and if you want it in a ComfyUI graph instead of a chat box, this node is the bridge. Unlike the pack's Sora image-to-video nodes, there's no image to upload: you feed it a prompt and a duration, and out comes a video_url. A 4-second clip is $0.40.

What it is

The text-to-video member of the pack's Sora 2 family, and the purest "prompt goes in, video comes out" node in the whole pack. Required inputs are just client, prompt, size, and duration. The size dropdown is explicit pixel values - 1280*720 (landscape) or 720*1280 (portrait), defaulting to landscape - and duration runs 4 / 8 / 12 seconds at $0.10/s per the tooltip.

How it works

client from the WaveSpeedAI Client node carries your API key; the node POSTs {prompt, size, duration} to the Sora 2 text-to-video endpoint and polls (or awaits, per enable_sync_mode, default off) until the job finishes. The result is a video_url string. Nothing local runs except the HTTP call and whatever node you use to download the clip afterward. Give the prompt real camera direction - Sora responds to "slow dolly in, shallow depth of field, lens flare at sunset" in a way it doesn't to keyword soup.

The inputs that matter

  • prompt - the whole ballgame. Scene, style, camera, and audio cues; the tooltip explicitly suggests describing camera movements and audio.
  • size - 1280*720 or 720*1280. Pick before you write the prompt, since a portrait script reads differently than a landscape one.
  • duration - 4, 8, or 12 seconds; the price scales linearly.
  • enable_sync_mode - wait for completion or submit-and-poll.

Output is video_url (STRING).

Install & setup

cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt

or ComfyUI Manager → "razv-wavespeed" → Install, restart. API key from wavespeed.ai in config.ini (from config.ini.tmp), the Client node, or WAVESPEED_API_KEY. Deps: requests, pillow, numpy<2.0.0, torch. No model downloads.

Common issues

  • Video looks generic - the prompt is the product. Add explicit camera and audio cues; Sora 2 rewards direction.
  • Long render, then "No output received" - Sora takes minutes per clip; near the 30-minute ceiling longer renders can time out. Retry with a shorter duration.
  • Still not a subscription - you pay per clip through WaveSpeed AI's credits; there's no Sora Plus membership hiding in here.
  • 401 - key issue.

The framing that matters: image-to-video is the more controllable Sora mode, and this node's sibling covers it. Text-to-video is for the times you have no starting frame and want to see what Sora's imagination does on its own - which, for $0.40 and no upload step, is a cheap and genuinely fun thing to try.

CategoryWaveSpeedAI/OpenAI Sora 2

Inputs (5)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
promptSTRINGDescribe the scene, style, camera movements, and audio cues for video generation
sizeCOMBO1280*720Video resolution - 720*1280 (portrait) or 1280*720 (landscape)
durationCOMBO4Video duration in seconds (4s=$0.40, 8s=$0.80, 12s=$1.20)
enable_sync_modeoptBOOLEANfalseWait for generation to complete before returning

Outputs (1)

NameTypeDescription
video_urlSTRING