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

# wan3.0-video

> Create and query Wan3.0 text, frame-guided, multimodal reference, file, and webpage video tasks.

Wan3.0 uses one model and one creation endpoint for text-to-video, frame-guided video, multimodal reference, and document or webpage reference workflows. Select a tab for the request shape you need, then query the returned task ID.

<Info>
  Alibaba's official Wan3.0 page lists only `wan3.0-video`. AnyFast also provides the AnyFast-specific `wan3.0-video-nsfw` variant through the `Direct` resource group.
</Info>

<Tabs sync={false}>
  <Tab title="Text to video">
    ## Create task

    `POST /v1/video/generations`

    <div className="kling-api-example-panel">
      ```bash cURL theme={null}
      curl --request POST \
        --url https://www.anyfast.ai/v1/video/generations \
        --header 'Authorization: Bearer YOUR_API_KEY' \
        --header 'Content-Type: application/json' \
        --data '{
          "model": "wan3.0-video",
          "input": {
            "prompt": "A kitten runs across a moonlit rooftop while distant neon signs flicker, cinematic lighting and a smooth tracking shot."
          },
          "parameters": {
            "resolution": "1080P",
            "ratio": "16:9",
            "duration": 8,
            "audio": true,
            "seed": 42,
            "watermark": false
          }
        }'
      ```
    </div>

    ## Request headers

    <ParamField header="Authorization" type="string" required>Bearer authentication in the form `Bearer YOUR_API_KEY`.</ParamField>
    <ParamField header="Content-Type" type="string" default="application/json" required>Request body format.</ParamField>

    ## Request body

    <ParamField body="model" type="string" required>
      AnyFast model ID. Use `wan3.0-video`, or use the AnyFast-specific `wan3.0-video-nsfw` variant in the `Direct` resource group. Alibaba's official page lists only the standard model.
    </ParamField>

    <ParamField body="input" type="object" required>Basic generation input. At least one of `input.prompt` or `input.media` must be present.</ParamField>
    <ParamField body="input.prompt" type="string" required>Video description in Chinese or English. Content beyond 20,000 characters is automatically truncated.</ParamField>
    <ParamField body="parameters" type="object">Video generation controls.</ParamField>
    <ParamField body="parameters.resolution" type="string" default="1080P">Output resolution: `1080P`, `720P`, or `480P`.</ParamField>
    <ParamField body="parameters.ratio" type="string" default="adaptive">Output aspect ratio: `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`.</ParamField>
    <ParamField body="parameters.duration" type="integer" default={5}>Output duration in seconds. With no video input, use `-1` for smart duration or an integer from 2 through 30.</ParamField>
    <ParamField body="parameters.audio" type="boolean" default={true}>Whether the generated video contains an audio track. The price is the same for `true` and `false`.</ParamField>
    <ParamField body="parameters.seed" type="integer">Random seed from `0` through `2147483647`.</ParamField>
    <ParamField body="parameters.watermark" type="boolean" default={false}>Whether to add a watermark to the generated video.</ParamField>

    ## Create response

    <div className="kling-api-example-panel">
      ```json 200 theme={null}
      {
        "id": "asyntask_wan30example123",
        "task_id": "asyntask_wan30example123",
        "object": "video",
        "model": "wan3.0-video",
        "status": "queued",
        "progress": 0,
        "created_at": 1787280000
      }
      ```
    </div>

    <ResponseField name="id" type="string">Task ID used to query the result.</ResponseField>
    <ResponseField name="task_id" type="string">Task ID, identical to `id`.</ResponseField>
    <ResponseField name="object" type="string">Returned object type, `video`.</ResponseField>
    <ResponseField name="model" type="string">AnyFast model ID used by the task.</ResponseField>
    <ResponseField name="status" type="string">Initial task status, normally `queued`.</ResponseField>
    <ResponseField name="progress" type="integer">Initial task progress percentage.</ResponseField>
    <ResponseField name="created_at" type="integer">Creation time as a Unix timestamp in seconds.</ResponseField>
  </Tab>

  <Tab title="First-frame video">
    ## Create task

    `POST /v1/video/generations`

    <div className="kling-api-example-panel">
      ```bash cURL theme={null}
      curl --request POST \
        --url https://www.anyfast.ai/v1/video/generations \
        --header 'Authorization: Bearer YOUR_API_KEY' \
        --header 'Content-Type: application/json' \
        --data '{
          "model": "wan3.0-video",
          "input": {
            "prompt": "The painted character steps away from the wall and begins an energetic rap performance as the camera moves closer.",
            "media": [
              {
                "type": "first_frame",
                "url": "https://example.com/first-frame.png"
              }
            ]
          },
          "parameters": {
            "resolution": "1080P",
            "ratio": "adaptive",
            "duration": 5,
            "audio": true,
            "seed": 42,
            "watermark": false
          }
        }'
      ```
    </div>

    ## Request headers

    <ParamField header="Authorization" type="string" required>Bearer authentication in the form `Bearer YOUR_API_KEY`.</ParamField>
    <ParamField header="Content-Type" type="string" default="application/json" required>Request body format.</ParamField>

    ## Request body

    <ParamField body="model" type="string" required>Use `wan3.0-video`, or the AnyFast-specific `wan3.0-video-nsfw` variant in the `Direct` resource group.</ParamField>
    <ParamField body="input" type="object" required>Basic generation input. At least one of `input.prompt` or `input.media` must be present.</ParamField>
    <ParamField body="input.prompt" type="string">Motion, scene, camera, and audio description. Content beyond 20,000 characters is automatically truncated.</ParamField>
    <ParamField body="input.media" type="object[]" required>Supply exactly one `first_frame` image. Do not combine frame media with `reference_image`, `reference_video`, `reference_audio`, `file`, or `link`.</ParamField>
    <ParamField body="input.media[].type" type="string" required>Use `first_frame`.</ParamField>
    <ParamField body="input.media[].url" type="string" required>Public image URL or Base64 data URI.</ParamField>
    <ParamField body="parameters" type="object">Video generation controls.</ParamField>
    <ParamField body="parameters.resolution" type="string" default="1080P">Output resolution: `1080P`, `720P`, or `480P`.</ParamField>
    <ParamField body="parameters.ratio" type="string" default="adaptive">Output aspect ratio: `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`. `adaptive` can follow the source image and intent.</ParamField>
    <ParamField body="parameters.duration" type="integer" default={5}>Output duration in seconds. Use `-1` for smart duration or an integer from 2 through 30.</ParamField>
    <ParamField body="parameters.audio" type="boolean" default={true}>Whether the generated video contains an audio track. The price is the same for `true` and `false`.</ParamField>
    <ParamField body="parameters.seed" type="integer">Random seed from `0` through `2147483647`.</ParamField>
    <ParamField body="parameters.watermark" type="boolean" default={false}>Whether to add a watermark to the generated video.</ParamField>

    ## Create response

    <div className="kling-api-example-panel">
      ```json 200 theme={null}
      {
        "id": "asyntask_wan30example123",
        "task_id": "asyntask_wan30example123",
        "object": "video",
        "model": "wan3.0-video",
        "status": "queued",
        "progress": 0,
        "created_at": 1787280000
      }
      ```
    </div>

    <ResponseField name="id" type="string">Task ID used to query the result.</ResponseField>
    <ResponseField name="task_id" type="string">Task ID, identical to `id`.</ResponseField>
    <ResponseField name="object" type="string">Returned object type, `video`.</ResponseField>
    <ResponseField name="model" type="string">AnyFast model ID used by the task.</ResponseField>
    <ResponseField name="status" type="string">Initial task status, normally `queued`.</ResponseField>
    <ResponseField name="progress" type="integer">Initial task progress percentage.</ResponseField>
    <ResponseField name="created_at" type="integer">Creation time as a Unix timestamp in seconds.</ResponseField>
  </Tab>

  <Tab title="First and last frames">
    ## Create task

    `POST /v1/video/generations`

    <div className="kling-api-example-panel">
      ```bash cURL theme={null}
      curl --request POST \
        --url https://www.anyfast.ai/v1/video/generations \
        --header 'Authorization: Bearer YOUR_API_KEY' \
        --header 'Content-Type: application/json' \
        --data '{
          "model": "wan3.0-video",
          "input": {
            "prompt": "The girl moves from a quiet smile to laughter while the camera slowly pushes in and the light changes from cool to warm.",
            "media": [
              {
                "type": "first_frame",
                "url": "https://example.com/first-frame.jpg"
              },
              {
                "type": "last_frame",
                "url": "https://example.com/last-frame.jpg"
              }
            ]
          },
          "parameters": {
            "resolution": "1080P",
            "ratio": "adaptive",
            "duration": 5,
            "audio": true,
            "seed": 42,
            "watermark": false
          }
        }'
      ```
    </div>

    ## Request headers

    <ParamField header="Authorization" type="string" required>Bearer authentication in the form `Bearer YOUR_API_KEY`.</ParamField>
    <ParamField header="Content-Type" type="string" default="application/json" required>Request body format.</ParamField>

    ## Request body

    <ParamField body="model" type="string" required>Use `wan3.0-video`, or the AnyFast-specific `wan3.0-video-nsfw` variant in the `Direct` resource group.</ParamField>
    <ParamField body="input" type="object" required>Basic generation input. At least one of `input.prompt` or `input.media` must be present.</ParamField>
    <ParamField body="input.prompt" type="string">Motion and transition description. Content beyond 20,000 characters is automatically truncated.</ParamField>
    <ParamField body="input.media" type="object[]" required>Supply one `first_frame` and one `last_frame`. Do not combine them with `reference_image`, `reference_video`, `reference_audio`, `file`, or `link`.</ParamField>
    <ParamField body="input.media[].type" type="string" required>Use `first_frame` for the opening image and `last_frame` for the ending image. Each type allows at most one item.</ParamField>
    <ParamField body="input.media[].url" type="string" required>Public image URL or Base64 data URI.</ParamField>
    <ParamField body="parameters" type="object">Video generation controls.</ParamField>
    <ParamField body="parameters.resolution" type="string" default="1080P">Output resolution: `1080P`, `720P`, or `480P`.</ParamField>
    <ParamField body="parameters.ratio" type="string" default="adaptive">Output aspect ratio: `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`. `adaptive` can follow the frame inputs and intent.</ParamField>
    <ParamField body="parameters.duration" type="integer" default={5}>Output duration in seconds. Use `-1` for smart duration or an integer from 2 through 30.</ParamField>
    <ParamField body="parameters.audio" type="boolean" default={true}>Whether the generated video contains an audio track. The price is the same for `true` and `false`.</ParamField>
    <ParamField body="parameters.seed" type="integer">Random seed from `0` through `2147483647`.</ParamField>
    <ParamField body="parameters.watermark" type="boolean" default={false}>Whether to add a watermark to the generated video.</ParamField>

    ## Create response

    <div className="kling-api-example-panel">
      ```json 200 theme={null}
      {
        "id": "asyntask_wan30example123",
        "task_id": "asyntask_wan30example123",
        "object": "video",
        "model": "wan3.0-video",
        "status": "queued",
        "progress": 0,
        "created_at": 1787280000
      }
      ```
    </div>

    <ResponseField name="id" type="string">Task ID used to query the result.</ResponseField>
    <ResponseField name="task_id" type="string">Task ID, identical to `id`.</ResponseField>
    <ResponseField name="object" type="string">Returned object type, `video`.</ResponseField>
    <ResponseField name="model" type="string">AnyFast model ID used by the task.</ResponseField>
    <ResponseField name="status" type="string">Initial task status, normally `queued`.</ResponseField>
    <ResponseField name="progress" type="integer">Initial task progress percentage.</ResponseField>
    <ResponseField name="created_at" type="integer">Creation time as a Unix timestamp in seconds.</ResponseField>
  </Tab>

  <Tab title="Multimodal reference">
    ## Create task

    `POST /v1/video/generations`

    <div className="kling-api-example-panel">
      ```bash cURL theme={null}
      curl --request POST \
        --url https://www.anyfast.ai/v1/video/generations \
        --header 'Authorization: Bearer YOUR_API_KEY' \
        --header 'Content-Type: application/json' \
        --data '{
          "model": "wan3.0-video",
          "input": {
            "prompt": "Image 1 performs the motion from Video 1 while the scene follows the rhythm of Audio 1.",
            "media": [
              {
                "type": "reference_image",
                "url": "https://example.com/character.jpg"
              },
              {
                "type": "reference_video",
                "url": "https://example.com/motion.mp4"
              },
              {
                "type": "reference_audio",
                "url": "https://example.com/rhythm.mp3"
              }
            ]
          },
          "parameters": {
            "resolution": "1080P",
            "ratio": "16:9",
            "duration": 10,
            "audio": true,
            "seed": 42,
            "watermark": false
          }
        }'
      ```
    </div>

    ## Request headers

    <ParamField header="Authorization" type="string" required>Bearer authentication in the form `Bearer YOUR_API_KEY`.</ParamField>
    <ParamField header="Content-Type" type="string" default="application/json" required>Request body format.</ParamField>

    ## Request body

    <ParamField body="model" type="string" required>Use `wan3.0-video`, or the AnyFast-specific `wan3.0-video-nsfw` variant in the `Direct` resource group.</ParamField>
    <ParamField body="input" type="object" required>Basic generation input. At least one of `input.prompt` or `input.media` must be present.</ParamField>
    <ParamField body="input.prompt" type="string">Video instruction. Content beyond 20,000 characters is automatically truncated. Refer to assets by their type-specific order, such as `Image 1`, `Video 1`, and `Audio 1`.</ParamField>
    <ParamField body="input.media" type="object[]" required>Reference assets. Supply up to 10 images, 5 videos, and 5 audio clips. Do not combine reference media with `first_frame` or `last_frame`.</ParamField>
    <ParamField body="input.media[].type" type="string" required>Use `reference_image`, `reference_video`, or `reference_audio`.</ParamField>
    <ParamField body="input.media[].url" type="string" required>Public media URL. Images also accept Base64 data URIs.</ParamField>
    <ParamField body="parameters" type="object">Video generation controls.</ParamField>
    <ParamField body="parameters.resolution" type="string" default="1080P">Output resolution: `1080P`, `720P`, or `480P`.</ParamField>
    <ParamField body="parameters.ratio" type="string" default="adaptive">Output aspect ratio: `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`.</ParamField>
    <ParamField body="parameters.duration" type="integer" default={5}>Output duration in seconds. Use `-1` for smart duration. Without a video input, use 2–30; with video input, total input-video duration plus output duration must not exceed 30 seconds.</ParamField>
    <ParamField body="parameters.audio" type="boolean" default={true}>Whether the generated video contains an audio track. The price is the same for `true` and `false`.</ParamField>
    <ParamField body="parameters.seed" type="integer">Random seed from `0` through `2147483647`.</ParamField>
    <ParamField body="parameters.watermark" type="boolean" default={false}>Whether to add a watermark to the generated video.</ParamField>

    ## Create response

    <div className="kling-api-example-panel">
      ```json 200 theme={null}
      {
        "id": "asyntask_wan30example123",
        "task_id": "asyntask_wan30example123",
        "object": "video",
        "model": "wan3.0-video",
        "status": "queued",
        "progress": 0,
        "created_at": 1787280000
      }
      ```
    </div>

    <ResponseField name="id" type="string">Task ID used to query the result.</ResponseField>
    <ResponseField name="task_id" type="string">Task ID, identical to `id`.</ResponseField>
    <ResponseField name="object" type="string">Returned object type, `video`.</ResponseField>
    <ResponseField name="model" type="string">AnyFast model ID used by the task.</ResponseField>
    <ResponseField name="status" type="string">Initial task status, normally `queued`.</ResponseField>
    <ResponseField name="progress" type="integer">Initial task progress percentage.</ResponseField>
    <ResponseField name="created_at" type="integer">Creation time as a Unix timestamp in seconds.</ResponseField>
  </Tab>

  <Tab title="File or webpage reference">
    ## Create task

    `POST /v1/video/generations`

    <div className="kling-api-example-panel">
      <CodeGroup>
        ```bash File theme={null}
        curl --request POST \
          --url https://www.anyfast.ai/v1/video/generations \
          --header 'Authorization: Bearer YOUR_API_KEY' \
          --header 'Content-Type: application/json' \
          --data '{
            "model": "wan3.0-video",
            "input": {
              "prompt": "Create a concise product-launch video from the supplied presentation, emphasizing the design details and three core benefits.",
              "media": [
                {
                  "type": "file",
                  "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260806/ebapmr/glass.pptx"
                }
              ]
            },
            "parameters": {
              "resolution": "1080P",
              "ratio": "16:9",
              "duration": 10,
              "audio": true,
              "seed": 42,
              "watermark": false
            }
          }'
        ```

        ```bash Webpage theme={null}
        curl --request POST \
          --url https://www.anyfast.ai/v1/video/generations \
          --header 'Authorization: Bearer YOUR_API_KEY' \
          --header 'Content-Type: application/json' \
          --data '{
            "model": "wan3.0-video",
            "input": {
              "prompt": "Turn the main points on this public page into a concise narrated video.",
              "media": [
                {
                  "type": "link",
                  "url": "https://example.com/public-product-overview"
                }
              ]
            },
            "parameters": {
              "resolution": "1080P",
              "ratio": "16:9",
              "duration": 10,
              "audio": true,
              "seed": 42,
              "watermark": false
            }
          }'
        ```
      </CodeGroup>
    </div>

    ## Request headers

    <ParamField header="Authorization" type="string" required>Bearer authentication in the form `Bearer YOUR_API_KEY`.</ParamField>
    <ParamField header="Content-Type" type="string" default="application/json" required>Request body format.</ParamField>

    ## Request body

    <ParamField body="model" type="string" required>Use `wan3.0-video`, or the AnyFast-specific `wan3.0-video-nsfw` variant in the `Direct` resource group.</ParamField>
    <ParamField body="input" type="object" required>Basic generation input. At least one of `input.prompt` or `input.media` must be present.</ParamField>
    <ParamField body="input.prompt" type="string">Video instruction. Content beyond 20,000 characters is automatically truncated.</ParamField>
    <ParamField body="input.media" type="object[]" required>Supply at most one file or one webpage link. `file` and `link` are mutually exclusive, and neither can be combined with `first_frame` or `last_frame`.</ParamField>
    <ParamField body="input.media[].type" type="string" required>Use `file` for a document or `link` for a public webpage.</ParamField>
    <ParamField body="input.media[].url" type="string" required>Public HTTP or HTTPS URL. Webpages must be accessible without login.</ParamField>
    <ParamField body="parameters" type="object">Video generation controls.</ParamField>
    <ParamField body="parameters.resolution" type="string" default="1080P">Output resolution: `1080P`, `720P`, or `480P`.</ParamField>
    <ParamField body="parameters.ratio" type="string" default="adaptive">Output aspect ratio: `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`.</ParamField>
    <ParamField body="parameters.duration" type="integer" default={5}>Output duration in seconds. Use `-1` for smart duration or an integer from 2 through 30.</ParamField>
    <ParamField body="parameters.audio" type="boolean" default={true}>Whether the generated video contains an audio track. The price is the same for `true` and `false`.</ParamField>
    <ParamField body="parameters.seed" type="integer">Random seed from `0` through `2147483647`.</ParamField>
    <ParamField body="parameters.watermark" type="boolean" default={false}>Whether to add a watermark to the generated video.</ParamField>

    ## Create response

    <div className="kling-api-example-panel">
      ```json 200 theme={null}
      {
        "id": "asyntask_wan30example123",
        "task_id": "asyntask_wan30example123",
        "object": "video",
        "model": "wan3.0-video",
        "status": "queued",
        "progress": 0,
        "created_at": 1787280000
      }
      ```
    </div>

    <ResponseField name="id" type="string">Task ID used to query the result.</ResponseField>
    <ResponseField name="task_id" type="string">Task ID, identical to `id`.</ResponseField>
    <ResponseField name="object" type="string">Returned object type, `video`.</ResponseField>
    <ResponseField name="model" type="string">AnyFast model ID used by the task.</ResponseField>
    <ResponseField name="status" type="string">Initial task status, normally `queued`.</ResponseField>
    <ResponseField name="progress" type="integer">Initial task progress percentage.</ResponseField>
    <ResponseField name="created_at" type="integer">Creation time as a Unix timestamp in seconds.</ResponseField>
  </Tab>

  <Tab title="Query task">
    ## Query task by ID

    `GET /v1/video/generations/{id}`

    <div className="kling-api-example-panel">
      ```bash cURL theme={null}
      curl --request GET \
        --url https://www.anyfast.ai/v1/video/generations/asyntask_wan30example123 \
        --header 'Authorization: Bearer YOUR_API_KEY'
      ```
    </div>

    ## Request headers

    <ParamField header="Authorization" type="string" required>Bearer authentication in the form `Bearer YOUR_API_KEY`.</ParamField>

    ## Path parameters

    <ParamField path="id" type="string" required>Task ID returned by a create request.</ParamField>

    <Note>Alibaba Cloud reports a typical generation time of 1–5 minutes and recommends polling at roughly 15-second intervals. This upstream estimate is not an AnyFast service-level commitment; actual processing time can vary. Tasks can be queried for 24 hours after creation, and successful result URLs remain valid for 24 hours.</Note>

    ## Query response

    <div className="kling-api-example-panel">
      ```json 200 theme={null}
      {
        "code": "success",
        "message": "",
        "data": {
          "task_id": "asyntask_wan30example123",
          "action": "generate",
          "status": "SUCCESS",
          "fail_reason": "https://example.com/generated-video.mp4",
          "result_url": "https://example.com/generated-video.mp4",
          "submit_time": 1787280000,
          "start_time": 1787280005,
          "finish_time": 1787280125,
          "progress": "100%",
          "request_id": "request_wan30example123",
          "data": {
            "output": {
              "end_time": "2026-08-21 08:02:05.000",
              "orig_prompt": "A kitten runs across a moonlit rooftop while distant neon signs flicker.",
              "scheduled_time": "2026-08-21 08:00:05.000",
              "submit_time": "2026-08-21 08:00:00.000",
              "task_id": "upstream_task_wan30example123",
              "task_status": "SUCCEEDED",
              "video_url": "https://example.com/generated-video.mp4"
            },
            "request_id": "upstream_request_wan30example123",
            "usage": {
              "SR": 1080,
              "duration": 8,
              "fps": 30,
              "input_video_duration": 0.0,
              "output_video_duration": 8.0,
              "ratio": "16:9",
              "video_count": 1
            }
          }
        }
      }
      ```
    </div>

    <ResponseField name="code" type="string">Response code. `success` means the query was accepted.</ResponseField>
    <ResponseField name="message" type="string">Response message. A successful query normally returns an empty string.</ResponseField>
    <ResponseField name="data" type="object">Task status and result payload.</ResponseField>
    <ResponseField name="data.task_id" type="string">AnyFast task ID.</ResponseField>
    <ResponseField name="data.action" type="string">Task action. Wan3.0 creation tasks return `generate`.</ResponseField>
    <ResponseField name="data.status" type="string">Task status: `NOT_START`, `QUEUED`, `IN_PROGRESS`, `SUCCESS`, or `FAILURE`. Use this field to determine whether the task failed.</ResponseField>
    <ResponseField name="data.fail_reason" type="string">Compatibility field. Some successful responses repeat `result_url` here, as shown above; a non-empty value does not mean the task failed. Use `status` to determine the outcome and read the result from `result_url`. On `FAILURE`, this field can contain failure details.</ResponseField>
    <ResponseField name="data.result_url" type="string | null">Temporary generated-video URL returned when `status` is `SUCCESS`. This field can be omitted before the task completes.</ResponseField>
    <ResponseField name="data.submit_time" type="integer">Task submission time as a Unix timestamp in seconds.</ResponseField>
    <ResponseField name="data.start_time" type="integer">Task start time as a Unix timestamp in seconds; `0` while the task is still queued.</ResponseField>
    <ResponseField name="data.finish_time" type="integer">Task completion time as a Unix timestamp in seconds; `0` until the task reaches a terminal state.</ResponseField>
    <ResponseField name="data.progress" type="string">Task progress as a percentage string, such as `100%`.</ResponseField>
    <ResponseField name="data.request_id" type="string">AnyFast request trace ID.</ResponseField>
    <ResponseField name="data.data" type="object">Raw upstream response data.</ResponseField>
    <ResponseField name="data.data.output" type="object">Raw upstream task output.</ResponseField>
    <ResponseField name="data.data.output.end_time" type="string">Upstream task completion time. Present after successful completion.</ResponseField>
    <ResponseField name="data.data.output.orig_prompt" type="string">Prompt received by the upstream service. Present after successful completion.</ResponseField>
    <ResponseField name="data.data.output.scheduled_time" type="string">Upstream task scheduling time. Appears once processing begins and can be omitted while the task is queued.</ResponseField>
    <ResponseField name="data.data.output.submit_time" type="string">Upstream task submission time.</ResponseField>
    <ResponseField name="data.data.output.task_id" type="string">Upstream task ID.</ResponseField>
    <ResponseField name="data.data.output.task_status" type="string">Upstream task status.</ResponseField>
    <ResponseField name="data.data.output.video_url" type="string">Generated-video URL in the raw upstream output. Present after successful completion.</ResponseField>
    <ResponseField name="data.data.request_id" type="string">Upstream request trace ID.</ResponseField>
    <ResponseField name="data.data.usage" type="object">Upstream video usage details. Present after successful completion and omitted while the task is queued or processing.</ResponseField>
    <ResponseField name="data.data.usage.SR" type="integer">Upstream output resolution value.</ResponseField>
    <ResponseField name="data.data.usage.duration" type="integer">Generated duration in seconds.</ResponseField>
    <ResponseField name="data.data.usage.fps" type="integer">Generated video frame rate.</ResponseField>
    <ResponseField name="data.data.usage.input_video_duration" type="number">Total input-video duration in seconds.</ResponseField>
    <ResponseField name="data.data.usage.output_video_duration" type="number">Output-video duration in seconds.</ResponseField>
    <ResponseField name="data.data.usage.ratio" type="string">Generated video aspect ratio.</ResponseField>
    <ResponseField name="data.data.usage.video_count" type="integer">Number of generated videos.</ResponseField>
  </Tab>
