Skip to main content
萬相-早期視頻模型(2.1-2.6)

萬相-首尾幀生視頻API參考(2.2)

萬相2.2-首尾幀生視頻模型基於 首幀映像 、 尾幀映像和文本提示詞 ,產生一段平滑過渡的視頻。

相關文檔使用指南

適用範圍

為確保調用成功,請務必保證模型、Endpoint URL 和 API Key 均屬於同一地區。跨地區調用將會失敗。
本文的範例程式碼適用於新加坡地區
阿里雲百鍊為華北2(北京)、新加坡地區推出了業務空間專屬網域名稱,能夠為推理請求提供卓越的效能和更高的穩定性,建議遷移至新網域名稱:
  • 華北2(北京)地區:從 https://dashscope.aliyuncs.com 遷移至 https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • 新加坡地區:從 https://dashscope-intl.aliyuncs.com 遷移至 https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
其中 {WorkspaceId} 為您的業務空間 ID,可在阿里雲百鍊控制台的業務空間詳情頁面查看。現有網域名稱仍可正常使用。

HTTP調用

由於圖生視頻任務耗時較長(通常為1-5分鐘),API採用非同步呼叫。整個流程包含 “建立任務 -> 輪詢擷取” 兩個核心步驟,具體如下:

步驟1:建立任務擷取任務ID

  • 新加坡
  • 北京
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis調用時請將{WorkspaceId}替換為真實的業務空間ID
  • 建立成功後,使用介面返回的 task_id 查詢結果,task_id 有效期間為 24 小時。請勿重複建立任務,輪詢擷取即可。
  • 新手指引請參見Postman

請求參數

要求標頭(Headers)
Content-Typestring(必選)請求內容類型。此參數必須設定為application/jsonAuthorizationstring(必選)請求身份認證。介面使用阿里雲百鍊API Key進行身份認證。樣本值:Bearer sk-xxxx。X-DashScope-Asyncstring(必選)非同步處理配置參數。HTTP請求只支援非同步,必須設定為enable
缺少此要求標頭將報錯:“current user api does not support synchronous calls”。
請求體(Request Body)
model string (必選)模型名稱。樣本值:wan2.2-kf2v-flash。詳情參見百鍊控制台。input object (必選)輸入的基本資料,如提示詞等。

屬性

prompt string (可選)文本提示詞。支援中英文,長度不超過800個字元,每個漢字/字母佔一個字元,超過部分會自動截斷。如果首尾幀的主體和情境變化較大,建議描寫變化過程,例如運鏡過程(鏡頭向左移動)或者主體運動過程(人向前奔跑)。樣本值:一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。提示詞的提示請參見文生視頻/圖生視頻Prompt指南negative_prompt string (可選)反向提示詞,用來描述不希望在視頻畫面中看到的內容,可以對視頻畫面進行限制。支援中英文,長度不超過500個字元,超過部分會自動截斷。樣本值:低解析度、錯誤、最差品質、低品質、殘缺、多餘的手指、比例不良等。first_frame_url string (必選)首幀映像URL。輸出視頻的寬高比與首幀映像保持一致。URL 需為公網可訪問地址,支援 HTTP 或 HTTPS 協議。映像限制:
  • 映像格式:JPEG、JPG、PNG(不支援透明通道)、BMP、WEBP。
  • 映像解析度:映像的寬度和高度範圍為[240,8000],單位為像素。
  • 檔案大小:不超過10MB。
last_frame_url string (必選)尾幀映像URL。URL 需為公網可訪問地址,支援 HTTP 或 HTTPS 協議。映像限制:
  • 映像格式:JPEG、JPG、PNG(不支援透明通道)、BMP、WEBP。
  • 映像解析度:映像的寬度和高度範圍為[240,8000],單位為像素。尾幀映像解析度可與首幀不同,無需強制對齊。
  • 檔案大小:不超過10MB。
parameters object (可選)視頻處理參數。

屬性

resolution string (可選)
resolution直接影響費用,同一模型:1080P > 720P > 480P,調用前請確認百鍊控制台。
產生的視頻解析度檔位。僅用於調整視頻的清晰度(總像素),不改變視頻的寬高比,視頻寬高比將與首幀映像 first_frame_url 的寬高比保持一致此參數的預設值和可用枚舉值依賴於 model 參數,規則如下:
  • wan2.2-kf2v-flash:可選值:480P、720P、1080P。預設值為720P
  • wan2.1-kf2v-plus:可選值:720P。預設值為720P
樣本值:720P。duration integer (可選)
duration直接影響費用,按秒計費,調用前請確認百鍊控制台。
視頻產生時間長度,單位為秒。當前參數值固定為5,且不支援修改。模型將始終產生5秒時間長度的視頻。prompt_extendbool (可選)是否開啟prompt智能改寫。開啟後使用大模型對輸入prompt進行智能改寫。對於較短的prompt產生效果提升明顯,但會增加耗時。
  • true:預設值,開啟智能改寫。
  • false:不開啟智能改寫。
