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

# Wan 2.1 VACE Plus - Unified Video Editing Model

> [Core Function] Wan 2.1 VACE Plus - Unified Video Editing Model is an older generation image-to-image editing model. [Strengths] Delivered strong Chinese-language prompt understanding and regional aesthetic preferences. Maintained for backward compatibility. [Best For] Existing legacy integrations and workflows that strictly depend on this specific model version's quirks. [Limitations] Do NOT use this for new creations. It is a legacy model maintained for backward compatibility. [Routing] Only use if explicitly requested; otherwise use Wan 2.7 I2I.



## OpenAPI

````yaml /model-api/alibaba/alibaba-v2v.json post /alibaba/wan2.1-vace-plus
openapi: 3.1.0
info:
  description: The video-to-video models API from Alibaba.
  version: 1.0.0
  contact:
    name: Modellix Support
    email: support@modellix.ai
  title: Alibaba Video-to-Video Models API
servers:
  - url: https://api.modellix.ai/api/v1
    description: The video-to-video models API from Alibaba.
security:
  - bearerAuth: []
paths:
  /alibaba/wan2.1-vace-plus:
    post:
      summary: Wan 2.1 VACE Plus - Unified Video Editing Model
      description: >-
        [Core Function] Wan 2.1 VACE Plus - Unified Video Editing Model is an
        older generation image-to-image editing model. [Strengths] Delivered
        strong Chinese-language prompt understanding and regional aesthetic
        preferences. Maintained for backward compatibility. [Best For] Existing
        legacy integrations and workflows that strictly depend on this specific
        model version's quirks. [Limitations] Do NOT use this for new creations.
        It is a legacy model maintained for backward compatibility. [Routing]
        Only use if explicitly requested; otherwise use Wan 2.7 I2I.
      operationId: wan21VacePlusAsync
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Wan21VacePlusRequest'
            examples:
              image_reference:
                summary: Multi-Image Reference (image_reference)
                value:
                  function: image_reference
                  prompt: A girl walking through a forest
                  ref_images_url:
                    - https://example.com/ref1.jpg
                    - https://example.com/ref2.jpg
                  obj_or_bg:
                    - obj
                    - bg
                  duration: 5
              video_repainting:
                summary: Video Repainting (video_repainting)
                value:
                  function: video_repainting
                  prompt: Transform the car into steampunk style
                  video_url: https://example.com/video.mp4
                  control_condition: depth
              video_edit:
                summary: Local Video Editing (video_edit)
                value:
                  function: video_edit
                  prompt: A lion in a cafe
                  video_url: https://example.com/video.mp4
                  mask_image_url: https://example.com/mask.png
                  mask_frame_id: 1
                  mask_type: tracking
              video_extension:
                summary: Video Extension (video_extension)
                value:
                  function: video_extension
                  prompt: A dog skateboarding
                  first_clip_url: https://example.com/first.mp4
                  last_clip_url: https://example.com/last.mp4
              video_outpainting:
                summary: Video Outpainting (video_outpainting)
                value:
                  function: video_outpainting
                  prompt: A lady playing violin
                  video_url: https://example.com/video.mp4
                  top_scale: 1.5
                  bottom_scale: 1.5
                  left_scale: 1.5
                  right_scale: 1.5
      responses:
        '200':
          description: Task submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTaskResponse'
