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

# WAN 3.0 — Reference To Video

> Alibaba WAN 3.0 all-in-one video with native audio; 2–30s, 480p/720p/1080p. Optimized for reference to video via apisale.

## Overview

Alibaba WAN 3.0 all-in-one video with native audio; 2–30s, 480p/720p/1080p. Optimized for reference to video via apisale.

<Info>
  **Docs** = API contract + Try it (snapshot). **[Explore](https://apisale.ai/explore)** = browser playground. **[Model page](https://apisale.ai/models/alibaba/wan-3.0/reference-to-video)** = product examples.
</Info>

## Endpoint

```http theme={null}
POST https://api.apisale.ai/v1/run/alibaba/wan-3.0/reference-to-video
```

|                |                                           |
| -------------- | ----------------------------------------- |
| **Model slug** | `alibaba/wan-3.0/reference-to-video`      |
| **Category**   | Reference to Video (`reference-to-video`) |
| **Lab**        | Alibaba                                   |
| **Mode**       | async                                     |

## Pricing

**From \$0.035/sec**

apisale price is **30%** below the vendor's official list price.

| Tier  | Unit   | Official price | apisale price |
| ----- | ------ | -------------- | ------------- |
| 480p  | second | \$0.050        | \$0.035       |
| 720p  | second | \$0.100        | \$0.070       |
| 1080p | second | \$0.200        | \$0.140       |

<Info>
  **Official price** = vendor list price. **apisale price** = what you pay through apisale.
</Info>

## Request

```json theme={null}
{‌
  "input": {‌
    "audio": true,
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "adaptive",
    "enable_thinking": false,
    "enable_safety_checker": true,
    "enable_prompt_expansion": true,
    "prompt": "The subject in Image 1 strolls past the scene from Video 1, consistent lighting, slow cinematic dolly",
    "reference_image_urls": [
      "https://assets.apisale.ai/permanent/official/google/nano-banana-2/example-t2i-01.png"
    ]
  }
}
```

### Parameters

Fields marked \* are required. Use `Authorization: Key YOUR_API_KEY` for REST.

<ParamField body="input.seed" type="number">
  Optional random seed for reproducibility. Range: 0 – 2147483647
</ParamField>

<ParamField body="input.audio" type="boolean">
  Include generated audio. Default: `true`
</ParamField>

<ParamField body="input.prompt" type="string">
  Text prompt directing how the reference media is used; address media positionally, e.g. the subject in Image 1 walks past Video 1.
</ParamField>

<ParamField body="input.web_url" type="string">
  Public webpage URL to base the video on; requires enable\_thinking=true.
</ParamField>

<ParamField body="input.duration" type="number">
  Output duration in seconds (2-30). Default: `5` Range: 2 – 30
</ParamField>

<ParamField body="input.file_url" type="string">
  Document URL to base the video on; requires enable\_thinking=true.
</ParamField>

<ParamField body="input.resolution" type="string">
  Default: `1080p` Values: `480p`, `720p`, `1080p`
</ParamField>

<ParamField body="input.aspect_ratio" type="string">
  Default: `adaptive` Values: `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`
</ParamField>

<ParamField body="input.enable_thinking" type="boolean">
  Enhanced reasoning before generation; required for file\_url / web\_url inputs. Default: `false`
</ParamField>

<ParamField body="input.reference_audio_urls" type="array">
  Up to 5 reference audio clips totaling at most 15 seconds.
</ParamField>

<ParamField body="input.reference_image_urls" type="array">
  Up to 10 reference image URLs.
</ParamField>

<ParamField body="input.reference_video_urls" type="array">
  Up to 5 reference videos totaling at most 15 seconds; each clip at least 16 fps.
</ParamField>

<ParamField body="input.enable_safety_checker" type="boolean">
  Content moderation on input and output. Default: `true`
</ParamField>

<ParamField body="input.enable_prompt_expansion" type="boolean">
  Intelligent prompt rewriting; disabling saves \~20-60s latency but may degrade quality. Default: `true`
</ParamField>

<ParamField body="webhook_url" type="string">
  Optional HTTPS webhook when the run reaches a terminal state.
</ParamField>

<ParamField body="sync" type="boolean">
  Block until completion (same Run response shape).
</ParamField>

<AccordionGroup>
  <Accordion title="Input schema">
    ```json expandable theme={null}
    {‌
      "params": {‌
        "seed": {‌
          "max": 2147483647,
          "min": 0,
          "type": "int",
          "description": "Optional random seed for reproducibility."
        },
        "audio": {‌
          "type": "bool",
          "default": true,
          "description": "Include generated audio."
        },
        "prompt": {‌
          "type": "string",
          "max_length": 10000,
          "description": "Text prompt directing how the reference media is used; address media positionally, e.g. the subject in Image 1 walks past Video 1."
        },
        "web_url": {‌
          "type": "string",
          "description": "Public webpage URL to base the video on; requires enable_thinking=true."
        },
        "duration": {‌
          "max": 30,
          "min": 2,
          "type": "int",
          "default": 5,
          "description": "Output duration in seconds (2-30)."
        },
        "file_url": {‌
          "type": "string",
          "description": "Document URL to base the video on; requires enable_thinking=true."
        },
        "resolution": {‌
          "type": "enum",
          "values": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "1080p"
        },
        "aspect_ratio": {‌
          "type": "enum",
          "values": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16"
          ],
          "default": "adaptive"
        },
        "enable_thinking": {‌
          "type": "bool",
          "default": false,
          "description": "Enhanced reasoning before generation; required for file_url / web_url inputs."
        },
        "reference_audio_urls": {‌
          "type": "array<media>",
          "max_items": 5,
          "description": "Up to 5 reference audio clips totaling at most 15 seconds."
        },
        "reference_image_urls": {‌
          "type": "array<media>",
          "max_items": 10,
          "description": "Up to 10 reference image URLs."
        },
        "reference_video_urls": {‌
          "type": "array<media>",
          "max_items": 5,
          "description": "Up to 5 reference videos totaling at most 15 seconds; each clip at least 16 fps."
        },
        "enable_safety_checker": {‌
          "type": "bool",
          "default": true,
          "description": "Content moderation on input and output."
        },
        "enable_prompt_expansion": {‌
          "type": "bool",
          "default": true,
          "description": "Intelligent prompt rewriting; disabling saves ~20-60s latency but may degrade quality."
        }
      }
    }
    ```
  </Accordion>
</AccordionGroup>

## Submit response

Returns a **Run** with `run_id`. Poll with [GET /v1/runs/\{run\_id}](/model-apis/poll-runs) or use **Try it** above.

<ResponseField name="run_id" type="string" required>
  Unique run ID — save for polling and webhooks.
</ResponseField>

<ResponseField name="status" type="string" required>
  `queued` (async) or terminal state for sync runs.
</ResponseField>

<ResponseField name="output" type="object">
  Result when `status` is `succeeded` — see **Output schema** below.
</ResponseField>

### Example (async submit)

```json theme={null}
{
  "run_id": "run_550e8400-e29b-41d4-a716-446655440000",
  "endpoint": "alibaba/wan-3.0/reference-to-video",
  "model": "reference-to-video",
  "capability": "video",
  "mode": "reference-to-video",
  "status": "queued",
  "output": null,
  "error": null,
  "billing": null,
  "created_at": "2026-06-27T12:00:00.000Z",
  "started_at": null,
  "completed_at": null,
  "elapsed_ms": null
}
```

Full lifecycle: [Runs lifecycle](/model-apis/runs-lifecycle).

## Output

When `status` is `succeeded`, `output` follows this schema:

<AccordionGroup>
  <Accordion title="Output schema">
    ```json expandable theme={null}
    {‌
      "type": "object",
      "example": {‌
        "videos": [
          {‌
            "url": "https://example.com/out.mp4",
            "content_type": "video/mp4"
          }
        ]
      },
      "required": [
        "videos"
      ],
      "properties": {‌
        "videos": {‌
          "type": "array",
          "items": {‌
            "type": "object",
            "required": [
              "url"
            ],
            "properties": {‌
              "url": {‌
                "type": "string"
              },
              "file_name": {‌
                "type": "string"
              },
              "content_type": {‌
                "type": "string"
              }
            }
          }
        }
      },
      "description": "Succeeded task output: single video URL."
    }
    ```
  </Accordion>
</AccordionGroup>

## Example

```bash theme={null}
curl -X POST "https://api.apisale.ai/v1/run/alibaba/wan-3.0/reference-to-video" \
  -H "Authorization: Key YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": {
    "audio": true,
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "adaptive",
    "enable_thinking": false,
    "enable_safety_checker": true,
    "enable_prompt_expansion": true,
    "prompt": "The subject in Image 1 strolls past the scene from Video 1, consistent lighting, slow cinematic dolly",
    "reference_image_urls": [
      "https://assets.apisale.ai/permanent/official/google/nano-banana-2/example-t2i-01.png"
    ]
  }
}'
```

## Related

* [Runs lifecycle](/model-apis/runs-lifecycle)
* [Video API overview](/api/video)
* [Account API](/get-started/account-and-monitoring)


## OpenAPI

````yaml openapi-catalog.json POST /v1/run/alibaba/wan-3.0/reference-to-video
openapi: 3.0.3
info:
  title: apisale Model Catalog
  version: '2026-09-01T09:47:50.773Z'
  description: Per-model OpenAPI operations for Mintlify Try playground.
servers:
  - url: https://api.apisale.ai
security: []
paths:
  /v1/run/alibaba/wan-3.0/reference-to-video:
    post:
      tags:
        - Model catalog
        - video
        - Alibaba
      summary: Create WAN 3.0 — Reference To Video
      description: >-
        Alibaba WAN 3.0 all-in-one video with native audio; 2–30s,
        480p/720p/1080p. Optimized for reference to video via apisale.
      operationId: submit-alibaba-wan-3-0-reference-to-video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - input
              properties:
                input:
                  type: object
                  properties:
                    seed:
                      description: Optional random seed for reproducibility.
                      type: number
                      minimum: 0
                      maximum: 2147483647
                    audio:
                      description: Include generated audio.
                      type: boolean
                      default: true
                    prompt:
                      description: >-
                        Text prompt directing how the reference media is used;
                        address media positionally, e.g. the subject in Image 1
                        walks past Video 1.
                      type: string
                    web_url:
                      description: >-
                        Public webpage URL to base the video on; requires
                        enable_thinking=true.
                      type: string
                    duration:
                      description: Output duration in seconds (2-30).
                      type: number
                      minimum: 2
                      maximum: 30
                      default: 5
                    file_url:
                      description: >-
                        Document URL to base the video on; requires
                        enable_thinking=true.
                      type: string
                    resolution:
                      type: string
                      enum:
                        - 480p
                        - 720p
                        - 1080p
                      default: 1080p
                    aspect_ratio:
                      type: string
                      enum:
                        - adaptive
                        - '16:9'
                        - '4:3'
                        - '1:1'
                        - '3:4'
                        - '9:16'
                      default: adaptive
                    enable_thinking:
                      description: >-
                        Enhanced reasoning before generation; required for
                        file_url / web_url inputs.
                      type: boolean
                      default: false
                    reference_audio_urls:
                      description: >-
                        Up to 5 reference audio clips totaling at most 15
                        seconds.
                      type: array
                      items:
                        type: string
                    reference_image_urls:
                      description: Up to 10 reference image URLs.
                      type: array
                      items:
                        type: string
                    reference_video_urls:
                      description: >-
                        Up to 5 reference videos totaling at most 15 seconds;
                        each clip at least 16 fps.
                      type: array
                      items:
                        type: string
                    enable_safety_checker:
                      description: Content moderation on input and output.
                      type: boolean
                      default: true
                    enable_prompt_expansion:
                      description: >-
                        Intelligent prompt rewriting; disabling saves ~20-60s
                        latency but may degrade quality.
                      type: boolean
                      default: true
                  example:
                    audio: true
                    duration: 5
                    resolution: 720p
                    aspect_ratio: adaptive
                    enable_thinking: false
                    enable_safety_checker: true
                    enable_prompt_expansion: true
                    prompt: >-
                      The subject in Image 1 strolls past the scene from Video
                      1, consistent lighting, slow cinematic dolly
                    reference_image_urls:
                      - >-
                        https://assets.apisale.ai/permanent/official/google/nano-banana-2/example-t2i-01.png
                webhook_url:
                  type: string
                  format: uri
                sync:
                  type: boolean
                  default: false
            example:
              input:
                audio: true
                duration: 5
                resolution: 720p
                aspect_ratio: adaptive
                enable_thinking: false
                enable_safety_checker: true
                enable_prompt_expansion: true
                prompt: >-
                  The subject in Image 1 strolls past the scene from Video 1,
                  consistent lighting, slow cinematic dolly
                reference_image_urls:
                  - >-
                    https://assets.apisale.ai/permanent/official/google/nano-banana-2/example-t2i-01.png
      responses:
        '201':
          description: Run accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunObject'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    RunObject:
      type: object
      required:
        - run_id
        - endpoint
        - model
        - capability
        - mode
        - status
        - created_at
      properties:
        run_id:
          type: string
          description: Unique run identifier
        endpoint:
          type: string
          description: Model slug
        model:
          type: string
        capability:
          type: string
        mode:
          type: string
        status:
          type: string
          enum:
            - queued
            - processing
            - succeeded
            - failed
            - timeout
            - cancelled
        output:
          type: object
          nullable: true
        error:
          type: object
          nullable: true
          properties:
            type:
              type: string
              description: Machine-readable error code
            code:
              type: number
              description: HTTP status
            message:
              type: string
        billing:
          type: object
          nullable: true
          properties:
            amount:
              type: string
            currency:
              type: string
              enum:
                - usd
        created_at:
          type: string
          format: date-time
        started_at:
          type: string
          format: date-time
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        elapsed_ms:
          type: number
          nullable: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Key sk-... (native REST) or Bearer sk-... (vendor SDKs)

````