OpenRouter Video

Access Veo, Kling, Hailuo, Seedance, Wan and more through OpenRouter

Generate videos through OpenRouter’s unified video gateway (Veo, Kling, Hailuo, Seedance, Wan, …).

Diagram

📝 Prompt

🎬 VideoAgent

openrouter/…

⚙️ LiteLLM

🌐 OpenRouter

✅ Video

Quick Start

python
from praisonaiagents import VideoAgent

agent = VideoAgent(llm="openrouter/google/veo-3.1")
video = agent.generate("A serene mountain landscape at sunset")
print(video.id)

The openrouter/ prefix is required so the request routes to OpenRouter.

Setup

bash
export OPENROUTER_API_KEY=your-key

Optionally override the dashboard attribution defaults (https://praison.ai and PraisonAI):

bash
export OPENROUTER_REFERER=https://your-app.com
export OPENROUTER_APP_TITLE="Your App"

Models

ModelDescription
openrouter/google/veo-3.1Google Veo 3.1
openrouter/kling/kling-3.0-stdKling 3.0 Standard
openrouter/minimax/hailuo-3MiniMax Hailuo 3
openrouter/bytedance/seedance-2.0ByteDance Seedance 2.0

Discover all available model IDs via GET https://openrouter.ai/api/v1/videos/models.

Full Example

python
from praisonaiagents import VideoAgent

agent = VideoAgent(llm="openrouter/google/veo-3.1")

video = agent.generate(
    "A serene mountain landscape at sunset, locked camera",
    duration=6,
    resolution="720p",
    aspect_ratio="16:9",
    generate_audio=False,
)

completed = agent.wait_for_completion(video.id)
if completed.status == "completed":
    agent.download(video.id, "openrouter_veo.mp4")

Parameters

OpenRouter body fields (duration, resolution, aspect_ratio, generate_audio, seed, …) pass straight through as kwargs to generate(). Valid fields depend on the underlying model — check OpenRouter’s docs for your chosen model.