This document provides a complete API reference for fine-tuning the Wan image-to-video model.
Availability
Applicable region: This document applies only to the Singapore region under the international deployment mode. You must use an API key from this region.
Set environment variables: You have created an API key and set the API key as an environment variable.
Preparations:
You have read Fine-tuning overview and understand the supported models, fine-tuning steps, data format, and billing.
Download sample datasets:
Image-to-video based on the first frame: Training set, Validation set.
Image-to-video based on the first and last frames: Training set, Validation set.
Upload a dataset
API description: Uploads a local dataset in .zip format to Model Studio to obtain a unique file ID (id).
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-dataRequest 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 | @"./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/jsonRequest parameters
Field | Parameter passing | Type | Required | Description | Example |
model | Body | string | Yes | The base model to use for fine-tuning.
| 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 |
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: 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: 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 ≥ 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: 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 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 | 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 This parameter specifies the maximum number of validation sets:
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 |
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.
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 |
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 | 8 |
output.output_cnt | integer | The actual number of saved checkpoints. This value is less than or equal to | 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/jsonRequest parameters
Field | Parameter passing | Type | Required | Description | Example |
model_name | Body | string | Yes | The name of the model to deploy.
| 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 |
aigc_config | Body | object | Yes | Prompt settings. | - |
aigc_config.use_input_prompt | Body | boolean | Yes | Controls the prompt generation logic for API calls.
| false |
aigc_config.prompt | Body | string | Yes | A preset prompt template. This parameter takes effect only when 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 If generation fails using | Then the s86b5p money rain effect begins... For more information, see Request example |
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 |
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.
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 | 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:
| 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-resultsRequest 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=10Request 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 thejob_idvalue 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 | 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 |
Request example
<replace_with_fine_tuning_job_id>: Replace this placeholder with thejob_idvalue 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}/checkpointsRequest 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 | 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:
| 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:
Deploy a model: For the
model_nameinput parameter, enter the value that you obtained after the export.