All Products
Search
Document Center

Alibaba Cloud Model Studio:Video generation model fine-tuning API reference

Last Updated:Feb 12, 2026

This document provides a complete API reference for fine-tuning the Wan image-to-video model.

Availability

Upload a dataset

API description: Uploads a local dataset in .zip format to Model Studio to obtain a unique file ID (id).

Note

When using the API, the zip package size must be ≤ 1GB.

Request endpoint

POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files
Content-type: multipart/form-data

Request parameters

Field

Parameter passing

Type

Required

Description

Example

file

Body (form-data)

file

Yes

The local dataset file in .zip format.

When you pass the parameter, use the format files=@"<file_path>". The path can be a relative or absolute path.

@"./wan-i2v-training-dataset.zip"

purpose

Body (form-data)

string

Yes

For fine-tuning jobs, the value is fixed to fine-tune.

fine-tune

Response parameters

Field

Type

Description

Example

id

string

The file ID. This is the unique ID of the file on the platform and is used to create a fine-tuning job.

file-ft-b2416bacc4d742xxxx

object

string

The type of the upload.

file

bytes

integer

The size of the uploaded file in bytes.

73310369

filename

string

The name of the file.

wan-i2v-training-dataset.zip

purpose

string

The purpose of the job. For fine-tuning jobs, the value is fixed to fine-tune.

fine-tune

status

string

The status of the file upload.

processed indicates that the file was uploaded successfully.

processed

created_at

integer

The time when the file was created. The format is a UNIX timestamp.

1766127125

Request example

curl --location --request POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"./wan-i2v-training-dataset.zip"' \
--form 'purpose="fine-tune"'

Response example

Copy and save the id value. This is the unique ID for the uploaded dataset.

{
    "id": "file-ft-b2416bacc4d742xxxx",
    "object": "file",
    "bytes": 73310369,
    "filename": "wan-i2v-training-dataset.zip",
    "purpose": "fine-tune",
    "status": "processed",
    "created_at": 1766127125
}

Create a fine-tuning job

API description: Starts a model fine-tuning job based on a specified base model and an uploaded dataset.

Request endpoint

POST https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes
Content-type: application/json

Request parameters

Field

Parameter passing

Type

Required

Description

Example

model

Body

string

Yes

The base model to use for fine-tuning.

  • Image-to-video - based on the first frame: wan2.6-i2v, wan2.5-i2v-preview, wan2.2-i2v-flash

  • Image-to-video - based on the first and last frames: wan2.2-kf2v-flash

wan2.5-i2v-preview

training_file_ids

Body

array[string]

Yes

An array of training set file IDs. You can pass multiple IDs.

["file-ft-b2416bacc4d742xxxx"]

validation_file_ids

Body

array[string]

No

An array of validation set file IDs. You can pass multiple IDs.

If you do not provide this parameter, the system automatically splits the training set.

-

training_type

Body

string

Yes

The fine-tuning type. Currently, only efficient_sft (LoRA efficient fine-tuning) is supported.

efficient_sft

hyper_parameters

Body

object

No

Hyperparameter settings.

See the table below

Hyperparameters (hyper_parameters)

For the first training, you can use the default hyperparameters. If the model performance is poor or the training does not converge, you can adjust parameters such as n_epochs or learning_rate.

Field

Type

Required

Description

Default

batch_size

int

Yes

Batch size.

The number of data entries sent to the model for training at one time.

  • wan2.6-i2v: Use the default value, which is fixed to 2.

  • wan2.5-i2v-preview: Use the default value, which is fixed to 2.

  • wan2.2-i2v-flash: Use the default value, which is fixed to 4.

  • wan2.2-kf2v-flash: Use the default value, which is fixed to 4.

wan2.6: 2

wan2.5: 2

wan2.2: 4

n_epochs

int

Yes

Number of training epochs.

The total number of training steps is determined by the number of epochs (n_epochs), dataset size, and batch size. The formula is: steps = n_epochs × ceiling(dataset_size / batch_size).

To ensure the model is fully trained, the total number of training steps should be at least 800. The recommended minimum number of epochs can be estimated using this formula: n_epochs = 800 / ceiling(dataset_size / batch_size).

For example, if the dataset has 5 entries and the batch_size is 2, the number of steps per epoch is ceiling(5/2) = 3. The minimum required number of epochs is n_epochs = 800 / 3 ≈ 267. This is a recommended minimum value. You can increase it as needed.

400

learning_rate

float

Yes

Learning rate. Controls the magnitude of model weight updates.

A rate that is too high may degrade the model. A rate that is too low may result in insignificant changes. Use the default value.

2e-5

eval_epochs

int

Yes

Validation interval. The value must be ≥ n_epochs/10.

The number of epochs between validation evaluations during training. This is used to periodically assess the model's training performance.

50

max_pixels

int

Yes

Maximum resolution for training videos.