</Tabs>

## Media limits

### Images

* Roles: `first_frame`, `last_frame`, and `reference_image`.
* Formats: JPEG, JPG, PNG without an alpha channel, BMP, or WEBP.
* Each side must be 240–8,000 px, the aspect ratio must not exceed 8:1, and each image must be no larger than 20 MB.
* Images accept a public HTTP or HTTPS URL or a Base64 data URI. Supply at most one first frame, one last frame, or 10 reference images.

### Videos

* Role: `reference_video`; up to five clips with no more than 15 seconds total.
* Formats: MP4 or MOV. Each clip must be 1–15 seconds, each side must be 240–4,096 px, the aspect ratio must not exceed 8:1, and each file must be no larger than 100 MB.
* Videos require a public HTTP or HTTPS URL.

### Audio

* Role: `reference_audio`; up to five clips with no more than 15 seconds total.
* Formats: WAV or MP3. Each clip must be 1–15 seconds and no larger than 15 MB.
* Audio requires a public HTTP or HTTPS URL.

### Files and webpages

* `file` supports DOCX, DOC, XLSX, XLS, PPTX, PPT, PDF, TXT, KEY, PAGES, NUMBERS, and MD files up to 100 MB.
* PDF, DOCX, DOC, PPTX, PPT, KEY, and PAGES inputs support up to 50 pages.
* `link` accepts a public HTTP or HTTPS webpage that does not require login.
* Supply at most one `file` or one `link`; they are mutually exclusive.

<Warning>
  `reference_image`, `reference_video`, `reference_audio`, `file`, and `link` cannot be combined with `first_frame` or `last_frame` in the same request.
</Warning>

Source: [Alibaba Cloud Wan3.0 video generation API reference](https://www.alibabacloud.com/help/zh/model-studio/wan3-video-generation-api-reference).
