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

# SORA 2 Pro I2V

> OpenAI's Sora 2 Pro professional-grade video and audio generation model. Explore this model's inputs and outputs on Runpod Public Endpoints.

SORA 2 Pro I2V is OpenAI's professional-grade video and audio generation model. It produces higher quality output than the standard SORA 2, with enhanced visual fidelity and more nuanced audio generation.

<Card title="Try in playground" icon="play" href="https://console.runpod.io/hub/playground/video/sora-2-pro-i2v" horizontal>
  Test SORA 2 Pro I2V in the Runpod Hub playground.
</Card>

|              |                                                   |
| ------------ | ------------------------------------------------- |
| **Endpoint** | `https://api.runpod.ai/v2/sora-2-pro-i2v/runsync` |
| **Pricing**  | \$1.20–\$6.00 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, including action, ambient sound, and character dialogue.
</ParamField>

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

<ParamField body="input.size" type="string" default="720p">
  Output video resolution.
</ParamField>

<ParamField body="input.duration" type="integer" required>
  Video duration in seconds. Valid options: 4, 8, or 12.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.runpod.ai/v2/sora-2-pro-i2v/runsync" \
    -H "Authorization: Bearer $RUNPOD_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": {
        "prompt": "Action: She opened her hands. Ambient Sound: The soft crackling of the dying fire, a happy ding from the timer. Character Dialogue: (Voice is high-pitched, bubbly) Welcome to my bakery!",
        "image": "https://example.com/baker.jpeg",
        "size": "720p",
        "duration": 4
      }
    }'
  ```

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

  response = requests.post(
      "https://api.runpod.ai/v2/sora-2-pro-i2v/runsync",
      headers={
          "Authorization": f"Bearer {RUNPOD_API_KEY}",
          "Content-Type": "application/json",
      },
      json={
          "input": {
              "prompt": "Action: She opened her hands. Ambient Sound: The soft crackling of the dying fire, a happy ding from the timer. Character Dialogue: (Voice is high-pitched, bubbly) Welcome to my bakery!",
              "image": "https://example.com/baker.jpeg",
              "size": "720p",
              "duration": 4,
          }
      },
  )

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

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.runpod.ai/v2/sora-2-pro-i2v/runsync",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${RUNPOD_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: {
          prompt: "Action: She opened her hands. Ambient Sound: The soft crackling of the dying fire, a happy ding from the timer. Character Dialogue: (Voice is high-pitched, bubbly) Welcome to my bakery!",
          image: "https://example.com/baker.jpeg",
          size: "720p",
          duration: 4,
        },
      }),
    }
  );

  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": 42,
    "executionTime": 185432,
    "workerId": "oqk7ao1uomckye",
    "output": {
      "video_url": "https://video.runpod.ai/abc123/output.mp4",
      "cost": 1.20
    }
  }
  ```

  ```json 400 theme={null}
  {
    "id": "sync-a1b2c3d4-e5f6-7890-abcd-ef1234567890-u1",
    "status": "FAILED",
    "error": "Invalid duration: must be 4, 8, or 12 seconds"
  }
  ```
</ResponseExample>

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

## Prompt structure

For best results, structure your prompt with these components:

* **Action**: Describe what happens in the scene
* **Ambient Sound**: Describe background audio
* **Character Dialogue**: Include spoken lines with voice descriptions

## Cost calculation

SORA 2 Pro I2V pricing varies by resolution and duration:

| Resolution | 4 seconds | 8 seconds | 12 seconds |
| ---------- | --------- | --------- | ---------- |
| 720p       | \$1.20    | \$2.40    | \$3.60     |
| 1080p      | \$2.00    | \$4.00    | \$6.00     |
