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

> ## Agent Instructions
> If this page is missing information, contains outdated instructions, or doesn't fully answer the user's question, use the feedback tool to report it. In your feedback, be specific about what's missing, what appears out of date, or what needs to be corrected or updated, so the docs team can act on it directly.

# WAN 2.6 I2V

> Image-to-video generation with audio support and resolutions up to 1080p. Explore this model's inputs and outputs on Runpod Public Endpoints.

WAN 2.6 Image-to-Video transforms static images into dynamic videos with support for audio integration, multiple resolutions up to 1080p, and durations up to 15 seconds. It features optional prompt expansion and multi-shot composition modes.

<Card title="Try in playground" icon="play" href="https://console.runpod.io/hub/playground/video/wan-2-6-i2v" horizontal>
  Test WAN 2.6 I2V in the Runpod Hub playground.
</Card>

|              |                                                |
| ------------ | ---------------------------------------------- |
| **Endpoint** | `https://api.runpod.ai/v2/wan-2-6-i2v/runsync` |
| **Pricing**  | \$0.10/s (720p), \$0.15/s (1080p)              |
| **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 motion and content.
</ParamField>

<ParamField body="input.image" type="string" required>
  URL of the source image to animate.
</ParamField>

<ParamField body="input.audio" type="string">
  URL of an audio file to include in the video.
</ParamField>

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

<ParamField body="input.size" type="string" default="1280*720">
  Video resolution. Options: `1280*720`, `1920*1080`.
</ParamField>

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

<ParamField body="input.shot_type" type="string" default="single">
  Shot composition mode. Options: `single`, `multi`.
</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={null}
  curl -X POST "https://api.runpod.ai/v2/wan-2-6-i2v/runsync" \
    -H "Authorization: Bearer $RUNPOD_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": {
        "prompt": "A person walking through a sunny park, leaves gently swaying",
        "image": "https://example.com/person-park.jpg",
        "size": "1280*720",
        "duration": 5,
        "shot_type": "single",
        "seed": -1,
        "enable_prompt_expansion": false
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.runpod.ai/v2/wan-2-6-i2v/runsync",
      headers={
          "Authorization": f"Bearer {RUNPOD_API_KEY}",
          "Content-Type": "application/json",
      },
      json={
          "input": {
              "prompt": "A person walking through a sunny park, leaves gently swaying",
              "image": "https://example.com/person-park.jpg",
              "size": "1280*720",
              "duration": 5,
              "shot_type": "single",
              "seed": -1,
              "enable_prompt_expansion": False,
          }
      },
  )

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

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.runpod.ai/v2/wan-2-6-i2v/runsync",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${RUNPOD_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: {
          prompt: "A person walking through a sunny park, leaves gently swaying",
          image: "https://example.com/person-park.jpg",
          size: "1280*720",
          duration: 5,
          shot_type: "single",
          seed: -1,
          enable_prompt_expansion: false,
        },
      }),
    }
  );

  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="delayTime" type="integer">
  Time in milliseconds the request spent in queue before processing began.
</ResponseField>

<ResponseField name="executionTime" type="integer">
  Time in milliseconds the model took to generate the video.
</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={null}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "COMPLETED",
    "delayTime": 28,
    "executionTime": 95432,
    "output": {
      "video_url": "https://video.runpod.ai/abc123/output.mp4",
      "cost": 0.50
    }
  }
  ```

  ```json 400 theme={null}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "FAILED",
    "error": "Invalid image URL"
  }
  ```
</ResponseExample>

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

## Cost calculation

WAN 2.6 I2V pricing varies by resolution:

| Resolution        | Rate              |
| ----------------- | ----------------- |
| 720p (1280x720)   | \$0.10 per second |
| 1080p (1920x1080) | \$0.15 per second |

Example costs:

| Resolution | 5 seconds | 10 seconds | 15 seconds |
| ---------- | --------- | ---------- | ---------- |
| 720p       | \$0.50    | \$1.00     | \$1.50     |
| 1080p      | \$0.75    | \$1.50     | \$2.25     |
