全部產品
Search
文件中心

SuperApp:提交AIGC任務介面

更新時間:Mar 29, 2025

1. 介面說明

非同步提交AIGC任務,任務提交後會立即返回一個taskId,後續可以使用taskId通過“查詢AIGC任務”介面,查詢生圖結果。

2. 服務接入地址

https://industrysolutions.alibabacloud.com

3. 介面URI

/openapi/v1/aigc/submitTask

4. 請求Method

POST(application/json)

5. 請求參數

參數名

類型

是否必傳

說明

workflow

string

yes

aigc 演算法標識,如:

"IMAGE2VIDEO"代表圖生視頻;

"CATVTON" 代表換裝;

"TEXT2IMAGE" 代表文生圖。

version

string

yes

aigc演算法版本。如“1.0.0”

algoInput

object

yes

aigc生圖演算法輸入,不同的演算法有不同的輸入。換裝輸入參考後續文檔。

6. algoInput 參數

6.1. 圖生視頻演算法

參數名

類型

是否必傳

說明

inputText

string

yes

提示詞,字串長度≤500

inputImage

string

yes

輸入圖片,必須為公網可訪問的圖片地址。

  • 5KB≤影像檔≤5M

  • 150≤映像邊長≤4096

  • 格式支援:jpg、png、jpeg、bmp

6.2. 換裝演算法

參數名

類型

是否必傳

說明

modelImage

string

yes

模特圖片,必須為公網可訪問的圖片地址。

  • 5KB≤影像檔≤5M

  • 150≤映像邊長≤4096

  • 格式支援:jpg、png、jpeg、bmp

garmentImage

string

yes

衣服圖片,必須為公網可訪問的圖片地址。

  • 5KB≤影像檔≤5M

  • 150≤映像邊長≤4096

  • 格式支援:jpg、png、jpeg、bmp

category

string

yes

換裝類型:

upper: 更換上身衣服 lower: 更換下身衣服 overall: 更換全身衣服

seed

int

yes

取值範圍:0~2147483647。隨機種子,用於控製圖像產生過程中的隨機性。調整seed值可以產生不同的映像變化,用於探索不同的風格或細節。同樣的輸入條件和相同的seed值會產生一致的結果。

6.3. 文生圖演算法

參數名

類型

是否必傳

說明

inputText

string

yes

提示詞,字串長度≤500

width

int

yes

圖片寬度

height

int

yes

圖片高度

7. 介面響應

參數名

類型

說明

success

boolean

是否調用成功:true:調用成功,false:調用失敗

model

string

產生的taskId,後續用於查詢任務執行結果

errorCode

string

異常狀態代碼。當介面調用失敗時有值。狀態代碼參考後續文檔。

errorMsg

string

異常資訊。當介面調用失敗時有值。

8. 常用異常狀態代碼

異常狀態代碼

異常資訊描述

INTCNN_COMMON_AUTH_CHECK_ERROR

簽名校正錯誤

INTCNN_COMMON_NOT_FOUND

介面不存在

INTCNN_COMMON_PARAM_VALID_ERROR:

參數校正異常

INTCNN_COMMON_SYS_ERROR

服務端未知異常

9. 請求樣本

9.1. 圖生視頻

curl --location 'https://industrysolutions.alibabacloud.com/openapi/v1/aigc/submitTask' \
--header 'X-Access-Key: 501711*****45218' \
--header 'X-Request-Sign: YmM4Yzg4ZTc3Z****************FkODdlYTRmMWFiOTBmYTMwMw==' \
--header 'X-Request-Timestamp: 1741855077857' \
--header 'x-acs-request-id: 893e87bb-6083-4249-aedd-a376cac24bee' \
--header 'Content-Type: application/json' \
--data '{
    "workflow": "IMAGE2VIDEO",
    "version": "1.0.0",
    "algoInput": {
        "inputText": "一個人在走路",
        "inputImage": "https://img.alicdn.com/imgextra/i2/O1CN01DspKG11ZLZjy0JKAf_!!6000000003178-0-tps-999-750.jpg"
    }
}'

9.2. 換裝

curl --location 'https://industrysolutions.alibabacloud.com/openapi/v1/aigc/submitTask' \
--header 'x-acs-request-id: 51843d00-ef53-47f8-ac03-6bfc219ba1eb' \
--header 'X-Access-Key: 5017114*******' \
--header 'X-Request-Sign: NjcxNTQy**************wMjZjZWU1YjQxZTcwYQ==' \
--header 'X-Request-Timestamp: 1739518571992' \
--header 'Content-Type: application/json' \
--data '{
    "workflow": "CATVTON", 
    "version": "1.0.0", 
    "algoInput":{ 
        "modelImage": "https://gw.alicdn.com/imgextra/i4/O1CN0162LlIZ1HJ8VZPst5A_!!6000000000736-2-tps-789-987.png",
        "garmentImage": "https://gw.alicdn.com/imgextra/i1/O1CN01M2oIt71KIAWJhtK8f_!!6000000001140-2-tps-789-987.png",
        "category": "overall",
        "seed": 43
    }
}'

9.3. 文生圖

curl --location 'https://industrysolutions.alibabacloud.com/openapi/v1/aigc/submitTask' \
--header 'X-Access-Key: 501711*****45218' \
--header 'X-Request-Sign: YmM4Yzg4ZTc3Z****************kODdlYTRmMWFiOTBmYTMwMw==' \
--header 'X-Request-Timestamp: 1741855077857' \
--header 'x-acs-request-id: 893e87bb-6083-4249-aedd-a376cac24bee' \
--header 'Content-Type: application/json' \
--data '{
    "workflow": "TEXT2IMAGE",
    "version": "1.0.0",
    "algoInput": {
        "inputText": "a cat",
        "width": 1024, 
        "height": 1024
    }
}'

