VOOZH about

URL: https://crazyrouter.com/en/blog/ai-video-generation-apis-guide-2026

⇱ AI Video Generation APIs Guide 2026 - Sora 2, Veo3, Kling, Luma, and Runway Compared - Crazyrouter


Back to Blog

AI video generation has reached production quality. This guide covers all major video generation APIs available through Crazyrouter, with code examples and best practices.

Supported Video Generation Models#

ProviderModelsPriceStrengths
OpenAIsora-2, sora-2-pro$0.30-0.50Consistency, physics
Googleveo3, veo3.1, veo3-pro$0.30-0.50Quality, audio
Kuaishoukling-v2-5-turbo, kling-v2-6$0.30Speed, quality
Lumaluma_video_api$0.30Creativity
Runwayrunwayml-gen4_turbo$0.30Control, editing

OpenAI Sora 2 API#

Sora Models Available#

ModelPriceUse Case
sora-2$0.30Standard video
sora-2-pro$0.50High quality
sora-2-landscape$0.3016:9 format
sora-2-portrait$0.309:16 format
sora-2-landscape-hd$0.40HD landscape
sora-2-portrait-hd$0.40HD portrait
sora-2-characters$0.35Character reference

Create Video (Unified Format)#

bash
curl -X POST "https://crazyrouter.com/v1/video/create" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "model": "sora-2",
 "prompt": "A cinematic shot of a golden retriever running through a field of sunflowers at sunset, slow motion, 4K quality",
 "duration": 10,
 "aspect_ratio": "16:9"
 }'

Query Video Status#

bash
curl "https://crazyrouter.com/v1/video/query?task_id={task_id}" \
 -H "Authorization: Bearer sk-your-api-key"

OpenAI Native Format#

bash
# Create video
curl -X POST "https://crazyrouter.com/v1/videos" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "model": "sora-2",
 "prompt": "A timelapse of a flower blooming in a garden"
 }'

# Query status
curl "https://crazyrouter.com/v1/videos/{video_id}" \
 -H "Authorization: Bearer sk-your-api-key"

# Download video
curl "https://crazyrouter.com/v1/videos/{video_id}/content" \
 -H "Authorization: Bearer sk-your-api-key" \
 -o output.mp4

Sora with Character Reference#

bash
# First create a character
curl -X POST "https://crazyrouter.com/sora/v1/characters" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "name": "Hero Character",
 "image_url": "https://example.com/character.jpg"
 }'

# Then use in video
curl -X POST "https://crazyrouter.com/v1/videos" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "model": "sora-2-characters",
 "prompt": "The character walks through a futuristic city",
 "character_id": "char_abc123"
 }'

Google Veo3 API#

Veo3 generates high-quality videos with native audio:

Veo Models Available#

ModelPriceUse Case
veo3$0.30Standard
veo3.1$0.35Latest version
veo3-pro$0.50High quality
veo3-fast$0.20Quick generation
veo3.1-fast$0.25Fast latest
veo3-frames$0.25Frame control

Text-to-Video#

bash
curl -X POST "https://crazyrouter.com/fal-ai/veo3" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "A drone shot flying over the Grand Canyon at sunrise, cinematic, 4K"
 }'

Veo3 Fast (Quicker Generation)#

bash
curl -X POST "https://crazyrouter.com/fal-ai/veo3/fast" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "Ocean waves crashing on a rocky shore"
 }'

Image-to-Video#

bash
curl -X POST "https://crazyrouter.com/fal-ai/veo3/image-to-video" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "The person in the image starts walking forward",
 "image_url": "https://example.com/person.jpg"
 }'

Check Veo3 Status#

bash
curl "https://crazyrouter.com/fal-ai/veo3/requests/{request_id}" \
 -H "Authorization: Bearer sk-your-api-key"

Kling API#

Kling offers excellent quality with fast generation:

Kling Models Available#

ModelPriceUse Case
kling-v2-5-turbo$0.30Fast, quality
kling-v2-6$0.35Latest version
kling-v2-master$0.40Best quality
kling-v1-6$0.25Stable
kling-video-o1$0.35Reasoning

Text-to-Video#

bash
curl -X POST "https://crazyrouter.com/kling/v1/videos/text2video" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "A cat playing with a ball of yarn in a cozy living room",
 "duration": "5",
 "aspect_ratio": "16:9"
 }'

Image-to-Video#

bash
curl -X POST "https://crazyrouter.com/kling/v1/videos/image2video" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "The landscape comes alive with moving clouds",
 "image_url": "https://example.com/landscape.jpg",
 "duration": "5"
 }'

Multi-Image Reference#

bash
curl -X POST "https://crazyrouter.com/kling/v1/videos/multi-image2video" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "These characters meet and shake hands",
 "image_urls": ["https://example.com/char1.jpg", "https://example.com/char2.jpg"]
 }'

Video Extension#

bash
curl -X POST "https://crazyrouter.com/kling/v1/videos/video-extend" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "video_url": "https://example.com/original.mp4",
 "prompt": "Continue the scene with the character walking away"
 }'

