Nodes/Symbiotica/NS WaveSpeed Sora 2 Image to Video
ComfyUI Node

NS WaveSpeed Sora 2 Image to Video

Feed an image, get motion for $0.40 a shot

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
NS WaveSpeed Sora 2 Image to Video
  • client
  • video_url
image
prompt
duration4
enable_sync_modefalse

Text-to-video gives you a shot of whatever the model hallucinated. Image-to-video gives you a shot of your image, moving - and for anyone who's built a still they're proud of, that's the workflow that feels like magic. NSWaveSpeedSora2ImageToVideo from symbiotica-ai/comfyui-nodes takes one still, runs it through OpenAI's Sora 2 on WaveSpeed's hosted API, and returns a URL to the animated clip. Sora 2's whole pitch here is physics-aware motion - water that sloshes, cloth that follows, cameras that move like cameras - while keeping the identity, lighting, and composition of your input frame.

How it works

The image input is a URL string, not an image tensor - wire it from ComfyUI's core Upload Image node. The node bundles your still, your motion prompt, and a duration, POSTs to WaveSpeed (/api/v3/openai/sora-2/image-to-video), and with enable_sync_mode off (default) it submits the job, then polls the task endpoint every second until the render finishes. The graph blocks meanwhile, and Cancel actually stops the wait because the polling checks ComfyUI's interrupt flag.

The prompt is where you describe motion and characteristics - "slow push-in on the subject, hair moving in wind, subtle background parallax." You're not describing the scene (the image already is the scene), you're directing the camera and the physics.

The inputs that matter

  • image - your still as a URL (Upload Image node → here). This is the anchor frame Sora animates from.
  • prompt - desired motion, camera behavior, and characteristics.
  • duration - 4, 8, or 12 seconds, priced in the tooltip: 4s = $0.40, 8s = $0.80, 12s = $1.20. A flat $0.10/second.
  • client - the WAVESPEED_AI_API_CLIENT socket from the NS WaveSpeed Client node.

Output is video_url (STRING) - the hosted clip. Preview in a browser or feed it to a download-from-URL node; the pack doesn't save it for you.

Install and keys

# ComfyUI Manager: search "Symbiotica", or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt

Restart, then add the NS WaveSpeed Client node and put your wavespeed.ai key in its api_key field (or once in ComfyUI Settings → Symbiotica, or as WAVESPEED_API_KEY). Wire client in. No model files - this is a pure API wrapper.

Common issues

The classic "API_KEY is empty". The key lives on the client node and this node requires that client wire. If you see that error, the client node is missing or unwired.

I2V can be picky about the still. Sora does best with clear, well-lit, unambiguous images - a messy mid-process render gives the model less to hold onto. And remember what you feed it is exactly what leaves your machine; cloud moderation applies to the input image too (external-api-nodes.md).

Cost drift in batches. Four seconds is cheap; twelve seconds of a five-variant batch is not. The tooltip does the math for you, which is more than most API nodes bother with - read it before you queue.

Categoryneuralsins/WaveSpeed

Inputs (5)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
imageSTRINGSource image URL for video generation (connect from Upload Image node)
promptSTRINGPositive prompt guiding video generation - describe desired motion and characteristics
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