components:
  schemas:
    Wan21VacePlusRequest:
      type: object
      required:
        - function
        - prompt
      properties:
        prompt:
          type: string
          description: >-
            Content description in Chinese or English (1-800 characters).
            Describes the desired video content or editing effect. Required for
            all functions
          minLength: 1
          maxLength: 800
          example: A girl walking through a forest
        function:
          type: string
          description: >-
            Video editing function to use. Determines which parameters are
            required and applicable: (1) image_reference: Generate video from
            reference images; (2) video_repainting: Apply style transfer to
            existing video using control conditions; (3) video_edit: Edit
            specific regions of video using mask; (4) video_extension: Extend
            video at start/end using frame/clip references; (5)
            video_outpainting: Expand video canvas boundaries
          enum:
            - image_reference
            - video_repainting
            - video_edit
            - video_extension
            - video_outpainting
          example: image_reference
        ref_images_url:
          type: array
          description: >-
            Reference image URLs array. Usage by function: (1) image_reference:
            1-3 images required, used as visual references for video generation;
            (2) video_repainting: max 1 image optional, provides style
            reference; (3) video_edit: max 1 image optional, provides style
            reference; (4) other functions: not used. Images must be publicly
            accessible HTTP/HTTPS URLs
          minItems: 1
          maxItems: 3
          items:
            type: string
            format: uri
          example:
            - https://example.com/ref1.jpg
            - https://example.com/ref2.jpg
        obj_or_bg:
          type: array
          description: >-
            Classification for each reference image: 'obj' (object/subject) or
            'bg' (background). Only for image_reference function. Array length
            must match ref_images_url length. Maximum 1 'bg' element allowed.
            Helps model distinguish between subject references and background
            style references
          items:
            type: string
            enum:
              - obj
              - bg
          example:
            - obj
            - bg
        video_url:
          type: string
          format: uri
          description: >-
            Input video URL. Usage by function: (1) video_repainting: required,
            the video to be repainted; (2) video_edit: required, the video to be
            edited; (3) video_outpainting: required, the video to expand; (4)
            video_extension: optional, provides reference style when extending;
            (5) image_reference: not used. Must be publicly accessible
            HTTP/HTTPS/OSS URL
          example: https://example.com/video.mp4
        control_condition:
          type: string
          description: >-
            Control condition type for structure preservation. Usage by
            function: (1) video_repainting: required, determines how video
            structure is preserved during repainting; (2) video_extension:
            required when video_url is present, maintains consistency with
            reference video; (3) video_edit: optional, provides structural
            guidance for editing; (4) other functions: not used. Options:
            'posebodyface' (pose+body+face detection), 'posebody' (pose+body
            only), 'depth' (depth map), 'scribble' (edge detection), '' (empty
            string for no extraction)
          enum:
            - posebodyface
            - posebody
            - depth
            - scribble
            - ''
          example: depth
        mask_image_url:
          type: string
          format: uri
          description: >-
            Mask image URL for video_edit function. Defines the region to edit
            (white=edit, black=keep). Must provide either mask_image_url OR
            mask_video_url, not both. When using mask_image_url, also specify
            mask_frame_id to indicate which frame the mask corresponds to. The
            mask will be propagated to other frames based on mask_type setting
          example: https://example.com/mask.png
        mask_video_url:
          type: string
          format: uri
          description: >-
            Mask video URL for video_edit function. Provides frame-by-frame mask
            for precise control (white=edit, black=keep). Must provide either
            mask_image_url OR mask_video_url, not both. Mask video must have the
            same frame count as the input video. Use this for complex editing
            that requires different masks for different frames
          example: https://example.com/mask.mp4
        mask_frame_id:
          type: integer
          description: >-
            Frame ID (1-based index) indicating which frame the mask_image_url
            corresponds to. Only applicable when using mask_image_url in
            video_edit function. The mask will be propagated from this frame to
            others based on mask_type. For example, mask_frame_id=1 means the
            mask corresponds to the first frame of the video. Default is 1
            (first frame)
          minimum: 1
          default: 1
          example: 1
        mask_type:
          type: string
          description: >-
            Mask propagation type for video_edit function. Options: (1)
            'tracking': mask follows object movement across frames (recommended
            for moving objects); (2) 'fixed': mask stays in same position across
            all frames (recommended for static scenes or background edits).
            Default is 'tracking'
          enum:
            - tracking
            - fixed
          default: tracking
          example: tracking
        expand_ratio:
          type: number
          description: >-
            Mask expansion ratio for video_edit function (0.0-1.0). Expands the
            mask boundary to include surrounding areas. 0.0 = no expansion (use
            exact mask), 1.0 = maximum expansion. Default is 0.05 (5%
            expansion). Useful for ensuring complete coverage of editing region
            and avoiding edge artifacts
          minimum: 0
          maximum: 1
          default: 0.05
          example: 0.1
        expand_mode:
          type: string
          description: >-
            Mask expansion mode for video_edit function. Determines how the mask
            is expanded when expand_ratio > 0. Options: (1) 'hull': convex hull
            expansion (smooth, rounded boundaries); (2) 'bbox': bounding box
            expansion (rectangular boundaries); (3) 'original': keep original
            mask shape while expanding. Default is 'hull'. Use 'hull' for
            natural objects, 'bbox' for rectangular regions
          enum:
            - hull
            - bbox
            - original
          default: hull
          example: hull
        first_frame_url:
          type: string
          format: uri
          description: >-
            First frame image URL for video_extension function. Specifies the
            starting frame when extending video forward. At least one of
            first_frame_url/last_frame_url/first_clip_url/last_clip_url must be
            provided. Use this to define the exact starting point of the
            extended video. The model will generate smooth transition from this
            frame
          example: https://example.com/first_frame.jpg
        last_frame_url:
          type: string
          format: uri
          description: >-
            Last frame image URL for video_extension function. Specifies the
            ending frame when extending video backward. At least one of
            first_frame_url/last_frame_url/first_clip_url/last_clip_url must be
            provided. Use this to define the exact ending point of the extended
            video. The model will generate smooth transition to this frame
          example: https://example.com/last_frame.jpg
        first_clip_url:
          type: string
          format: uri
          description: >-
            First video clip URL for video_extension function. Provides a video
            segment to use as the starting portion. At least one of
            first_frame_url/last_frame_url/first_clip_url/last_clip_url must be
            provided. Use this when you want more control than a single frame
            can provide. The model will extend naturally from the end of this
            clip
          example: https://example.com/first_clip.mp4
        last_clip_url:
          type: string
          format: uri
          description: >-
            Last video clip URL for video_extension function. Provides a video
            segment to use as the ending portion. At least one of
            first_frame_url/last_frame_url/first_clip_url/last_clip_url must be
            provided. Use this when you want more control than a single frame
            can provide. The model will extend naturally to the beginning of
            this clip
          example: https://example.com/last_clip.mp4
        top_scale:
          type: number
          description: >-
            Top boundary expansion scale for video_outpainting function
            (1.0-2.0). 1.0 = no expansion (original height), 2.0 = double the
            top area. Default is 1.0. Use values > 1.0 to expand the canvas
            upward. For example, 1.5 means add 50% more canvas space above the
            original video. The model will generate content to fill the expanded
            area naturally
          minimum: 1
          maximum: 2
          default: 1
          example: 1.5
        bottom_scale:
          type: number
          description: >-
            Bottom boundary expansion scale for video_outpainting function
            (1.0-2.0). 1.0 = no expansion (original height), 2.0 = double the
            bottom area. Default is 1.0. Use values > 1.0 to expand the canvas
            downward. For example, 1.5 means add 50% more canvas space below the
            original video. The model will generate content to fill the expanded
            area naturally
          minimum: 1
          maximum: 2
          default: 1
          example: 1.5
        left_scale:
          type: number
          description: >-
            Left boundary expansion scale for video_outpainting function
            (1.0-2.0). 1.0 = no expansion (original width), 2.0 = double the
            left area. Default is 1.0. Use values > 1.0 to expand the canvas
            leftward. For example, 1.5 means add 50% more canvas space to the
            left of the original video. The model will generate content to fill
            the expanded area naturally
          minimum: 1
          maximum: 2
          default: 1
          example: 1.5
        right_scale:
          type: number
          description: >-
            Right boundary expansion scale for video_outpainting function
            (1.0-2.0). 1.0 = no expansion (original width), 2.0 = double the
            right area. Default is 1.0. Use values > 1.0 to expand the canvas
            rightward. For example, 1.5 means add 50% more canvas space to the
            right of the original video. The model will generate content to fill
            the expanded area naturally
          minimum: 1
          maximum: 2
          default: 1
          example: 1.5
        size:
          type: string
          description: >-
            Output video resolution in width*height format. Available options:
            '1280*720' (16:9 landscape, HD), '720*1280' (9:16 portrait,
            mobile-friendly), '960*960' (1:1 square, social media), '1088*832'
            (4:3 landscape), '832*1088' (3:4 portrait). Default is '1280*720'.
            Choose based on your target platform and use case. Applicable to all
            functions
          enum:
            - 1280*720
            - 720*1280
            - 960*960
            - 832*1088
            - 1088*832
          default: 1280*720
          example: 1280*720
        duration:
          type: integer
          description: >-
            Video duration in seconds. Fixed at 5 seconds and cannot be
            modified. The model always generates 5-second videos regardless of
            this parameter value
          enum:
            - 5
          default: 5
          example: 5
        prompt_extend:
          type: boolean
          description: >-
            Enable intelligent prompt rewriting and enhancement. When true
            (default), the model will automatically optimize and expand your
            prompt for better results. When false, uses your prompt exactly as
            provided. Recommended to keep true unless you need precise control
            over the exact wording. Applicable to all functions
          default: true
          example: true
        seed:
          type: integer
          description: >-
            Random seed for reproducible results (0-2147483647). Using the same
            seed with identical parameters will produce similar (though not
            pixel-perfect identical) results. Useful for A/B testing different
            prompts while keeping other randomness constant. If not specified, a
            random seed is used each time. Applicable to all functions
          minimum: 0
          maximum: 2147483647
          example: 42
    AsyncTaskResponse:
      type: object
      required:
        - code
        - message
        - data
      properties:
        code:
          type: integer
          description: Response code, 0 indicates success
          example: 0
        message:
          type: string
          description: Response message
          example: success
        data:
          type: object
          required:
            - status
            - task_id
            - model_id
          properties:
            status:
              type: string
              enum:
                - pending
                - processing
              description: Task status
              example: pending
            task_id:
              type: string
              description: Unique task identifier
              example: task-abc123
            model_id:
              type: string
              description: Model ID
              example: model-123
            get_result:
              type: object
              description: API information to query the task result
              properties:
                method:
                  type: string
                  description: HTTP method
                  example: GET
                url:
                  type: string
                  description: Full URL to query the task result
                  example: https://api.modellix.ai/api/v1/tasks/task-abc123
          description: Detailed data about the submitted asynchronous task.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API Key authentication. Format: `Bearer YOUR_API_KEY`.'

````