樣本值:true。watermark bool (可選)是否添加浮水印標識,浮水印位於圖片右下角,文案為“AI產生”。
  • false:預設值,不添加浮水印。
  • true:添加浮水印。
樣本值:false。seedinteger(可選)隨機數種子,取值範圍為[0, 2147483647]未指定時,系統自動產生隨機種子。若需提升產生結果的可複現性,建議固定seed值。請注意,由於模型產生具有機率性,即使使用相同 seed,也不能保證每次產生結果完全一致。
  • 首尾幀生視頻
  • 使用反向提示詞
根據首幀、尾幀和prompt產生視頻。
# 以下為新加坡地區URL,調用時請將{WorkspaceId}替換為真實的業務空間ID,各地區的URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.2-kf2v-flash",
    "input": {
        "first_frame_url": "https://wanx.alicdn.com/material/20250318/first_frame.png",
        "last_frame_url": "https://wanx.alicdn.com/material/20250318/last_frame.png",
        "prompt": "寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。"
    },
    "parameters": {
        "resolution": "480P",
        "prompt_extend": true
    }
}'

響應參數

output object任務輸出資訊。

屬性

task_id string任務ID。查詢有效期間24小時。task_status string任務狀態。

枚舉值

  • PENDING:任務排隊中
  • RUNNING:任務處理中
  • SUCCEEDED:任務執行成功
  • FAILED:任務執行失敗
  • CANCELED:任務已取消
  • UNKNOWN:任務不存在或狀態未知
request_idstring請求唯一標識。可用於請求明細溯源和問題排查。codestring請求失敗的錯誤碼。請求成功時不會返回此參數,詳情請參見錯誤碼messagestring請求失敗的詳細資料。請求成功時不會返回此參數,詳情請參見錯誤碼
  • 成功響應
  • 異常響應
請儲存 task_id,用於查詢任務狀態與結果。
{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

步驟2:根據任務ID查詢結果

  • 新加坡
  • 北京
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}調用時請將{WorkspaceId}替換為真實的業務空間ID
  • 輪詢建議:視頻產生過程約需數分鐘,建議採用輪詢機制,並設定合理的查詢間隔(如 15 秒)來擷取結果。
  • 任務狀態流轉:PENDING(排隊中)→ RUNNING(處理中)→ SUCCEEDED(成功)/ FAILED(失敗)。
  • 結果連結:任務成功後返回視頻連結,有效期間為 24 小時。建議在擷取連結後立即下載並轉存至永久儲存(如阿里雲 OSS)。
  • task_id 有效期間24小時,逾時後將無法查詢結果,介面將返回任務狀態為UNKNOWN

請求參數

要求標頭(Headers)
Authorizationstring(必選)請求身份認證。介面使用阿里雲百鍊API Key進行身份認證。樣本值:Bearer sk-xxxx。
URL路徑參數(Path parameters)
task_id string(必選)任務ID。
  • 查詢任務結果
請將86ecf553-d340-4e21-xxxxxxxxx替換為真實的task_id。
各地區的API Key不同。擷取API Key
若使用華北2(北京)地區的模型,需將base_url替換為https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx,其中{WorkspaceId}需替換為真實的業務空間ID。
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

響應參數

outputobject任務輸出資訊。

屬性

task_id string任務ID。查詢有效期間24小時。task_status string任務狀態。

枚舉值

  • PENDING:任務排隊中
  • RUNNING:任務處理中
  • SUCCEEDED:任務執行成功
  • FAILED:任務執行失敗
  • CANCELED:任務已取消
  • UNKNOWN:任務不存在或狀態未知
輪詢過程中的狀態流轉:
  • PENDING(排隊中) → RUNNING(處理中)→ SUCCEEDED(成功)/ FAILED(失敗)。
  • 初次查詢狀態通常為 PENDING(排隊中)或 RUNNING(處理中)。
  • 當狀態變為 SUCCEEDED 時,響應中將包含產生的視頻URL。
  • 若狀態為 FAILED,請檢查錯誤資訊並重試。
  • 若狀態為 CANCELED,表示任務已取消,如需繼續請重新提交任務。
  • 若狀態為 UNKNOWN,表示任務不存在或狀態未知,可能在 task_id 不存在或超過 24 小時有效期間後出現。
