> ## 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.2 I2V 720p LoRA

> Open-source video generation with LoRA support for customized camera movements. See model inputs and outputs on Runpod Public Endpoints.

WAN 2.2 I2V 720p LoRA is an open-source video generation model with LoRA support for customized camera movements and effects. It uses separate high-noise and low-noise LoRA configurations to achieve precise control over motion and style.

<Card title="Try in playground" icon="play" href="https://console.runpod.io/hub/playground/video/wan-2-2-t2v-720-lora" horizontal>
  Test WAN 2.2 I2V 720p LoRA in the Runpod Hub playground.
</Card>

|              |                                                         |
| ------------ | ------------------------------------------------------- |
| **Endpoint** | `https://api.runpod.ai/v2/wan-2-2-t2v-720-lora/runsync` |
| **Pricing**  | \$0.35–\$0.56 per video                                 |
| **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.
</ParamField>

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

<ParamField body="input.high_noise_loras" type="array">
  LoRA configurations for high-noise denoising stages.
</ParamField>

<ParamField body="input.high_noise_loras[].path" type="string" required>
  URL or path to the LoRA model file.
</ParamField>

<ParamField body="input.high_noise_loras[].scale" type="number" required>
  Scale factor for the LoRA influence.
</ParamField>

<ParamField body="input.low_noise_loras" type="array">
  LoRA configurations for low-noise denoising stages.
</ParamField>

<ParamField body="input.low_noise_loras[].path" type="string" required>
  URL or path to the LoRA model file.
</ParamField>

<ParamField body="input.low_noise_loras[].scale" type="number" required>
  Scale factor for the LoRA influence.
</ParamField>

<ParamField body="input.duration" type="integer" default="5">
  Video duration in seconds.
</ParamField>

<ParamField body="input.seed" type="integer" default="-1">
  Seed for reproducible results. Set to -1 for random.
</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-2-t2v-720-lora/runsync" \
    -H "Authorization: Bearer $RUNPOD_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": {
        "prompt": "orbit 180 around an astronaut on the moon",
        "image": "https://example.com/astronaut.png",
        "high_noise_loras": [
          {
            "path": "https://huggingface.co/ostris/wan22_i2v_14b_orbit_shot_lora/resolve/main/wan22_14b_i2v_orbit_high_noise.safetensors",
            "scale": 1
          }
        ],
        "low_noise_loras": [
          {
            "path": "https://huggingface.co/ostris/wan22_i2v_14b_orbit_shot_lora/resolve/main/wan22_14b_i2v_orbit_low_noise.safetensors",
            "scale": 1
          }
        ],
        "duration": 5,
        "seed": -1,
        "enable_safety_checker": true
      }
    }'
  ```

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

  response = requests.post(
      "https://api.runpod.ai/v2/wan-2-2-t2v-720-lora/runsync",
      headers={
          "Authorization": f"Bearer {RUNPOD_API_KEY}",
          "Content-Type": "application/json",
      },
      json={
          "input": {
              "prompt": "orbit 180 around an astronaut on the moon",
              "image": "https://example.com/astronaut.png",
              "high_noise_loras": [
                  {
                      "path": "https://huggingface.co/ostris/wan22_i2v_14b_orbit_shot_lora/resolve/main/wan22_14b_i2v_orbit_high_noise.safetensors",
                      "scale": 1,
                  }
              ],
              "low_noise_loras": [
                  {
                      "path": "https://huggingface.co/ostris/wan22_i2v_14b_orbit_shot_lora/resolve/main/wan22_14b_i2v_orbit_low_noise.safetensors",
                      "scale": 1,
                  }
              ],
              "duration": 5,
              "seed": -1,
              "enable_safety_checker": True,
          }
      },
  )

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

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.runpod.ai/v2/wan-2-2-t2v-720-lora/runsync",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${RUNPOD_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: {
          prompt: "orbit 180 around an astronaut on the moon",
          image: "https://example.com/astronaut.png",
          high_noise_loras: [
            {
              path: "https://huggingface.co/ostris/wan22_i2v_14b_orbit_shot_lora/resolve/main/wan22_14b_i2v_orbit_high_noise.safetensors",
              scale: 1,
            },
          ],
          low_noise_loras: [
            {
              path: "https://huggingface.co/ostris/wan22_i2v_14b_orbit_shot_lora/resolve/main/wan22_14b_i2v_orbit_low_noise.safetensors",
              scale: 1,
            },
          ],
          duration: 5,
          seed: -1,
          enable_safety_checker: true,
        },
      }),
    }
  );

  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="workerId" type="string">
  Identifier of the worker that processed the request.
</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": 32,
    "executionTime": 95432,
    "workerId": "oqk7ao1uomckye",
    "output": {
      "video_url": "https://video.runpod.ai/abc123/output.mp4",
      "cost": 0.35
    }
  }
  ```

  ```json 400 theme={null}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "FAILED",
    "error": "Failed to load LoRA model from 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.2 I2V 720p LoRA pricing:

| Duration  | Cost   |
| --------- | ------ |
| 5 seconds | \$0.35 |
| 8 seconds | \$0.56 |