Sets a limit on the total number of pixels (width × height) for input videos in the training set. The system only scales videos that exceed this value. Videos that do not exceed the limit remain unchanged.

  • wan2.6-i2v: Default is 36864. Value range: 16384 (128×128) to 36864 (192×192).

  • wan2.5-i2v-preview: Default is 36864. Value range: 16384 (128×128) to 36864 (192×192).

  • wan2.2-i2v-flash: Default is 262144. Value range: 65536 (256×256) to 262144 (512×512).

  • wan2.2-kf2v-flash: Default is 262144. Value range: 65536 (256×256) to 262144 (512×512).

wan2.6: 36864

wan2.5: 36864

wan2.2: 262144

split

float

No

Training set split ratio. The value must be in the range (0, 1).

This parameter takes effect only when validation_file_ids is not specified.

This parameter is used to automatically split a validation set from the training set by ratio. For example, 0.9 means 90% for the training set and 10% for the validation set. The final size of the validation set is also limited by max_split_val_dataset_sample.

0.9

max_split_val_dataset_sample

int

No

Maximum number of samples for the validation set automatically split from the training set. The value must be ≥ 1.

This parameter takes effect only when validation_file_ids is not specified.

This parameter specifies the maximum number of validation sets:

Validation set size = min(Total dataset size × (1 − split), max_split_val_dataset_sample)

For example, if a dataset has 100 entries, split is 0.9 (meaning 10% for validation), and max_split_val_dataset_sample is 5. The calculated validation set size is 10 (100 × 0.1), but because the upper limit is 5, only 5 entries are used for the validation set.

5

save_total_limit

int

No

Checkpoint save limit.

Limits the maximum number of models to save. The system always saves only the last N checkpoints generated during training, where N is the value of this parameter.

20

lora_rank

int

No

Dimension of the LoRA low-rank matrix. Use the default value.

This value determines the number of fine-tuning parameters. A larger value enhances the model's fitting ability but slows down training.

The value must be a power of 2 (such as 16, 32, or 64).

32

lora_alpha

int

No

Scaling factor for LoRA weights. Use the default value.

This is used to adjust the influence of the fine-tuned parameters on the original model's weights (usually used with lora_rank).

The value must be a power of 2 (such as 16, 32, or 64).

32

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

object

The task details.

-

output.job_id

string

The unique ID of the model fine-tuning job. This ID is used to query the job status later.

ft-202511111122-xxxx

output.job_name

string

The name of the model fine-tuning job.

ft-202511111122-xxxx

output.status

string

The status of the fine-tuning job:

  • PENDING: The training is pending.

  • QUEUING: The training is in a queue. Only one training job can run at a time.

  • RUNNING: The training is in progress.

  • CANCELING: The training is being canceled.

  • SUCCEEDED: The training is successful.

  • FAILED: The training failed.

  • CANCELED: The training was canceled.

PENDING

output.finetuned_output

string

The name of the new model produced after fine-tuning. This name is required for deployment and invocation.

wan2.5-i2v-preview-ft-202511111122-xxxx

output.model

string

The base model that is used.

wan2.5-i2v-preview

output.base_model

string

The base model that is used.

wan2.5-i2v-preview

output.training_file_ids

array

A list of training set file IDs that are used.

["file-ft-b2416bacc4d742xxxx"]

output.validation_file_ids

array

A list of validation set file IDs that are used. If no validation set is uploaded, this is an empty list.

[]

output.hyper_parameters

object

The hyperparameters that are actually used.

{...}

output.training_type

string

The training method for model fine-tuning. The value is fixed to efficient_sft.

efficient_sft

output.create_time

string

The time when the job was created.

2025-11-11 11:22:22

output.workspace_id

string

The ID of the workspace to which the Model Studio API key belongs.

For more information, see Obtain a Workspace ID.

llm-xxxxxxxxx

output.user_identity

string

The user identity, which is the Alibaba Cloud account ID.

12xxxxxxx

output.modifier

string

The Alibaba Cloud account ID of the user who made the modification.

12xxxxxxx

output.creator

string

The Alibaba Cloud account ID of the user who created the job.

12xxxxxxx

output.group

string

The group of the model fine-tuning job.

llm

output.max_output_cnt

integer

The maximum number of checkpoints to save during training.

This is equivalent to the value of the hyperparameter save_total_limit.

8

Request example

Replace <replace_with_training_dataset_file_id> with the file ID that you obtained in the Upload a dataset step.

Image-to-video - based on the first frame

Wan2.6

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model":"wan2.6-i2v",
    "training_file_ids":[
        "<replace_with_training_dataset_file_id>"
    ],
    "training_type":"efficient_sft",
    "hyper_parameters":{
        "n_epochs":400,
        "batch_size":2,
        "learning_rate":2e-5,
        "split":0.9,
        "eval_epochs": 50,
        "max_pixels": 36864
    }
}'

Wan2.5

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model":"wan2.5-i2v-preview",
    "training_file_ids":[
        "<replace_with_training_dataset_file_id>"
    ],
    "training_type":"efficient_sft",
    "hyper_parameters":{
        "n_epochs":400,
        "batch_size":2,
        "learning_rate":2e-5,
        "split":0.9,
        "eval_epochs": 50,
        "max_pixels": 36864
    }
}'