submit_time string任務提交時間。時區為UTC+8,格式為 YYYY-MM-DD HH:mm:ss.SSS。scheduled_time string任務執行時間。時區為UTC+8,格式為 YYYY-MM-DD HH:mm:ss.SSS。end_time string任務完成時間。時區為UTC+8,格式為 YYYY-MM-DD HH:mm:ss.SSS。video_urlstring視頻URL。僅在 task_status 為 SUCCEEDED 時返回。連結有效期間24小時,可通過此URL下載視頻。視頻格式為MP4(H.264 編碼)。orig_prompt string原始輸入的prompt,對應請求參數promptactual_prompt string開啟 prompt 智能改寫後,返回實際使用的最佳化後 prompt。若未開啟該功能,則不返回此欄位。codestring請求失敗的錯誤碼。請求成功時不會返回此參數,詳情請參見錯誤碼messagestring請求失敗的詳細資料。請求成功時不會返回此參數,詳情請參見錯誤碼
usage object輸出資訊統計。只對成功的結果計數。

屬性

video_duration integer產生視頻的時間長度,單位秒。枚舉值為5。計費公式:費用 = 視頻秒數 × 單價。video_count integer產生視頻的數量。固定為1。video_ratio string當前僅當2.1模型返回該值。產生視頻的比例,固定為standard。SR integer當前僅當2.2模型返回該值。產生視頻的解析度檔位,枚舉值為480、720、1080。
request_idstring請求唯一標識。可用於請求明細溯源和問題排查。
  • 任務執行成功
  • 任務執行失敗
  • 任務查詢到期
視頻URL僅保留24小時,逾時後會被自動清除,請及時儲存產生的視頻。
{
    "request_id": "ec016349-6b14-9ad6-8009-xxxxxx",
    "output": {
        "task_id": "3f21a745-9f4b-4588-b643-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-04-18 10:36:58.394",
        "scheduled_time": "2025-04-18 10:37:13.802",
        "end_time": "2025-04-18 10:45:23.004",
        "video_url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?xxxxx",
        "orig_prompt": "寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。",
        "actual_prompt": "寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。小貓的黃色眼睛明亮有神,毛髮光滑,鬍鬚清晰可見。背景是簡單的淺色牆面,突顯小貓的黑色身影。近景特寫,強調小貓的表情變化和眼神細節。"
    },
    "usage": {
        "video_duration": 5,
        "video_count": 1,
        "SR": 480
    }
}

DashScope SDK調用

SDK 的參數命名與HTTP介面基本一致,參數結構根據語言特性進行封裝。 由於圖生視頻任務耗時較長(通常為1-5分鐘),SDK 在底層封裝了 HTTP 非同步呼叫流程,支援同步、非同步兩種調用方式。
具體耗時受限於排隊任務數和服務執行情況,請在擷取結果時耐心等待。

Python SDK調用

請確保 DashScope Python SDK 版本不低於1.23.8,再運行以下代碼。若版本過低,可能會觸發 “url error, please check url!” 等錯誤。請參考安裝SDK進行更新。
根據模型所在地區設定 base_http_api_url:
  • 新加坡
  • 北京
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'調用時請將{WorkspaceId}替換為真實的業務空間ID

範例程式碼

  • 同步調用
  • 非同步呼叫
本樣本展示同步調用方式,包括兩種映像輸入方式:公網URL、本地檔案路徑。
請求樣本
import os
from http import HTTPStatus
# dashscope sdk >= 1.23.4
from dashscope import VideoSynthesis
import dashscope

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# 從環境變數中擷取 DashScope API Key(即阿里雲百鍊平台 API key)
api_key = os.getenv("DASHSCOPE_API_KEY")

# ========== 映像輸入方式(二選一)==========
# 【方式一】使用公網圖片 URL
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"

# 【方式二】使用本地檔案路徑(file://+檔案路徑)
# 使用絕對路徑
# first_frame_url = "file://" + "/path/to/your/first_frame.png"  # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png"  # Windows
# 或使用相對路徑
# first_frame_url = "file://" + "./first_frame.png"              # 以實際路徑為準
# last_frame_url = "file://" + "./last_frame.png"                # 以實際路徑為準

def sample_sync_call_kf2v():
    print('please wait...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model="wan2.2-kf2v-flash",
                              prompt="寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。",
                              first_frame_url=first_frame_url,
                              last_frame_url=last_frame_url,
                              resolution="720P",
                              prompt_extend=True)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_sync_call_kf2v()
響應樣本
video_url 有效期間24小時,請及時下載視頻。
{
    "status_code": 200,
    "request_id": "a37fafc3-907c-96f3-95a6-5b2a8268a3fd",
    "code": null,
    "message": "",
    "output": {
        "task_id": "4dba0092-da13-42b2-afb1-0f7b8a0f4643",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx",
        "submit_time": "2025-05-23 15:50:12.404",
        "scheduled_time": "2025-05-23 15:50:12.443",
        "end_time": "2025-05-23 15:54:56.502",
        "orig_prompt": "寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。",
        "actual_prompt": "寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。小貓的黃色眼睛明亮有神,耳朵豎立,鬍鬚清晰可見。背景是簡潔的淺色牆面,突顯小貓的黑色毛髮和專註的表情。近景特寫,強調小貓的眼神變化和姿態。"
    },
    "usage": {
        "video_count": 1,
        "video_duration": 5,
        "video_ratio": "standard"
    }
}

