Login
Back to Blog
EnglishTutorial

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

Complete guide to AI video generation APIs including OpenAI Sora 2, Google Veo3, Kling 2.5, Luma Dream Machine, and Runway Gen-4. Code examples and pricing included.

C
Crazyrouter Team
January 22, 2026 / 1373 views
Share:
AI Video Generation APIs Guide 2026 - Sora 2, Veo3, Kling, Luma, and Runway Compared

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

GPT Image Generation API Guide: Create AI Images with gpt-image-1 in 2026Tutorial

GPT Image Generation API Guide: Create AI Images with gpt-image-1 in 2026

"Complete guide to OpenAI's GPT Image Generation API (gpt-image-1). Learn how to generate, edit, and vary images with code examples in Python, Node.js, and cURL."

Mar 2
/v1/chat/completions vs /v1/responses vs /v1/messages: Which AI API Endpoint Should You Use?Tutorial

/v1/chat/completions vs /v1/responses vs /v1/messages: Which AI API Endpoint Should You Use?

A practical guide to choosing the correct AI API endpoint. Learn the differences between OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages to avoid model unavailable errors caused by wrong endpoint routing.

Jun 4
AI Batch Processing API Guide 2026: Process Millions of Requests EfficientlyTutorial

AI Batch Processing API Guide 2026: Process Millions of Requests Efficiently

"Complete guide to AI batch processing APIs in 2026. Learn how to process millions of AI requests efficiently using OpenAI Batch API, async patterns, and cost optimization."

Mar 1
Codex CLI Installation Guide: Setup OpenAI's AI Coding Agent in MinutesTutorial

Codex CLI Installation Guide: Setup OpenAI's AI Coding Agent in Minutes

Complete guide to installing and configuring OpenAI Codex CLI, the AI-powered terminal coding agent. Step-by-step setup for macOS, Linux, and Windows with troubleshooting tips.

Feb 20
ChatGPT 6 Release Date: Latest Timeline, Predictions, and What to Do NowTutorial

ChatGPT 6 Release Date: Latest Timeline, Predictions, and What to Do Now

Crazyrouter already exposes 300+ AI models through one API, yet OpenAI has not published an official GPT-6 launch schedule. That gap is why teams keep searching for the **ChatGPT 6 Release Date** w...

Mar 26
AI Future Baby Prediction with GPT-image-2 — See What Your Child Might Look LikeTutorial

AI Future Baby Prediction with GPT-image-2 — See What Your Child Might Look Like

Use GPT-image-2 via Crazyrouter API to generate realistic predictions of what your future baby might look like. Full code in Python, curl, and Node.js.

May 1