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

# Wan 2.5 - Image to Video

> Generate videos from images using the Wan 2.5 Image to Video model.

Transform an input image into a dynamic video using the \*\*Wan 2.5 - Image to Video \*\* model.

## Create a Video Generation Task

```http theme={null}
POST /api/v1/jobs/createTask
```

## Authentication

All API requests require a Bearer Token.

```http theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Parameters

### Top-Level Parameters

| Parameter | Type   | Required | Description                            |
| --------- | ------ | -------- | -------------------------------------- |
| `model`   | string | Yes      | Must be `wan/2-5-image-to-video`.      |
| `input`   | object | Yes      | Input parameters for video generation. |

<ParamField body="model" type="string" required>
  Must be `wan/2-5-image-to-video`.
</ParamField>

### `input` Parameters

<ParamField body="input" type="object" required>
  The `input` object contains the parameters used to generate the video.

  <ParamField body="prompt" type="string" required>
    Use `prompt` to describe the video motion you want to generate.

    **Maximum length:** `800` characters.
  </ParamField>

  <ParamField body="image_url" type="string" required>
    Use the provided image URL as the first frame. <br /> The `image_url` must contain the URL of an uploaded image. The value must be an uploaded file URL, not the file content itself.

    Supported image types:

    * `image/jpeg`
    * `image/png`
    * `image/webp`

    Maximum file size: **10 MB**
  </ParamField>

  <ParamField body="duration" default="5" type="string">
    Use `duration` to specify the length of the generated video in seconds.

    Supported values:

    * `"5"`
    * `"10"`

    Default: `"5"`
  </ParamField>

  <ParamField body="resolution" default="1080p" type="string">
    Specify the resolution of the output video.

    Supported output resolutions:

    * `720p`
    * `1080p`

    **Default:** `1080p`
  </ParamField>

  <ParamField body="enable_prompt_expansion" default="true" type="boolean">
    Whether to enable prompt rewriting using LLM.

    **Default:** `true`
  </ParamField>

  <ParamField body="negative_prompt" type="string">
    Use `negative_prompt` to specify the content that should be avoided.

    **Maximum length:** `500` characters.
  </ParamField>

  <ParamField body="seed" default="0" type="number">
    Random seed for reproducible generation.

    **Note:** If omitted, a random seed will be selected automatically.
  </ParamField>
</ParamField>

## Request

### Request Body

The request body must be JSON and requires the `model` field.

```json theme={null}
{
  "model": "wan/2-5-image-to-video",
  "input": {
    "image_url": "https://example.com/input-image.jpg",
    "prompt": "Describe the video you want to generate.",
    "duration": "5",
    "resolution": "1080p",
    "enable_prompt_expansion": false,
    "negative_prompt":"Describe negative prompt to avoid content you want."
    "seed": 0,
  }
}
```

## Response

### Successful Response

A successful request returns a task ID that can be used to query the task status.

<ResponseField name="code" type="number">
  Response status code.
</ResponseField>

<ResponseField name="msg" type="string">
  Response message. Contains the error description when the request fails.

  **Example:** `success`
</ResponseField>

<ResponseField name="data" type="object" required>
  The task data object containing task id.

  <ResponseField name="taskId" type="string" required>
    The unique identifier for this task.

    **Example:** `task_123456`
  </ResponseField>
</ResponseField>

## Query Task Status

After submitting a task, use the unified query endpoint to check the task progress and retrieve the generated results.

<Card title="Get Task Details" icon="search" href="/get-task-detail">
  Check task status, monitor generation progress, and retrieve results.
</Card>

### Error Response

```json theme={null}
{
  "code": 500,
  "msg": "Server Error - An unexpected error occurred while processing the request",
  "data": null
}
```

## Response Codes

|  Code | Meaning                                                                   |
| ----: | ------------------------------------------------------------------------- |
| `200` | Success — the request was successfully processed.                         |
| `401` | Unauthorized — authentication credentials are missing or invalid.         |
| `402` | Insufficient Credits — the account does not have enough credits.          |
| `404` | Not Found — the requested resource or interface does not exist.           |
| `408` | Upstream service issue — no result has been returned for over 10 minutes. |
| `422` | Validation Error — request parameters failed validation.                  |
| `429` | Rate Limited — request frequency limit has been exceeded.                 |
| `433` | Request Limit — sub-key usage exceeded the limit.                         |
| `455` | Service Unavailable — system is undergoing maintenance.                   |
| `500` | Server Error — an unexpected error occurred while processing the request. |
| `501` | Generation Failed — content generation failed.                            |
| `505` | Feature Disabled — the requested feature is disabled.                     |