Wan2.2

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model":"wan2.2-i2v-flash",
    "training_file_ids":[
        "<replace_with_training_dataset_file_id>"
    ],
    "training_type":"efficient_sft",
    "hyper_parameters":{
        "n_epochs":400,
        "batch_size":4,
        "learning_rate":2e-5,
        "split":0.9,
        "eval_epochs": 50,
        "max_pixels": 262144
    }
}'

Image-to-video - based on the first and last frames

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model":"wan2.2-kf2v-flash",
    "training_file_ids":[
        "<replace_with_training_dataset_file_id>"
    ],
    "training_type":"efficient_sft",
    "hyper_parameters":{
        "n_epochs":400,
        "batch_size":4,
        "learning_rate":2e-5,
        "split":0.9,
        "eval_epochs": 50,
        "max_pixels": 262144
    }
}'

Upload multiple training and validation sets

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model":"wan2.5-i2v-preview",
    "training_file_ids":[
        "<replace_with_training_set_file_id_1>",
        "<replace_with_training_set_file_id_2>"
    ],
    "validation_file_ids":[
         "<replace_with_validation_set_file_id_1>",
         "<replace_with_validation_set_file_id_2>"
    ],
    "training_type":"efficient_sft",
    "hyper_parameters":{
        "n_epochs":400,
        "batch_size":2,
        "learning_rate":2e-5,
        "split":0.9,
        "eval_epochs": 50,
        "max_pixels": 36864
    }
}'

Response example

Take note of the following two parameters: output.job_id (Job ID) and output.finetuned_output (Name of the fine-tuned model).

{
    "request_id": "0eb05b0c-02ba-414a-9d0c-xxxxxxxxx",
    "output": {
        "job_id": "ft-202511111122-xxxx",
        "job_name": "ft-202511111122-xxxx",
        "status": "PENDING",
        "finetuned_output": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "model": "wan2.5-i2v-preview",
        "base_model": "wan2.5-i2v-preview",
        "training_file_ids": [
            "xxxxxxxxxxxx"
        ],
        "validation_file_ids": [],
        "hyper_parameters": {
            "n_epochs": 400,
            "batch_size": 2,
            "learning_rate": 2.0E-5,
            "split": 0.9,
            "eval_epochs": 50
        },
        "training_type": "efficient_sft",
        "create_time": "2025-11-11 11:22:22",
        "workspace_id": "llm-xxxxxxxxx",
        "user_identity": "12xxxxxxx",
        "modifier": "12xxxxxxx",
        "creator": "12xxxxxxx",
        "group": "llm",
        "max_output_cnt": 20
    }
}

Query the status of a fine-tuning job

API description: Queries the progress of a fine-tuning job using the job_id. You can poll this endpoint. When the job status changes to SUCCEEDED, the model training is complete.

Note

The fine-tuning job in this example takes several hours to train. The specific duration depends on the base model.

Request endpoint

GET https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/{job_id}

Request parameters

Field

Parameter passing

Type

Required

Description

Example

job_id

Path parameter

string

Yes

The ID of the fine-tuning job.

ft-202511111122-xxxx

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

object

The task details.

-

output.job_id

string

The unique ID of the model fine-tuning job. This ID is used to query the job status later.

ft-202511111122-xxxx

output.job_name

string

The name of the model fine-tuning job.

ft-202511111122-xxxx

output.status

string

The status of the fine-tuning job.

  • PENDING: The training is pending.

  • QUEUING: The training is in a queue. Only one training job can run at a time.

  • RUNNING: The training is in progress.

  • CANCELING: The training is being canceled.

  • SUCCEEDED: The training is successful.

  • FAILED: The training failed.

  • CANCELED: The training was canceled.

PENDING

output.finetuned_output

string

The name of the new model produced after fine-tuning.

wan2.5-i2v-preview-ft-202511111122-xxxx

output.model

string

The base model that is used.

wan2.5-i2v-preview

output.base_model

string

The base model that is used.

wan2.5-i2v-preview

output.training_file_ids

array

A list of training set file IDs that are used.

["file-ft-b2416bacc4d742xxxx"]

output.validation_file_ids

array

A list of validation set file IDs that are used. If no validation set is uploaded, this is an empty list.

[]

output.hyper_parameters

object

The hyperparameters that are actually used.

{...}

output.training_type

string

The training method for model fine-tuning. The value is fixed to efficient_sft.

efficient_sft

output.create_time

string

The time when the fine-tuning job was created.

2025-11-11 11:22:22

output.end_time

string

The time when the fine-tuning job was completed.

2025-11-11 16:49:01

output.workspace_id

string

The ID of the workspace to which the Model Studio API key belongs.

For more information, see Get a Workspace ID.

llm-xxxxxxxxx

output.user_identity

string

The user identity, which is the Alibaba Cloud account ID.

12xxxxxxx

output.modifier

string

The Alibaba Cloud account ID of the user who made the modification.

12xxxxxxx

output.creator

string

The Alibaba Cloud account ID of the user who created the job.

12xxxxxxx

output.group

string

The group of the model fine-tuning job.

llm

output.max_output_cnt

integer

The maximum number of checkpoints to save.