Java SDK調用

請確保 DashScope Java SDK 版本不低於2.20.9,再運行以下代碼。若版本過低,可能會觸發 “url error, please check url!” 等錯誤。請參考安裝SDK進行更新。

範例程式碼

  • 同步調用
  • 非同步呼叫
本樣本展示同步調用方式,包括兩種映像輸入方式:公網URL、本地檔案路徑。
請求樣本
// Copyright (c) Alibaba, Inc. and its affiliates.

// dashscope sdk >= 2.20.1
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.HashMap;
import java.util.Map;

public class Kf2vSyncIntl {

    static {
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // 從環境變數中擷取 DashScope API Key(即阿里雲百鍊平台 API Key)
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * 映像輸入方式(二選一):
     *
     * 【方式一】公網URL
     */
    static String firstFrameUrl = "https://wanx.alicdn.com/material/20250318/first_frame.png";
    static String lastFrameUrl = "https://wanx.alicdn.com/material/20250318/last_frame.png";

     /**
     * 【方式二】本地檔案路徑(file://+絕對路徑 or file:///+絕對路徑)
     */
    // static String firstFrameUrl = "file://" + "/your/path/to/first_frame.png";  // Linux/macOS
    // static String lastFrameUrl = "file:///" + "C:/path/to/your/img.png";        // Windows

    public static void syncCall() {

        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("resolution", "720P");

        VideoSynthesis videoSynthesis = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.2-kf2v-flash")
                        .prompt("寫實風格,一隻黑色小貓好奇地看向天空,鏡頭從平視逐漸上升,最後俯拍它的好奇的眼神。")
                        .firstFrameUrl(firstFrameUrl)
                        .lastFrameUrl(lastFrameUrl)
                        .parameters(parameters)
                        .build();
        VideoSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = videoSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        } catch (InputRequiredException e) {
            throw new RuntimeException(e);
        }
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        syncCall();
    }
}
響應樣本
video_url 有效期間24小時,請及時下載視頻。
{
    "request_id": "e6bb4517-c073-9c10-b748-dedb8c11bb41",
    "output": {
        "task_id": "984784fe-83c1-4fc4-88c7-52c2c1fa92a2",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx"
    },
    "usage": {
        "video_count": 1,
        "video_duration": 5,
        "video_ratio": "standard"
    }
}

使用限制

  • 資料時效:任務task_id和 視頻video_url均只保留 24 小時,到期後將無法查詢或下載。
  • 音頻支援:當前僅支援產生無聲視頻,不支援音訊輸出。如有需要,可通過語音合成產生音頻。
  • 內容審核:輸入prompt 和映像、輸出視頻均會經過Alibaba Content Security Service審核,含違規內容將返回 “IPInfringementSuspect”或“DataInspectionFailed”錯誤,詳情請參見錯誤碼

錯誤碼

如果模型調用失敗並返回報錯資訊,請參見錯誤碼進行解決。

常見問題

Q:如何產生特定寬高比(如3:4)的視頻?

A: 輸出視頻的寬高比由輸入首幀映像(first_frame_url)決定,但無法保證精確比例(如嚴格3:4),會存在一定偏差。
  • 為什麼會有偏差? 模型會以輸入映像的比例為基準,結合設定的解析度檔位(resolution)總像素,自動計算出最接近的合法解析度。由於要求視頻的長和寬必須是 16 的倍數,模型會對最終解析度做微調,因此無法保證輸出比例嚴格等於 3:4,但會非常接近。
    • 例如:輸入映像750×1000(寬高比 3:4 = 0.75),並設定 resolution = "720P"(目標總像素約 92 萬),實際輸出816×1104(寬高比 ≈ 0.739,總像素約90萬)。
  • 實踐建議
    • 輸入控制:盡量使用與目標比例一致的圖片作為首幀輸入。
    • 後期處理:如果您對比例有嚴格要求,建議在視頻產生後,使用編輯工具進行簡單的裁剪或黑邊填充。

Q:如何擷取視頻儲存的訪問網域名稱白名單?

A: 模型產生的視頻儲存於阿里雲OSS,API將返回一個臨時的公網URL。若需要對該下載地址進行防火牆白名單配置,請注意:由於底層儲存會根據業務情況進行動態變更,為避免到期資訊影響訪問,文檔不提供固定的OSS網域名稱白名單。如有安全管控需求,請聯絡客戶經理擷取最新OSS網域名稱列表。
文本產生
映像產生
音頻
Realtime API
  • 概述
向量與排序
模型生產