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

# Wan 3.0 Basic Reference to Video

> Wan 3.0 driven by reference materials — images, videos, audio, a document or a web page. Refer to them inside the prompt as 图1 / 视频1 / 音频1 (image 1, video 1, audio 1); **the array order is what those numbers refer to**.

**Same model, parameters and price as [`wan-3-0-refs`](/api-reference/video-generations/wan-3-0-refs) — without automatic retry.** If a generation fails, `wan-3-0-refs` may retry it automatically before reporting the failure; `wan-3-0-basic-refs` never does: the task fails right away and the tokens are refunded. Choose it when you would rather get a fast, final answer and handle retries yourself.

⚠️ **This endpoint rejects first/last frames.** The two input modes are mutually exclusive in the model — use [`wan-3-0-basic`](/api-reference/video-generations/wan-3-0-basic) for text-to-video or first/last frame generation.

At least one of `ref_imgs` / `ref_videos` / `ref_audios` / `ref_file` / `ref_link` is required. `ref_file` and `ref_link` are mutually exclusive.

**Pricing** — per second of generated video, in tokens (USD at $0.02/token). Same rates as wan-3-0 / wan-3-0-refs:

| resolution | tokens/s | USD/s |
|---|---|---|
| 480p | 2.91 | $0.0582 |
| 720p | 5.82 | $0.1164 |
| 1080p | 11.64 | $0.2328 |

The published per-second rate times the duration is exactly what gets charged. Example: a 5s 720p video costs 29.1 tokens (= $0.582).

**Notes on defaults:** `resolution` defaults to `720p` rather than the model's own default of `1080p`. Smart duration (`-1`) is not exposed because the price is only known after generation.

Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use `custom_callback_url`) to get the generated video.

⚠️ **`ref_videos` total length plus `duration` must not exceed 30 seconds.** This is a joint limit enforced by the model, so both values can be individually valid and the request still fails — e.g. a 15s reference video with `duration: 18` is rejected as 33s. GoEnhance cannot check this before submitting (it does not measure your reference videos), so the task fails after it starts and the tokens are refunded.



## OpenAPI