This is equivalent to the value of the hyperparameter save_total_limit.

8

output.output_cnt

integer

The actual number of saved checkpoints.

This value is less than or equal to output.max_output_cnt.

8

output.usage

integer

The total number of tokens consumed for training. This is used for model training billing.

432000

Request example

Replace <replace_with_fine-tuning_job_id> in the URL with the job_id value from the Create a fine-tuning job response.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'

Response example

Take note of the following two parameters: output.status (A status of SUCCEEDED indicates that the training is complete) and output.usage (The total number of tokens consumed by the training).

{
    "request_id": "9bbb953c-bef2-4b59-9fc5-xxxxxxxxx",
    "output": {
        "job_id": "ft-202511111122-xxxx",
        "job_name": "ft-202511111122-xxxx",
        "status": "SUCCEEDED",
        "finetuned_output": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "model": "wan2.5-i2v-preview",
        "base_model": "wan2.5-i2v-preview",
        "training_file_ids": [
            "xxxxxxxxxxxx"
        ],
        "validation_file_ids": [],
        "hyper_parameters": {
            "n_epochs": 400,
            "batch_size": 2,
            "learning_rate": 2.0E-5,
            "split": 0.9,
            "eval_epochs": 50
        },
        "training_type": "efficient_sft",
        "create_time": "2025-11-11 11:22:22",
        "workspace_id": "llm-xxxxxxxxx",
        "user_identity": "xxxxxxxxx",
        "modifier": "xxxxxxxxx",
        "creator": "xxxxxxxxx",
        "end_time": "2025-11-11 16:49:01",
        "group": "llm",
        "usage": 432000,
        "max_output_cnt": 8,
        "output_cnt": 8
    }
}

Deploy a model

API description: Publishes the trained model as an online API service. Before you call this API, you must query the status of the fine-tuning job to ensure that the job status is SUCCEEDED.

Request endpoint

POST https://dashscope-intl.aliyuncs.com/api/v1/deployments
Content-Type: application/json

Request parameters

Field

Parameter passing

Type

Required

Description

Example

model_name

Body

string

Yes

The name of the model to deploy.

  • To deploy a model produced by the fine-tuning API: Use the value of the output.finetuned_output parameter from the response of the Create a fine-tuning job operation.

  • To deploy an exported model: Use the value of the output[].model_name parameter from the response of the Query details of an exported model operation.

wan2.5-i2v-preview-ft-202511111122-xxxx

capacity

Body

integer

Yes

The number of deployed model instances. We recommend that you set this to 1.

1

plan

Body

string

Yes

The deployment method. For LoRA efficient fine-tuning, the value is fixed to lora.

lora

aigc_config

Body

object

Yes

Prompt settings.

-

aigc_config.use_input_prompt

Body

boolean

Yes

Controls the prompt generation logic for API calls.

  • false (default): Automatic generation mode. The system ignores the prompt passed in the API request and uses the templates configured in the following two parameters to automatically generate a prompt.

  • true: Manual input mode. The system directly uses the prompt passed in the API request. The template parameters configured below will be ignored.

false

aigc_config.prompt

Body

string

Yes

A preset prompt template.

This parameter takes effect only when use_input_prompt=false.

When the model is called, the system analyzes the input image, fills the image content into this template, and automatically generates a complete description with effect instructions.

Note: This parameter automatically overwrites the prompt parameter passed in the model invocation API.

Provide a video description based on the image content...

For more information, see Request example

aigc_config.lora_prompt_default

Body

string

Yes

A fallback prompt template.

This parameter takes effect only when use_input_prompt=false.

If generation fails using aigc_config.prompt, this parameter is used to generate the video.

Then the s86b5p money rain effect begins...

For more information, see Request example

