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

# Wan 2.1 Keyframe-To-Video Plus Generation

> Generate videos from first and last frame keyframes using the wan2.1-kf2v-plus model.

<Note>
  This API supports Alibaba Tongyi Wanxiang (Wan2) video generation models. Please refer to Alibaba Cloud's [official documentation](https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference) for more details.
</Note>

## Overview

Generate videos from first and last frame keyframes using the wan2.1-kf2v-plus model. This model creates smooth interpolation between two keyframe images.

## Key Features

* Keyframe-to-video interpolation
* First and last frame specification (required)
* 720P resolution
* Fixed 5s duration
* 30fps output

## Image Requirements

| Property       | Requirement                                   |
| -------------- | --------------------------------------------- |
| **Formats**    | JPEG, JPG, PNG (no transparency), BMP, WEBP   |
| **Dimensions** | \[360, 2000] pixels for both width and height |
| **File Size**  | Max 10MB                                      |
| **Input**      | Public URL or Base64 encoded data             |

## Example Requests

### Basic Keyframe Interpolation

```json theme={null}
{
  "prompt": "A black cat looks curiously at the sky, camera gradually rises from eye-level to overhead",
  "image": "https://example.com/first_frame.jpg",
  "last_frame": "https://example.com/last_frame.jpg",
  "resolution": "720P",
  "duration": 5
}
```

### With Negative Prompt

```json theme={null}
{
  "prompt": "Character starts walking, motion is smooth and natural",
  "image": "https://example.com/start.jpg",
  "last_frame": "https://example.com/end.jpg",
  "negative_prompt": "shaking, distortion",
  "resolution": "720P",
  "duration": 5
}
```

### With Video Effect Template

```json theme={null}
{
  "prompt": "Scene transitions with special effects",
  "image": "https://example.com/keyframe1.jpg",
  "last_frame": "https://example.com/keyframe2.jpg",
  "template": "flying",
  "resolution": "720P"
}
```

## Prompt Tips

For best results when describing keyframe interpolation:

* Describe the transition between first and last frame
* Specify motion direction and camera movement
* Include timing cues if needed


## OpenAPI

````yaml api-reference/endpoint/alibaba/wan2.1-kf2v-plus/wan2.1-kf2v-plus.yaml POST /vendors/alibaba/v1/wan2.1-kf2v-plus/generation
openapi: 3.1.0
info:
  title: Wan2.1-kf2v-plus API
  description: Wan2.1 Keyframe-to-Video Plus Model API
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.mulerouter.ai/
security:
  - bearerAuth: []
paths:
  /vendors/alibaba/v1/wan2.1-kf2v-plus/generation:
    post:
      summary: Create Generation Task
      description: >-
        Generate videos from first and last frame keyframes using the
        wan2.1-kf2v-plus model.
      operationId: wan21_kf2v_plus_generation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Wan21KF2VPlusRequest'
        required: true
      responses:
        '202':
          description: Accepted - Task created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCreatedResponse'
components:
  schemas:
    Wan21KF2VPlusRequest:
      type: object
      additionalProperties: false
      properties:
        prompt:
          type: string
          description: >-
            Transition and motion description between the first and last frame
            (max 800 characters).
          maxLength: 800
        negative_prompt:
          anyOf:
            - type: string
            - type: 'null'
          description: Negative prompt describing unwanted content (max 500 characters).
          maxLength: 500
        image:
          type: string
          description: >-
            First keyframe image (URL or Base64). Supported formats:
            JPEG/JPG/PNG/BMP/WEBP, 360-2000px, ≤10MB.
        last_frame:
          type: string
          description: >-
            Last keyframe image (URL or Base64). Same constraints as the first
            frame.
        template:
          anyOf:
            - type: string
            - type: 'null'
          description: Optional video effect template name.
        resolution:
          type: string
          description: Output Resolution
          enum:
            - 720P
          default: 720P
        duration:
          type: integer
          description: Video duration in seconds (30 fps). Fixed at 5 seconds.
          enum:
            - 5
        prompt_extend:
          type: boolean
          description: Enable intelligent prompt rewriting.
          default: true
        seed:
          type: integer
          description: Random seed [0, 2147483647].
          minimum: 0
          maximum: 2147483647
        safety_filter:
          anyOf:
            - type: boolean
            - type: 'null'
          description: >-
            Enable content safety filter. Defaults to true. Set to false to
            disable content safety inspection.
          default: true
      required:
        - prompt
        - image
        - last_frame
    TaskCreatedResponse:
      type: object
      additionalProperties: true
      properties:
        task_info:
          $ref: '#/components/schemas/TaskInfoCreated'
    TaskInfoCreated:
      type: object
      additionalProperties: true
      properties:
        id:
          type: string
          description: UUID of the task
          format: uuid
        status:
          type: string
          description: Task status (pending when created)
          enum:
            - pending
        created_at:
          type: string
          description: Task creation timestamp (ISO 8601)
          format: date-time
        updated_at:
          type: string
          description: Task last update timestamp (ISO 8601)
          format: date-time
      required:
        - id
        - status
        - created_at
        - updated_at
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````