# OpenRouter [Video][Enterprise]

> Run any VLM (Video Language Model) with fal, powered by OpenRouter.


## Overview

- **Endpoint**: `https://fal.run/openrouter/router/video/enterprise`
- **Model ID**: `openrouter/router/video/enterprise`
- **Category**: video-to-text
- **Kind**: inference


## Pricing

You will be charged based on the number of input and output tokens.

For more details, see [fal.ai pricing](https://fal.ai/pricing).

## API Information

This model can be used via our HTTP API or more conveniently via our client libraries.
See the input and output schema below, as well as the usage examples.


### Input Schema

The API accepts the following input parameters:


- **`video_urls`** (`list<string>`, _optional_):
  List of URLs or data URIs of video files to process. Supported formats: mp4, mpeg, mov, webm. For Google Gemini on AI Studio, YouTube links are also supported. Mutually exclusive with video_url.
  - Array of string
  - Examples: ["https://v3b.fal.media/files/b/0a8b3081/t4Jsy53x-Q8iQqg78_Vj__vid01.mp4","https://v3b.fal.media/files/b/0a8b3085/xWtbpb6pf4i-BSvR2oWbi_vid06.mp4"]

- **`prompt`** (`string`, _required_):
  Prompt to be used for the video processing
  - Examples: "Please transcribe the videos respectively."

- **`system_prompt`** (`string`, _optional_):
  System prompt to provide context or instructions to the model
  - Examples: "Please look at the videos in order and answer the question."

- **`model`** (`string`, _required_):
  Name of the model to use. Charged based on actual token usage.
  - Examples: "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-preview-09-2025", "google/gemini-2.5-flash-lite-preview-09-2025", "google/gemini-2.5-pro", "google/gemini-2.5-pro-preview", "google/gemini-2.5-pro-preview-05-06", "google/gemini-2.0-flash-001", "google/gemini-2.0-flash-lite-001", "google/gemini-3-flash-preview", "google/gemini-3-pro-preview", "google/gemini-3.1-pro-preview"

- **`reasoning`** (`boolean`, _optional_):
  Should reasoning be the part of the final answer.
  - Default: `false`

- **`temperature`** (`float`, _optional_):
  This setting influences the variety in the model's responses. Lower values lead to more predictable and typical responses, while higher values encourage more diverse and less common responses. At 0, the model always gives the same response for a given input. Default value: `1`
  - Default: `1`
  - Range: `0` to `2`

- **`max_tokens`** (`integer`, _optional_):
  This sets the upper limit for the number of tokens the model can generate in response. It won't produce more than this limit. The maximum value is the context length minus the prompt length.



**Required Parameters Example**:

```json
{
  "prompt": "Please transcribe the videos respectively.",
  "model": "google/gemini-2.5-flash"
}
```

**Full Example**:

```json
{
  "video_urls": [
    "https://v3b.fal.media/files/b/0a8b3081/t4Jsy53x-Q8iQqg78_Vj__vid01.mp4",
    "https://v3b.fal.media/files/b/0a8b3085/xWtbpb6pf4i-BSvR2oWbi_vid06.mp4"
  ],
  "prompt": "Please transcribe the videos respectively.",
  "system_prompt": "Please look at the videos in order and answer the question.",
  "model": "google/gemini-2.5-flash",
  "temperature": 1
}
```


### Output Schema

The API returns the following output format:

- **`output`** (`string`, _required_):
  Generated output from video processing
  - Examples: "that's the way I look at it and I don't know what you would say. Sooner or later the child gets run over.\nThey seem to be too local, too provincial."

- **`usage`** (`UsageInfo`, _required_):
  Token usage information
  - Examples: {"prompt_tokens":1000,"completion_tokens":100,"cost":0.0005,"total_tokens":1100}



**Example Response**:

```json
{
  "output": "that's the way I look at it and I don't know what you would say. Sooner or later the child gets run over.\nThey seem to be too local, too provincial.",
  "usage": {
    "prompt_tokens": 1000,
    "completion_tokens": 100,
    "cost": 0.0005,
    "total_tokens": 1100
  }
}
```


## Usage Examples

### cURL

```bash
curl --request POST \
  --url https://fal.run/openrouter/router/video/enterprise \
  --header "Authorization: Key $FAL_KEY" \
  --header "Content-Type: application/json" \
  --data '{
     "prompt": "Please transcribe the videos respectively.",
     "model": "google/gemini-2.5-flash"
   }'
```

### Python

Ensure you have the Python client installed:

```bash
pip install fal-client
```

Then use the API client to make requests:

```python
import fal_client

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
           print(log["message"])

result = fal_client.subscribe(
    "openrouter/router/video/enterprise",
    arguments={
        "prompt": "Please transcribe the videos respectively.",
        "model": "google/gemini-2.5-flash"
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)
print(result)
```

### JavaScript

Ensure you have the JavaScript client installed:

```bash
npm install --save @fal-ai/client
```

Then use the API client to make requests:

```javascript
import { fal } from "@fal-ai/client";

const result = await fal.subscribe("openrouter/router/video/enterprise", {
  input: {
    prompt: "Please transcribe the videos respectively.",
    model: "google/gemini-2.5-flash"
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});
console.log(result.data);
console.log(result.requestId);
```


## Additional Resources

### Documentation

- [Model Playground](https://fal.ai/models/openrouter/router/video/enterprise)
- [API Documentation](https://fal.ai/models/openrouter/router/video/enterprise/api)
- [OpenAPI Schema](https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=openrouter/router/video/enterprise)

### fal.ai Platform

- [Platform Documentation](https://docs.fal.ai)
- [Python Client](https://docs.fal.ai/clients/python)
- [JavaScript Client](https://docs.fal.ai/clients/javascript)