Description of the aigc_config.prompt parameter

  • Why you should set this parameter

    If you do not set this parameter, you must manually write a complete prompt each time you call the model. After you set this parameter, you only need to upload an image when you call the fine-tuned model. The system automatically completes the effect instructions based on this parameter, and you do not need to manually enter a prompt.

  • How to set this parameter

    Prompt = Instruction (tells the model what to do) + Output template (specifies the output format) + Example (allows the model to learn from the example structure)

    Provide a video description based on the image content. The description must include "Then the s86b5p money rain effect begins, and countless enormous US dollar bills (beige with dark green patterns) pour down like a torrential rain, densely hitting and surrounding her (him). The bills continue to fall as the camera slowly zooms in. She (he) stretches her (his) arms upward, neck slightly tilted back, with a surprised expression, completely immersed in this wild money rain".
    Output template:
    The video begins by showing [subject description]. [Environment description]. Then the s86b5p money rain effect begins, and countless enormous US dollar bills (beige with dark green patterns) pour down like a torrential rain, densely hitting and surrounding her (him). The bills continue to fall as the camera slowly zooms in. She (he) stretches her (his) arms upward, neck slightly tilted back, with a surprised expression, completely immersed in this wild money rain.
    Example:
    The video begins by showing a young woman on a beach. Her hair is wet, dark brown, curly, and slightly messy. She has a bright smile on her face. The background shows rough waves and distant mountains. Then the s86b5p money rain effect begins, and countless enormous US dollar bills (beige with dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall as the camera slowly zooms in. She stretches her arms upward, neck slightly tilted back, with a surprised expression, completely immersed in this wild money rain.
    For more information about the output template, see Video annotation: Write prompts for videos.

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

object

The task details.

-

output.deployed_model

string

The unique ID of the deployed model.

This is used to query the model deployment status and call the model.

wan2.5-i2v-preview-ft-202511111122-xxxx

output.model_name

string

The model ID name.

wan2.5-i2v-preview-ft-202511111122-xxxx

output.status

string

The deployment status:

  • PENDING: Deploying

  • RUNNING: Running

  • FAILED: Deployment failed

PENDING

output.base_model

string

The base model that is used.

wan2.5-i2v-preview

output.gmt_create

string

The time when the deployment task was created.

2025-11-11T17:46:53.294

output.gmt_modified

string

The time when the deployment task was updated.

2025-11-11T17:46:53.294

output.workspace_id

string

The ID of the workspace to which the Model Studio API key belongs.

For more information, see Obtain a Workspace ID.

llm-xxxxxxxxx

output.charge_type

string

The billing method. post_paid indicates pay-as-you-go.

post_paid

output.creator

string

The Alibaba Cloud account ID of the user who created the task.

12xxxxxxx

output.modifier

string

The Alibaba Cloud account ID of the user who made the modification.

12xxxxxxx

output.plan

string

The deployment method.

lora

Request example

Replace <replace_with_model_name> with the finetuned_output value from the response of the Create a fine-tuning job operation.

Image-to-video - based on the first frame

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model_name": "<replace_with_model_name>",
    "aigc_config": {
        "use_input_prompt": false,
        "prompt": "Provide a video description based on the image content. The description must include the phrase “Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she/he stretches her/his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.“\nOutput Template:\nThe video begins with a shot of [subject description]. [Environment description]. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she/he stretches her/his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.\nExample:\nThe video begins showing a young woman standing in front of a brick wall covered with ivy. She has long, smooth reddish-brown hair, wearing a white sleeveless dress, a shiny silver necklace, and a smile on her face. The brick wall in the background is covered with green vines, appearing rustic and natural. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she stretches her arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.",
        "lora_prompt_default": "Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she/he stretches her/his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain."
    },
    "capacity": 1,
    "plan": "lora"
}'

Image-to-video - based on the first and last frames

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model_name": "<replace_with_model_name>",
    "aigc_config": {
        "use_input_prompt": false,
        "prompt": "Provide a video description based on the image content. The description must include the phrase “Then she/he begins the s86b5p transformation.“\nOutput Template:\nThe video begins with a shot of [subject description]. [Environment description]. Then she/he begins the s86b5p transformation.\nExample:\nThe video begins with a young woman in an outdoor setting. She has short, curly dark brown hair and a friendly smile. She is wearing a black Polo shirt with colorful floral embroidery. The background features green vegetation and distant mountains. Then she begins the s86b5p transformation.",
        "lora_prompt_default": "Then she/he begins the s86b5p transformation."
    },
    "capacity": 1,
    "plan": "lora"
}'

Response example

Take note of the following two parameters: output.deployed_model (the unique ID of the deployed model) and output.status (a status of PENDING indicates that the model is being deployed).

{
    "request_id": "96020b2e-9072-4c8a-9981-xxxxxxxxx",
    "output": {
        "deployed_model": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "gmt_create": "2025-11-11T17:46:53.294",
        "gmt_modified": "2025-11-11T17:46:53.294",
        "status": "PENDING",
        "model_name": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "base_model": "wan2.5-i2v-preview",
        "workspace_id": "llm-xxxxxxxxx",
        "charge_type": "post_paid",
        "creator": "12xxxxxxx",
        "modifier": "12xxxxxxx",
        "plan": "lora"
    }
}

Query the status of a model deployment

API description: Polls this endpoint to query the deployment status. When the job status changes to RUNNING, the model is deployed.

Note

The deployment process for the fine-tuned model in this example takes approximately 5 to 10 minutes.

Request endpoint

GET https://dashscope-intl.aliyuncs.com/api/v1/deployments/{deployed_model}

Request parameters

Field

Parameter passing

Type

Required

Description

Example

deployed_model

Path parameter

string

Yes

The unique ID of the deployed model.

Use the value of the output.deployed_model parameter from the response of the Deploy a model operation.

wan2.5-i2v-preview-ft-202511111122-xxxx

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

object

The task details.

-

output.deployed_model

string

The unique ID of the deployed model. This is used to call the model later.

wan2.5-i2v-preview-ft-202511111122-xxxx

output.model_name

string

The model ID name.

wan2.5-i2v-preview-ft-202511111122-xxxx

output.status

string

The deployment status:

  • PENDING: Deploying

  • RUNNING: Running

  • ARREARS_DOWN: Service stopped due to overdue payment

  • ARREARS_RECOVERING: Resuming service after overdue payment

  • FAILED: Deployment failed

  • OFFLINING: Taking service offline

  • UPDATING: Upgrading or downgrading

  • UPDATING_FAILED: Upgrade or downgrade failed