10. 響應樣本

{
 "success": true,
 "model": "28fdf560-249a-4712-adcc-906c0346602b",
 "errorCode": null,
 "errorMsg": null
}

11. 介面簽名

請求端需要對請求的內容進行簽名,服務端進行驗簽,以證明內容沒有被篡改,從而保障開發人員應用和開放平台互動的安全性。

11.1. 簽名涉及要素

11.1.1. Request URI

如請求地址為:https://{domainName}/openapi/v1/a/b

則requestURI為:/openapi/v1/a/b

11.1.2. Request Method

http請求的method。

11.1.3. Request Header

要求標頭主要包含以下幾個Fields(Field是大小寫敏感的)。

Header

Required

Description

Code sample

X-Request-Sign

Yes

本次請求產生的簽名,預設為HmacSHA1。

X-Request-Sign:****

X-Access-Key

Yes

請求方的身份識別ID,AccessKey。

X-Access-Key:頒發給使用者的AccessKey。客戶的ak、sk請線下聯絡superapp開放平台營運人員擷取。

X-Request-Timestamp

Yes

時間戳記(毫秒)

X-Timestamp:時間戳記。如:1740471900061

x-acs-request-id

Yes

請求id

x-acs-request-id:請求id,隨機產生的UUID。如:51843d00-ef53-47f8-ac03-6bfc219ba1eb

11.1.4. Request Body

Body為JSON格式的詳細請求資訊,其中的欄位因介面而異。

11.2. 簽名方式

  1. 首先需要構造用於加簽的content,每次請求都會有以下屬性:

    • HTTP_URI : 例如 /openapi/v1/a/b

    • X-Access-Key:46b1cac78ed94ca4b99ad6de550a****

    • X-Request-Timestamp:1676904384074

    • HTTP_BODY : body 舉例如下:

{
	"appId": "223232323****",
	"authClientId": "7230000****,
	"grantType": "authorization_code",
	"authCode": "1cc19911172e4f8aaa509c8fb5d1****"
}
  1. 基於以上資訊,{Content_To_Be_Signed}的格式如下,我們可以構造出需要加簽的content。<HTTP_METHOD> <HTTP_URI> <Client-Id>.<Request-Time>.<Access-Key>

POST /openapi/v1/a/b
{
	"appId": "223232323****",
	"authClientId": "7230000****",
	"grantType": "authorization_code",
	"authCode": "1cc19911172e4f8aaa509c8fb5d1****"
}.1676904384074.46b1cac78ed94ca4b99ad6de550afb68
  1. 使用HmacSHA1演算法,以下的程式碼範例展示了如何加簽一個請求。


public String sign(String accessKey,String secretKey,String timestamp,String uri,byte[] bodyBytes) {
    String content = String.format("POST %s\n%s.%s.%s", uri, new String(bodyBytes), timestamp, accessKey);
    String signed = generateSign(content, secretKey, "HmacSHA1");
    return Base64.getEncoder().encodeToString(signed.getBytes(StandardCharsets.UTF_8));
}


public static String generateSign(String content, String key, String algorithm) {
    if (!StringUtils.isEmpty(algorithm) && !StringUtils.isEmpty(content) && null != key) {
        try {
            SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), algorithm);
            Mac mac = Mac.getInstance(algorithm);
            mac.init(signinKey);
            byte[] rawHmac = mac.doFinal(content.getBytes());
            return convertToHex(rawHmac);
        } catch (InvalidKeyException | NoSuchAlgorithmException var6) {
            return "";
        }
    } else {
        return "";
    }
}


public static String convertToHex(byte[] bytes) {
    int len = bytes.length;
    StringBuilder buf = new StringBuilder(len * 2);

    for(int j = 0; j < len; ++j) {
        buf.append(HEX[bytes[j] >> 4 & 15]);
        buf.append(HEX[bytes[j] & 15]);
    }

    return buf.toString();
}

11.3. 發送請求

通過將Client-Id、Request-Time和Signature添加到要求標頭,可以構造出如下請求:

curl -X POST \
  https://example.com/openapi/v1/a/b \
  -H 'Content-Type: application/json' \
  -H 'X-Access-Key: 46b1cac78ed94ca4b99ad6de550afb68' \
  -H 'X-Request-Timestamp: 1676904384074' \
  -H 'Signature: KrwDE9tAPJYBb4cUZU6ALJxGIZgwDXn5UkFPMip09n%2FkYKPhEIII%2Fki2rYY2lPtuKVgMNz%2BtuCU%2FjzRpohDbrOd8zYriiukpGAxBQDIVbatGI7WYOcc9YVQwdCR6ROuRQvr%2FD1AfdhHd6waAASu5Xugow9w1OW7Ti93LTd0tcyEWQYd2S7c3A73sHOJNYl8DC1PjasiBozZ%2FADgb7ONsqHo%2B8fKHsLygX9cuMkQYTGIRBQsvfgICnJhh%2BzXV8AQoecJBTrv6p%xxxx' \
  -d '{
	"appId": "223232323****",
	"authClientId": "7230000****",
	"grantType": "authorization_code",
	"authCode": "1cc19911172e4f8aaa509c8fb5d1****"
}'