Lip Sync#

bash
curl -X POST "https://crazyrouter.com/kling/v1/videos/lip-sync" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "video_url": "https://example.com/face.mp4",
 "audio_url": "https://example.com/speech.mp3"
 }'

Luma Dream Machine API#

Generate Video#

bash
curl -X POST "https://crazyrouter.com/luma/generations" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "A magical forest with glowing mushrooms and fireflies at night"
 }'

Extend Video#

bash
curl -X POST "https://crazyrouter.com/luma/generations/{task_id}/extend" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "prompt": "The camera slowly zooms out to reveal more of the forest"
 }'

Runway Gen-4 API#

Runway Models#

ModelPriceDuration
runwayml-gen4_turbo-5$0.305 seconds
runwayml-gen4_turbo-10$0.5010 seconds
runwayml-gen3a_turbo-5$0.255 seconds
runwayml-gen3a_turbo-10$0.4010 seconds

Image-to-Video#

bash
curl -X POST "https://crazyrouter.com/runwayml/v1/image_to_video" \
 -H "Content-Type: application/json" \
 -H "Authorization: Bearer sk-your-api-key" \
 -d '{
 "promptImage": "https://example.com/image.jpg",
 "promptText": "The scene comes to life with gentle movement"
 }'

Pricing Comparison#

ModelPrice per Video
sora-2$0.30
sora-2-pro$0.50
veo3$0.30
veo3-pro$0.50
veo3-fast$0.20
kling-v2-5-turbo$0.30
luma_video_api$0.30
runwayml-gen4_turbo-5$0.30

Pricing Disclaimer: The prices shown in this article are for demonstration purposes only and may change at any time. Actual billing will be based on the real-time prices displayed when you make your request.

Python Helper Class#

python
import requests
import time

# Required: User-Agent header for Cloudflare/WAF
default_headers = {
 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/"
}

class VideoGenerator:
 def __init__(self, api_key):
 self.api_key = api_key
 self.base_url = "https://crazyrouter.com"
 self.headers = {
 **default_headers,
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }

 def create_video(self, prompt, model="sora-2"):
 response = requests.post(
 f"{self.base_url}/v1/video/create",
 headers=self.headers,
 json={
 "model": model,
 "prompt": prompt
 }
 )
 return response.json()

 def wait_for_video(self, task_id, timeout=300):
 start_time = time.time()
 while time.time() - start_time < timeout:
 response = requests.get(
 f"{self.base_url}/v1/video/query",
 headers=self.headers,
 params={"task_id": task_id}
 )
 data = response.json()
 if data.get("status") == "completed":
 return data.get("video_url")
 elif data.get("status") == "failed":
 raise Exception(f"Video generation failed: {data}")
 time.sleep(5)
 raise TimeoutError("Video generation timed out")

# Usage
generator = VideoGenerator("sk-your-api-key")
task = generator.create_video("A beautiful sunset timelapse over the ocean")
video_url = generator.wait_for_video(task["task_id"])
print(f"Video ready: {video_url}")

Use Case Recommendations#

Use CaseRecommended Model
Marketing videosSora 2 Pro or Veo3 Pro
Social media contentKling (fast) or Veo3 Fast
Artistic/creativeLuma Dream Machine
Product demosRunway Gen-4
Talking head videosKling Lip Sync
Quick previewsVeo3 Fast

Getting Started#

  1. Sign up at Crazyrouter
  2. Get your API key from the console
  3. Choose the video model that fits your needs
  4. Start generating videos

For questions, contact support@crazyrouter.com

Implementation Guides

Related Posts

Midjourney API Without Discord: How to Generate AI Images Programmatically

"Learn how to use Midjourney's image generation through an API without Discord. Complete guide with Python code examples, pricing, and alternatives."

Feb 21

GPT Agent Mode Complete Guide: Autonomous AI Tasks in 2026

"Learn how GPT Agent Mode works, how to use it via API, and how it compares to standard chat completions for autonomous task execution."

Feb 27

How to Access DeepSeek, Qwen and GLM Models with One API in 2026

A tested guide to accessing DeepSeek, Qwen and GLM model families through one OpenAI-compatible API endpoint using Crazyrouter.

Jun 18

Multi-Model Agent: Architecture, Use Cases, and a Practical Build Guide

Teams can access 300+ AI models through one gateway, yet agent projects still fail on basic handoffs between routing, tools, and memory. A **multi-model agent** is not just a model switcher; it is...

Mar 18

Agentic RAG: Build Smarter AI Agents with Retrieval-Augmented Generation in 2026

Learn how to build Agentic RAG systems that combine autonomous AI agents with retrieval-augmented generation for dynamic, multi-step reasoning over your own data.

Apr 15

Seedream 4.0 API Tutorial 2026 for Image Generation Pipelines

A practical Seedream 4.0 API guide with Python, Node.js, and cURL examples, plus pricing and production tips for image generation pipelines.

Mar 20