RUNNING

output.base_model

string

The base model that is used.

wan2.5-i2v-preview

output.gmt_create

string

The time when the deployment task was created.

2025-11-11T17:46:53.294

output.gmt_modified

string

The time when the deployment task was updated.

2025-11-11T18:02:2

output.workspace_id

string

The ID of the workspace to which the Model Studio API key belongs.

For more information, see Get a Workspace ID.

llm-xxxxxxxxx

output.charge_type

string

The billing method. post_paid indicates pay-as-you-go.

post_paid

output.creator

string

The creator's Alibaba Cloud account ID.

12xxxxxxx

output.modifier

string

The Alibaba Cloud account ID of the user who made the modification.

12xxxxxxx

output.plan

string

The deployment method.

lora

Request example

Replace <replace_with_deployed_model> with the value of the output.deployed_model parameter from the response of the Deploy a model operation.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments/<replace_with_deployed_model>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

Response example

Check the status field. When the status changes to RUNNING, the model is deployed and ready to be called.

{
    "request_id": "66d15f35-0772-409f-bc70-xxxxxxxxx",
    "output": {
        "deployed_model": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "gmt_create": "2025-11-11T17:46:53",
        "gmt_modified": "2025-11-11T18:02:24",
        "status": "RUNNING",
        "model_name": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "base_model": "wan2.5-i2v-preview",
        "workspace_id": "llm-xxxxxxxxx",
        "charge_type": "post_paid",
        "creator": "12xxxxxxx",
        "modifier": "12xxxxxxxx",
        "plan": "lora"
    }
}

Call the model to generate a video

For more information about how to call the fine-tuned LoRA model, see Call the model to generate a video.

Checkpoint management

1. Query a list of checkpoints

API description: Retrieves a list of checkpoints that successfully generated preview videos from the validation set. Checkpoints that failed validation are not listed.

Limits: This API must be called after the model fine-tuning is complete. Otherwise, an empty list is returned.

Request endpoint

GET https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/{job_id}/validation-results

Request parameters

Field

Parameter passing

Type

Required

Description

Example

job_id

Path parameter

string

Yes

The ID of the fine-tuning job.

ft-202511111122-xxxx

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

array[string]

A list of checkpoints.

-

output[].checkpoint

string

The checkpoint name.

checkpoint-160

Request example

Replace <replace_with_fine-tuning_job_id> in the URL with the job_id value from the Create a fine-tuning job response.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/validation-results' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

Response example

{
    "request_id": "da1310f5-5a21-4e29-99d4-xxxxxx",
    "output": [
        {
            "checkpoint": "checkpoint-160"
        },
        {
            "checkpoint": "checkpoint-20"
        },
        {
            "checkpoint": "checkpoint-40"
        },
        {
            "checkpoint": "checkpoint-60"
        }
    ]
}

2. Query the validation result of a checkpoint

API description: Views the video generated by a specific checkpoint, such as "checkpoint-160".

Request endpoint

GET https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/{job_id}/validation-details/{checkpoint}?page_no=1&page_size=10

Request parameters

Field

Passing parameters

Type

Required

Description

Example

job_id

Path parameter

string

Yes

The ID of the fine-tuning job.

ft-202511111122-xxxx

checkpoint

Path parameter

string

Yes

The checkpoint name.

checkpoint-160

page_no

Query parameter

integer

No

The page number. Default is 1.

1

page_size

Query parameter

integer

No

The number of entries per page. Default is 10.

10

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

375b3ad0-d3fa-451f-b629-xxxxxxx

output

object

The output result.

-

output.page_no

integer

The page number.

1

output.page_size

integer

The number of entries per page.

10

output.total

integer

The total number of validation set entries.

1

output.list

array[object]

A list of validation set entries.

-

output.list[].video_path

string

The video generated by the checkpoint.

The video_path is valid for 24 hours. Download the video promptly.

https://finetune-swap-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?Expires=xxxx

output.list[].prompt

string

The prompt for the validation data. This is obtained from the data.jsonl annotation file of the dataset.

The video begins with a young man sitting in a cafe...

output.list[].first_frame_path

string

The URL of the validation image. The system reads the image from the dataset and generates a public URL.

https://finetune-swap-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx.jpeg

Request example

  • <replace_with_fine-tuning_job_id>: Replace this placeholder with the job_id value from the response of the Create a fine-tuning job operation.

  • <replace_with_selected_checkpoint>: Replace this placeholder with the selected checkpoint name, such as "checkpoint-160".

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/validation-details/<replace_with_selected_checkpoint>?page_no=1&page_size=10' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

