> ## 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.

# Vidu Q3 I2V

> Animate reference images into videos with text-driven motion and optional audio generation. See model inputs and outputs on Runpod Public Endpoints.

Vidu Q3 Image-to-Video animates a reference image into a video with motion driven by a text prompt. It supports multiple resolutions up to 1080p, adjustable duration up to 16 seconds, and optional synchronized audio generation with background music.

<Card title="Try in playground" icon="play" href="https://console.runpod.io/hub/playground/video/vidu-q3-i2v" horizontal>
  Test Vidu Q3 I2V in the Runpod Hub playground.
</Card>

|              |                                                |
| ------------ | ---------------------------------------------- |
| **Endpoint** | `https://api.runpod.ai/v2/vidu-q3-i2v/runsync` |
| **Pricing**  | \$0.15 per second                              |
| **Type**     | Video generation                               |

## Request

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

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

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

<ParamField body="input.resolution" type="string" default="720p">
  Output video resolution. Options: `540p`, `720p`, `1080p`.
</ParamField>

<ParamField body="input.duration" type="integer" default="5">
  Video length in seconds (1-16).
</ParamField>

<ParamField body="input.movement_amplitude" type="string" default="auto">
  Motion intensity control. Options: `auto`, `small`, `medium`, `large`.
</ParamField>

<ParamField body="input.generate_audio" type="boolean" default="true">
  Enable synchronized audio generation.
</ParamField>

<ParamField body="input.bgm" type="boolean" default="true">
  Enable background music.
</ParamField>

<ParamField body="input.seed" type="integer" default="-1">
  Random seed for reproducibility. Set to -1 for random.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.runpod.ai/v2/vidu-q3-i2v/runsync" \
    -H "Authorization: Bearer $RUNPOD_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": {
        "image": "https://example.com/portrait.jpg",
        "prompt": "Person turns head slowly and smiles at camera",
        "resolution": "720p",
        "duration": 5,
        "movement_amplitude": "medium",
        "generate_audio": true,
        "bgm": true,
        "seed": -1
      }
    }'
  ```

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

  response = requests.post(
      "https://api.runpod.ai/v2/vidu-q3-i2v/runsync",
      headers={
          "Authorization": f"Bearer {RUNPOD_API_KEY}",
          "Content-Type": "application/json",
      },
      json={
          "input": {
              "image": "https://example.com/portrait.jpg",
              "prompt": "Person turns head slowly and smiles at camera",
              "resolution": "720p",
              "duration": 5,
              "movement_amplitude": "medium",
              "generate_audio": True,
              "bgm": True,
              "seed": -1,
          }
      },
  )

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

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.runpod.ai/v2/vidu-q3-i2v/runsync",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${RUNPOD_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: {
          image: "https://example.com/portrait.jpg",
          prompt: "Person turns head slowly and smiles at camera",
          resolution: "720p",
          duration: 5,
          movement_amplitude: "medium",
          generate_audio: true,
          bgm: true,
          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="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": 32,
    "executionTime": 45678,
    "output": {
      "video_url": "https://video.runpod.ai/abc123/output.mp4",
      "cost": 0.75
    }
  }
  ```

  ```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

Vidu Q3 I2V charges \$0.15 per second of video generated.

| Duration   | Cost   |
| ---------- | ------ |
| 5 seconds  | \$0.75 |
| 10 seconds | \$1.50 |
| 16 seconds | \$2.40 |
