> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 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, …).

```mermaid theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
graph LR
    A[📝 Prompt] --> B[🎬 VideoAgent]
    B --> C[openrouter/…]
    C --> D[⚙️ LiteLLM]
    D --> E[🌐 OpenRouter]
    E --> F[✅ Video]

    classDef input fill:#8B0000,stroke:#7C90A0,color:#fff
    classDef process fill:#189AB4,stroke:#7C90A0,color:#fff
    classDef result fill:#10B981,stroke:#7C90A0,color:#fff

    class A input
    class B,C,D,E process
    class F result
```

## Quick Start

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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 theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
export OPENROUTER_API_KEY=your-key
```

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

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
export OPENROUTER_REFERER=https://your-app.com
export OPENROUTER_APP_TITLE="Your App"
```

## Models

| Model                               | Description            |
| ----------------------------------- | ---------------------- |
| `openrouter/google/veo-3.1`         | Google Veo 3.1         |
| `openrouter/kling/kling-3.0-std`    | Kling 3.0 Standard     |
| `openrouter/minimax/hailuo-3`       | MiniMax Hailuo 3       |
| `openrouter/bytedance/seedance-2.0` | ByteDance Seedance 2.0 |

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

## Full Example

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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.

<Note>
  `HTTP-Referer` and `X-Title` are added automatically so requests appear under your app in the OpenRouter dashboard. Override the defaults by setting `OPENROUTER_REFERER` and `OPENROUTER_APP_TITLE`.
</Note>
