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

> Wan 3.0 text-to-video and image-to-video. Provide `image_url` for a first frame and optionally `image_end_url` for a last frame; omit both for pure text-to-video.

**Same model, parameters and price as [`wan-3-0`](/api-reference/video-generations/wan-3-0) — without automatic retry.** If a generation fails, `wan-3-0` may retry it automatically before reporting the failure; `wan-3-0-basic` 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 reference materials.** Wan 3.0's two input modes are mutually exclusive in the model — mixing `first_frame`/`last_frame` with reference images, videos, audio, files or links fails the whole task. Use [`wan-3-0-basic-refs`](/api-reference/video-generations/wan-3-0-basic-refs) for reference-driven generation.

**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`, so an omitted resolution never silently bills at the most expensive tier. Smart duration (`-1`) is not exposed because the output length — and therefore 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.



## OpenAPI

````yaml api-reference/video-generations/openapi-wan-3-0-basic.json POST /api/v1/videos/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Wan 3.0 Basic
  description: Video generation with Wan 3.0 Basic.
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/videos/generations:
    post:
      tags:
        - VideoGenerations
      summary: Wan 3.0 Basic
      description: >-
        Wan 3.0 text-to-video and image-to-video. Provide `image_url` for a
        first frame and optionally `image_end_url` for a last frame; omit both
        for pure text-to-video.


        **Same model, parameters and price as
        [`wan-3-0`](/api-reference/video-generations/wan-3-0) — without
        automatic retry.** If a generation fails, `wan-3-0` may retry it
        automatically before reporting the failure; `wan-3-0-basic` 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 reference materials.** Wan 3.0's two input
        modes are mutually exclusive in the model — mixing
        `first_frame`/`last_frame` with reference images, videos, audio, files
        or links fails the whole task. Use
        [`wan-3-0-basic-refs`](/api-reference/video-generations/wan-3-0-basic-refs)
        for reference-driven generation.


        **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`, so an omitted resolution never silently
        bills at the most expensive tier. Smart duration (`-1`) is not exposed
        because the output length — and therefore 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.
      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
                  description: Model name. Must be `wan-3-0-basic`.
                prompt:
                  type: string
                  description: Text prompt describing the video.
                image_url:
                  type: string
                  format: uri
                  description: Optional. First-frame image URL. Omit for text-to-video.
                ratio:
                  type: string
                  enum:
                    - adaptive
                    - '16:9'
                    - '4:3'
                    - '1:1'
                    - '3:4'
                    - '9:16'
                  default: adaptive
                  description: >-
                    Output aspect ratio. `adaptive` lets the model pick from the
                    input media. Note: unlike Wan 2.7 there is no 21:9.
                    `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.
                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.
                image_end_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. Last-frame image URL. Must be used together with
                    image_url.
                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
                - prompt
            example:
              model: wan-3-0-basic
              prompt: >-
                A cat running across a moonlit rooftop, neon city lights in the
                distance, cinematic
              resolution: 720p
              ratio: '16:9'
              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.