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

# Wan 2.7 R2V

> Wan 2.7 R2V uses up to five image/video references for subjects and scenes, with optional first-frame control and per-reference voice timbre.

Wan 2.7 R2V uses up to five image/video references for subjects and scenes, with optional first-frame control and per-reference voice timbre.

Use the exact model ID `wan2.7-r2v` with the MixRoute Video Generations API.

## Model Specifications

| Property           | Value                                              |
| ------------------ | -------------------------------------------------- |
| Mode               | Reference-to-Video                                 |
| Resolution         | 720P / 1080P                                       |
| Duration (seconds) | 2-15 (no video) / 2-10 (with video)                |
| Output             | MP4 / 30 fps                                       |
| Request            | `model` + `metadata.input` + `metadata.parameters` |

The [Wan API reference](/en/api-reference/endpoint/wan) defines the model-specific fields, media limits, defaults, and polling workflow. Do not copy a different version's input or output-size fields.

## Request Example

Set MIXROUTE\_API\_KEY and replace media placeholders with accessible files.

```bash theme={null}
curl --request POST "https://api.mixroute.ai/v1/video/generations" \
  --header "Authorization: Bearer $MIXROUTE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "wan2.7-r2v",
  "metadata": {
    "input": {
      "prompt": "Image 1 slowly rotates on a white tabletop. Static camera, soft studio lighting.",
      "media": [
        {
          "type": "reference_image",
          "url": "https://example.com/reference.png"
        }
      ]
    },
    "parameters": {
      "resolution": "720P",
      "ratio": "1:1",
      "duration": 2,
      "watermark": false
    }
  }
}'
```

### Python

```python theme={null}
import json
import os
import requests

payload = json.loads(r'''
{
  "model": "wan2.7-r2v",
  "metadata": {
    "input": {
      "prompt": "Image 1 slowly rotates on a white tabletop. Static camera, soft studio lighting.",
      "media": [
        {
          "type": "reference_image",
          "url": "https://example.com/reference.png"
        }
      ]
    },
    "parameters": {
      "resolution": "720P",
      "ratio": "1:1",
      "duration": 2,
      "watermark": false
    }
  }
}
''')
response = requests.post(
    "https://api.mixroute.ai/v1/video/generations",
    headers={"Authorization": "Bearer " + os.environ["MIXROUTE_API_KEY"]},
    json=payload,
    timeout=120,
)
response.raise_for_status()
result = response.json()
task_id = result.get("task_id") or result.get("id")
if not task_id:
    raise RuntimeError(result.get("message") or result)
print(task_id)
```

Retain the submitted MixRoute task ID. Query [video task status](/en/api-reference/endpoint/query-video-task) until SUCCESS or FAILURE. On SUCCESS, read data.result\_url; the raw upstream output and usage are in data.data.