The video_path is valid for 24 hours. You must download the video within this period.
{
    "request_id": "375b3ad0-d3fa-451f-b629-xxxxxxx",
    "output": {
        "page_no": 1,
        "page_size": 10,
        "total": 1,
        "list": [
            {
                "video_path": "https://finetune-swap-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?Expires=xxxx",
                "prompt": "The video begins with a young man sitting in a cafe. He is wearing a beige Polo shirt, looking focused and slightly contemplative, with his fingers gently touching his chin. In front of him is a cup of hot coffee. The background is a wall with wooden stripes and a decorative sign. Then the s86b5p money rain effect begins, and countless enormous US dollar bills (beige with dark green patterns) pour down like a torrential rain, densely hitting and surrounding him. The bills continue to fall as he stretches his arms upward, neck slightly tilted back, with a surprised expression, completely immersed in this wild money rain.",
                "first_frame_path": "https://finetune-swap-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx.jpeg"
            }
        ]
    }
}

3. Export a checkpoint

API description: Exports a checkpoint as a deployable model.

Request endpoint

GET https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/{job_id}/export/{checkpoint}?model_name={model_name}

Request parameters

Field

Parameter passing

Type

Required

Description

Example

job_id

Path parameter

string

Yes

The ID of the fine-tuning job.

ft-202511111122-xxxx

checkpoint

Path parameter

string

Yes

The checkpoint name.

checkpoint-160

model_name

Query parameter

string

Yes

The name of the exported model to display in the console.

This name must be globally unique. We recommend using Chinese characters, English letters, digits, underscores (_), and hyphens (-).

Note: This parameter is for display in the console only. The actual name of the exported model is the value of the output[].model_name parameter in the response of the Query details of an exported model operation.

wan2.5-i2v-preview-ft-202511111122-xxxx

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

boolean

Indicates whether the export request was submitted successfully.

  • true: The export request was submitted successfully.

  • false: The export request failed to be submitted. We recommend that you retry.

true

Request example

  • <replace_with_fine_tuning_job_id>: Replace this placeholder with the job_id value from the response of the Create a fine-tuning job operation.

  • <replace_with_checkpoint_to_export>: Replace this placeholder with the checkpoint value, such as "checkpoint-160".

  • <replace_with_exported_model_name_for_console_display>: Replace this placeholder with a custom model name. This name is for display purposes in the console only.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/export/<replace_with_checkpoint_to_export>?model_name=<replace_with_exported_model_name_for_console_display>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

{
    "request_id": "0817d1ed-b6b6-4383-9650-xxxxx",
    "output": true
}

4. Query details of an exported model

API description: Queries the status of all checkpoints to confirm that the export is complete and to obtain the name of the new model (model_name) for deployment.

Request endpoint

GET https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/{job_id}/checkpoints

Request parameters

Field

Parameter passing

Type

Required

Description

Example

job_id

Path parameter

string

Yes

The ID of the fine-tuning job.

ft-202511111122-xxxx

Response parameters

Field

Type

Description

Example

request_id

string

The unique ID of the request.

0eb05b0c-02ba-414a-9d0c-xxxxxxxxx

output

array[object]

Details of the checkpoint list.

-

output[].create_time

string

The time when the resource was created.

2025-11-11T13:27:29

output[].job_id

string

The ID of the fine-tuning job.

ft-202511111122-xxxx

output[].checkpoint

string

The checkpoint name.

checkpoint-160

output[].full_name

string

The full name ID of the checkpoint.

ft-202511111122-496e-checkpoint-160

output[].model_name

string

The name of the exported model. This is used for model deployment and invocation.

This is returned when the status is SUCCEEDED.

wan2.5-i2v-preview-ft-202511111122-xxxx-c160

output[].model_display_name

string

The display name of the model.

wan2.5-i2v-preview-ft-202511111122-xxxx

output[].status

string

The model export status:

  • PENDING: Queued

  • PROCESSING: Exporting

  • SUCCEEDED: Export successful

  • FAILED: Export failed

  • UNSUPPORTED: Export not supported

SUCCEEDED

Request example

Replace <replace_with_fine-tuning_job_id> with the job_id value from the Create a fine-tuning job response.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/checkpoints' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

Locate the target checkpoint in the returned list, such as checkpoint-160. When its status changes to SUCCEEDED, the export is successful. You must obtain and save the model_name, which is the unique identifier for subsequent model deployment and calls.

{
    "request_id": "b0e33c6e-404b-4524-87ac-xxxxxx",
    "output": [
         ......,
        {
            "create_time": "2025-11-11T13:42:31",
            "full_name": "ft-202511111122-496e-checkpoint-180",
            "job_id": "ft-202511111122-496e",
            "checkpoint": "checkpoint-180",
            "status": "PENDING" // An unexported checkpoint, which does not have the model_name field
        },
        {
            "create_time": "2025-11-11T13:27:29",
            "full_name": "ft-202511111122-496e-checkpoint-160",
            "job_id": "ft-202511111122-496e",
            "checkpoint": "checkpoint-160",                             
            "model_name": "wan2.5-i2v-preview-ft-202511111122-xxxx-c160", // Important field, used for model deployment and invocation
            "model_display_name": "wan2.5-i2v-preview-ft-202511111122-xxxx", 
            "status": "SUCCEEDED" // A successfully exported checkpoint
        },
        ......
        
    ]
}

5. Deploy and call the model

After you successfully export the checkpoint and obtain the model_name, perform the following steps:

Fine-tuning job management

Query the logs of a fine-tuning job

Request example

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/logs' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

{
    "request_id": "b7ecb456-6dd1-4f35-a581-xxxxxx",
    "output": {
        "total": 25,
        "logs": [
            "2025-11-11 11:23:37,315 - INFO - data process succeeded, start to fine-tune",
            " Actual number of consumed tokens is 215040 !",
            " Actual number of consumed tokens is 419840 !",
            " Actual number of consumed tokens is 624640 !",
            " Actual number of consumed tokens is 829440 !",
            " Actual number of consumed tokens is 1034240 !",
            " Actual number of consumed tokens is 1239040 !",
            " Actual number of consumed tokens is 1443840 !",
            " Actual number of consumed tokens is 1648640 !",
            " Actual number of consumed tokens is 1853440 !",
            " Actual number of consumed tokens is 2058240 !",
            " Actual number of consumed tokens is 2263040 !",
            " Actual number of consumed tokens is 2467840 !",
            " Actual number of consumed tokens is 2672640 !",
            " Actual number of consumed tokens is 2877440 !",
            " Actual number of consumed tokens is 3082240 !",
            " Actual number of consumed tokens is 3287040 !",
            " Actual number of consumed tokens is 3491840 !",
            " Actual number of consumed tokens is 3696640 !",
            " Actual number of consumed tokens is 3901440 !",
            "2025-11-11 16:31:40,760 - INFO - fine-tuned output got, start to transfer it for inference",
            "2025-11-11 16:32:29,162 - INFO - transfer for inference succeeded, start to deliver it for inference",
            "2025-11-11 16:40:28,784 - INFO - start to save checkpoint",
            "2025-11-11 16:49:01,738 - INFO - finetune-job succeeded",
            "2025-11-11 16:49:02,234 - INFO - ##FT_COMPLETE##"
        ]
    }
}

Query a list of fine-tuning jobs

Example request

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Example response

{
    "request_id": "bf4d3475-f50c-42e2-a263-xxxxxxxxx",
    "output": {
        "page_no": 1,
        "page_size": 10,
        "total": 1,
        "jobs": [
            {
                "job_id": "ft-202511111122-xxxx",
                "job_name": "ft-202511111122-xxxx",
                "status": "SUCCEEDED",
                "finetuned_output": "wan2.5-i2v-preview-ft-202511111122-xxxx",
                "model": "wan2.5-i2v-preview",
                "base_model": "wan2.5-i2v-preview",
                "training_file_ids": [
                    "xxxxxxxxx"
                ],
                "validation_file_ids": [],
                "hyper_parameters": {
                    "n_epochs": 400,
                    "batch_size": 2,
                    "learning_rate": 2.0E-5,
                    "split": 0.9,
                    "eval_epochs": 50
                },
                "training_type": "efficient_sft",
                "create_time": "2025-11-11 11:22:22",
                "workspace_id": "llm-xxxxxxxxx",
                "user_identity": "xxxxxxxxx",
                "modifier": "xxxxxxxxx",
                "creator": "xxxxxxxxx",
                "end_time": "2025-11-11 16:49:01",
                "group": "llm",
                "usage": 432000,
                "max_output_cnt": 8,
                "output_cnt": 8
            }
        ]
    }
}

Cancel a fine-tuning job

Request example

curl --location --request POST 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/cancel' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

Response example

{
    "request_id": "d8dab938-e32e-40bf-83ab-xxxxxx",
    "output": {
        "status": "success"
    }
}

Delete a fine-tuning job

Request example

curl --location --request DELETE 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

Response example

{
    "request_id": "1301136c-12f2-4504-880a-xxxxxx",
    "output": {
        "status": "success"
    }
}

Deployed model management

Delete a deployed model service

Important

After you perform this operation, the model deployment service is immediately taken offline and cannot be recovered. This means:

  1. The model cannot be called.

  2. Billing for the deployment service stops.

Request example

curl --request DELETE 'https://dashscope-intl.aliyuncs.com/api/v1/deployments/<replace_with_deployed_model>' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --header 'Content-Type: application/json' 

Response example

Check the output.status parameter. A value of DELETING indicates that the deletion request was submitted successfully and the model service is being deleted.

{
    "request_id": "c2ed2aa2-39b8-4a86-b79e-xxxxxx",
    "output": {
        "deployed_model": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "gmt_create": "2025-11-11T17:46:53",
        "gmt_modified": "2025-12-22T11:18:27.532",
        "status": "DELETING",
        "model_name": "wan2.5-i2v-preview-ft-202511111122-xxxx",
        "base_model": "wan2.5-i2v-preview",
        "workspace_id": "llm-xxxxxx",
        "charge_type": "post_paid",
        "creator": "xxxxxx",
        "modifier": "xxxxxx",
        "plan": "lora"
    }
}

Then, you can call the Query the status of a model deployment operation to verify the deletion. If the following content is returned, the deployed service no longer exists and the deletion was successful.

{
    "request_id": "eb619064-0c4£-4d29-aa49-xxxxxx",
    "message": "Not found.",
    "code": "NotFound"
}