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

> Make the person in your image dance by following the motion of a reference video, powered by Wan Animate 2 — stronger identity consistency on long clips, and the reference video's audio track is kept in the output.

By default the whole reference video is used. Pass `duration` to render only its first N seconds — billing follows that value.

Optionally pass `prompt` (appearance of the character) and `pose_prompt` (how the motion should look) to steer the generation.

**Pricing:** billed per second of generated video (rounded up).

| Resolution | Tokens per second | Price per 5s |
|---|---|---|
| 480p | 2 | $0.20 |

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-animate-2.json POST /api/v1/videos/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Wan Animate 2
  description: Motion transfer with Wan Animate 2.
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/videos/generations:
    post:
      tags:
        - VideoGenerations
      summary: Wan Animate 2
      description: >-
        Make the person in your image dance by following the motion of a
        reference video, powered by Wan Animate 2 — stronger identity
        consistency on long clips, and the reference video's audio track is kept
        in the output.


        By default the whole reference video is used. Pass `duration` to render
        only its first N seconds — billing follows that value.


        Optionally pass `prompt` (appearance of the character) and `pose_prompt`
        (how the motion should look) to steer the generation.


        **Pricing:** billed per second of generated video (rounded up).


        | Resolution | Tokens per second | Price per 5s |

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

        | 480p | 2 | $0.20 |


        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-animate-2
                  description: Model name. Must be `wan-animate-2`.
                image_url:
                  type: string
                  format: uri
                  description: >-
                    Source image URL. The person in this image is used for the
                    generated video.
                video_url:
                  type: string
                  format: uri
                  description: >-
                    Reference dance video URL. Max 30 seconds — longer videos
                    are rejected. Use `duration` to render only the first N
                    seconds of it.
                duration:
                  type: integer
                  minimum: 1
                  maximum: 30
                  description: >-
                    Optional. Use only the first N seconds of the reference
                    video. Defaults to the full video length. Must not exceed
                    the actual video length — a longer value is rejected rather
                    than silently clamped. Billing follows this value, so a
                    shorter duration costs proportionally less.
                prompt:
                  type: string
                  maxLength: 2000
                  description: >-
                    Optional. Describe the character's appearance (clothing,
                    hair, style). Helps keep identity consistent across the
                    video.
                pose_prompt:
                  type: string
                  maxLength: 2000
                  description: >-
                    Optional. Describe the motion (e.g. "energetic street dance
                    with rhythmic steps"). Defaults to a neutral motion
                    description.
                resolution:
                  type: string
                  enum:
                    - 480p
                  default: 480p
                  description: >-
                    Output resolution. Only 480p is supported (portrait-oriented
                    output).
                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
                - image_url
                - video_url
            example:
              model: wan-animate-2
              image_url: >-
                https://cdn.goenhance.ai/user/goenhance/76115ad445ce26fbd5ad2c649a29e806.jpg
              video_url: >-
                https://cdn.goenhance.ai/user/upload-data/video-to-video/333768e610e442d02e8030693def0b6e.mp4
              prompt: >-
                A young woman with short black hair wearing a red jacket and
                jeans
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                    required:
                      - img_uuid
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                '2':
                  summary: Invalid duration
                  value:
                    code: -1
                    msg: duration (30s) exceeds the reference video length (12s).
                '3':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                required:
                  - code
                  - msg
          headers: {}
      deprecated: false
      security: []

````