````yaml api-reference/video-generations/openapi-wan-3-0-basic-refs.json POST /api/v1/videos/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Wan 3.0 Basic Reference to Video
  description: Video generation with Wan 3.0 Basic Reference to Video.
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/videos/generations:
    post:
      tags:
        - VideoGenerations
      summary: Wan 3.0 Basic Reference to Video
      description: >-
        Wan 3.0 driven by reference materials — images, videos, audio, a
        document or a web page. Refer to them inside the prompt as 图1 / 视频1 /
        音频1 (image 1, video 1, audio 1); **the array order is what those numbers
        refer to**.


        **Same model, parameters and price as
        [`wan-3-0-refs`](/api-reference/video-generations/wan-3-0-refs) —
        without automatic retry.** If a generation fails, `wan-3-0-refs` may
        retry it automatically before reporting the failure;
        `wan-3-0-basic-refs` never does: the task fails right away and the
        tokens are refunded. Choose it when you would rather get a fast, final
        answer and handle retries yourself.


        ⚠️ **This endpoint rejects first/last frames.** The two input modes are
        mutually exclusive in the model — use
        [`wan-3-0-basic`](/api-reference/video-generations/wan-3-0-basic) for
        text-to-video or first/last frame generation.


        At least one of `ref_imgs` / `ref_videos` / `ref_audios` / `ref_file` /
        `ref_link` is required. `ref_file` and `ref_link` are mutually
        exclusive.


        **Pricing** — per second of generated video, in tokens (USD at
        $0.02/token). Same rates as wan-3-0 / wan-3-0-refs:


        | resolution | tokens/s | USD/s |

        |---|---|---|

        | 480p | 2.91 | $0.0582 |

        | 720p | 5.82 | $0.1164 |

        | 1080p | 11.64 | $0.2328 |


        The published per-second rate times the duration is exactly what gets
        charged. Example: a 5s 720p video costs 29.1 tokens (= $0.582).


        **Notes on defaults:** `resolution` defaults to `720p` rather than the
        model's own default of `1080p`. Smart duration (`-1`) is not exposed
        because the price is only known after generation.


        Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use
        `custom_callback_url`) to get the generated video.


        ⚠️ **`ref_videos` total length plus `duration` must not exceed 30
        seconds.** This is a joint limit enforced by the model, so both values
        can be individually valid and the request still fails — e.g. a 15s
        reference video with `duration: 18` is rejected as 33s. GoEnhance cannot
        check this before submitting (it does not measure your reference
        videos), so the task fails after it starts and the tokens are refunded.
      parameters:
        - name: Authorization
          in: header
          description: ''
          required: false
          example: '{{Authorization}}'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                model:
                  type: string
                  enum:
                    - wan-3-0-basic-refs
                  description: Model name. Must be `wan-3-0-basic-refs`.
                prompt:
                  type: string
                  description: >-
                    Text prompt. You can reference each image as `[Image 1]`,
                    `[Image 2]`, etc.
                ratio:
                  type: string
                  enum:
                    - adaptive
                    - '16:9'
                    - '4:3'
                    - '1:1'
                    - '3:4'
                    - '9:16'
                  default: adaptive
                  description: >-
                    Output aspect ratio. `aspect_ratio` is accepted as a
                    compatible alias.
                duration:
                  type: integer
                  minimum: 2
                  maximum: 30
                  default: 5
                  description: >-
                    Video duration in seconds. Any integer from 2 to 30. Plus
                    the total length of `ref_videos`, this must not exceed 30
                    seconds.
                resolution:
                  type: string
                  enum:
                    - 480p
                    - 720p
                    - 1080p
                  default: 720p
                  description: >-
                    Output resolution, lowercase like every other video model.
                    `quality` is accepted as a compatible alias.
                ref_imgs:
                  type: array
                  items:
                    type: string
                    format: uri
                  maxItems: 10
                  description: >-
                    Reference image URLs, up to 10. Referred to as 图1, 图2, … in
                    array order.
                ref_videos:
                  type: array
                  items:
                    type: string
                    format: uri
                  maxItems: 5
                  description: >-
                    Reference video URLs, up to 5 and 15 seconds in total.
                    Referred to as 视频1, 视频2, … in array order. Their total
                    length plus `duration` must not exceed 30 seconds.
                ref_audios:
                  type: array
                  items:
                    type: string
                    format: uri
                  maxItems: 5
                  description: >-
                    Reference audio URLs, up to 5 and 15 seconds in total.
                    Referred to as 音频1, 音频2, … in array order.
                ref_file:
                  type: string
                  format: uri
                  description: >-
                    Optional. A single document URL (docx/pptx/pdf/txt/…).
                    Mutually exclusive with ref_link.
                ref_link:
                  type: string
                  format: uri
                  description: >-
                    Optional. A single public web page URL. Mutually exclusive
                    with ref_file.
                generate_audio:
                  type: boolean
                  default: true
                  description: >-
                    Whether the output contains an audio track. Enabling it
                    costs no extra.
                seed:
                  type: integer
                  minimum: 0
                  maximum: 2147483647
                  description: Optional. Fixing the seed makes results more reproducible.
                custom_callback_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. A publicly accessible HTTPS URL. When the task
                    status changes (processing / success / failed), GoEnhance
                    sends a POST request to this URL. The request body is
                    identical to the response of GET /api/v1/jobs/detail. If
                    your server does not respond with HTTP 200, the notification
                    is retried up to 3 times, with a 3-second timeout per
                    attempt.
                  example: https://your-server.com/goenhance/callback
              required:
                - model
            example:
              model: wan-3-0-basic-refs
              prompt: 图1 里的角色坐在图2 的椅子上弹吉他，镜头缓缓推近
              ref_imgs:
                - https://your-cdn.com/character.jpg
                - https://your-cdn.com/chair.png
              resolution: 720p
              duration: 5
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                      cost:
                        type: number
                        description: >-
                          Tokens deducted for this request. This is the amount
                          actually charged, so it already reflects any discount
                          active on your account and can be lower than the
                          listed price. Tokens are deducted when the task is
                          accepted, and refunded automatically if the generation
                          ends in failure.
                        example: 5.82
                    required:
                      - img_uuid
                      - cost
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                      cost: 5.82
                '2':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
                quota:
                  summary: API key quota exceeded
                  value:
                    code: 101
                    msg: 'API key quota exceeded: 4990 of 5000 tokens used (monthly)'
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                required:
                  - code
                  - msg
          headers: {}
      deprecated: false
      security: []

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.