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

# Kling Video O1 R2V

> Creative video generation using character, prop, or scene references from multiple viewpoints.

Kling Video O1 R2V generates creative videos using character, prop, or scene references from multiple viewpoints. It can combine multiple reference images to create coherent video content.

<Card title="Try in playground" icon="play" href="https://console.runpod.io/hub/playground/video/kling-video-o1-r2v" horizontal>
  Test Kling Video O1 R2V in the Runpod Hub playground.
</Card>

|              |                                                       |
| ------------ | ----------------------------------------------------- |
| **Endpoint** | `https://api.runpod.ai/v2/kling-video-o1-r2v/runsync` |
| **Pricing**  | \$0.112 per second                                    |
| **Type**     | Video generation                                      |

## Request

All parameters are passed within the `input` object in the request body.

<ParamField body="input.prompt" type="string" required>
  Text description of the desired video action.
</ParamField>

<ParamField body="input.images" type="array" required>
  Array of 1-10 reference image URLs.
</ParamField>

<ParamField body="input.video" type="string">
  Optional reference video URL.
</ParamField>

<ParamField body="input.negative_prompt" type="string">
  Elements to exclude from the generated video.
</ParamField>

<ParamField body="input.aspect_ratio" type="string" default="16:9">
  Aspect ratio. Options: `16:9`, `9:16`, `1:1`.
</ParamField>

<ParamField body="input.duration" type="integer" default="5">
  Video duration in seconds. Options: 3-10 seconds.
</ParamField>

<ParamField body="input.seed" type="integer" default="-1">
  Seed for reproducible results. Set to -1 for random.
</ParamField>

<ParamField body="input.enable_prompt_expansion" type="boolean" default="false">
  Automatically expand and enhance the prompt.
</ParamField>

<ParamField body="input.enable_safety_checker" type="boolean" default="true">
  Enable content safety checking.
</ParamField>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl -X POST "https://api.runpod.ai/v2/kling-video-o1-r2v/runsync" \
    -H "Authorization: Bearer $RUNPOD_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": {
        "prompt": "The robot is dancing with the teddy bear",
        "images": [
          "https://example.com/robot.png",
          "https://example.com/teddy-bear.png"
        ],
        "aspect_ratio": "16:9",
        "duration": 5,
        "seed": -1
      }
    }'
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import requests

  response = requests.post(
      "https://api.runpod.ai/v2/kling-video-o1-r2v/runsync",
      headers={
          "Authorization": f"Bearer {RUNPOD_API_KEY}",
          "Content-Type": "application/json",
      },
      json={
          "input": {
              "prompt": "The robot is dancing with the teddy bear",
              "images": [
                  "https://example.com/robot.png",
                  "https://example.com/teddy-bear.png",
              ],
              "aspect_ratio": "16:9",
              "duration": 5,
              "seed": -1,
          }
      },
  )

  result = response.json()
  print(result["output"]["video_url"])
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch(
    "https://api.runpod.ai/v2/kling-video-o1-r2v/runsync",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${RUNPOD_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: {
          prompt: "The robot is dancing with the teddy bear",
          images: [
            "https://example.com/robot.png",
            "https://example.com/teddy-bear.png",
          ],
          aspect_ratio: "16:9",
          duration: 5,
          seed: -1,
        },
      }),
    }
  );

  const result = await response.json();
  console.log(result.output.video_url);
  ```
</RequestExample>

## Response

<ResponseField name="id" type="string">
  Unique identifier for the request.
</ResponseField>

<ResponseField name="status" type="string">
  Request status. Returns `COMPLETED` on success, `FAILED` on error.
</ResponseField>

<ResponseField name="output" type="object">
  The generation result containing the video URL and cost.

  <ResponseField name="output.video_url" type="string">
    URL of the generated video. This URL expires after 7 days.
  </ResponseField>

  <ResponseField name="output.cost" type="float">
    Cost of the generation in USD.
  </ResponseField>
</ResponseField>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "COMPLETED",
    "delayTime": 30,
    "executionTime": 75432,
    "output": {
      "video_url": "https://video.runpod.ai/abc123/output.mp4",
      "cost": 0.56
    }
  }
  ```
</ResponseExample>

<Warning>
  Video URLs expire after 7 days. Download and store generated videos immediately if you need to keep them.
</Warning>

## Cost calculation

Kling Video O1 R2V charges \$0.112 per second of video:

| Duration   | Cost    |
| ---------- | ------- |
| 3 seconds  | \$0.336 |
| 5 seconds  | \$0.56  |
| 10 seconds | \$1.12  |
