1. Deskripsi Operasi API
Operasi ini bersifat asinkron. Setelah permintaan dikirim, sistem akan mengembalikan ID tugas dan menjalankan tugas di latar belakang. Anda dapat menggunakan ID tugas untuk memeriksa hasil dari tugas konten yang dihasilkan kecerdasan buatan (AIGC).
2. Endpoint
https://industrysolutions.alibabacloud.com
3. URI Operasi
/openapi/v1/aigc/submitTask
4. Metode Permintaan
POST (application/json)
5. Parameter Permintaan
Parameter | Tipe | Diperlukan | Deskripsi |
workflow | string | ya | Pengenal algoritma AIGC: "IMAGE2VIDEO" merepresentasikan gambar-ke-video; "CATVTON" merepresentasikan penukaran pakaian; "TEXT2IMAGE" merepresentasikan teks-ke-gambar. |
version | string | ya | Versi algoritma AIGC, seperti 1.0.0. |
algoInput | object | ya | Input algoritma AIGC. Input bervariasi berdasarkan algoritma. Untuk informasi lebih lanjut tentang input untuk penukaran pakaian, lihat bagian berikutnya. |
6. Parameter algoInput
6.1. Algoritma Gambar-ke-Video
Parameter | Tipe | Diperlukan | Deskripsi |
inputText | string | ya | Teks prompt, dengan panjang string ≤ 500 |
inputImage | string | ya | Gambar input, alamat gambar harus dapat diakses melalui Internet.
|
6.2. Algoritma Teks-ke-Gambar
Parameter | Tipe | Diperlukan | Deskripsi |
inputText | string | ya | Teks prompt, dengan panjang string ≤ 500 |
width | int | ya | Lebar gambar |
height | int | ya | Tinggi gambar |
6.3. Algoritma Penukaran Pakaian
Parameter | Tipe | Diperlukan | Deskripsi |
modelImage | string | ya | Gambar model. Alamat gambar harus dapat diakses melalui Internet.
|
garmentImage | string | ya | Gambar pakaian. Alamat gambar harus dapat diakses melalui Internet.
|
category | string | ya | Jenis penukaran pakaian. Nilai valid: upper: menukar pakaian di atas pinggang. lower: menukar pakaian di bawah pinggang. overall: menukar pakaian pada seluruh tubuh |
seed | int | ya | Nilai valid: 0 hingga 2147483647. Seed acak, yang digunakan untuk mengontrol keacakan selama proses pembuatan gambar. Anda dapat menyesuaikan nilai seed untuk mengubah gaya atau detail gambar. Kondisi input yang sama dan nilai seed yang sama menghasilkan gambar yang sama. |
7. Parameter Respons
Parameter | Tipe | Deskripsi |
success | boolean | Menunjukkan apakah permintaan berhasil. true: Permintaan berhasil. false: Permintaan gagal. |
model | string | ID tugas, yang dapat digunakan untuk memeriksa hasil tugas. |
errorCode | string | Kode kesalahan. Kode kesalahan dikembalikan jika permintaan gagal. Untuk informasi lebih lanjut tentang kode kesalahan dan pesan, lihat tabel di bagian "8. Pesan kesalahan umum" dari topik ini. |
errorMsg | string | Pesan kesalahan. Pesan kesalahan dikembalikan jika operasi gagal. |
8. Pesan kesalahan umum
Pesan kesalahan | Deskripsi |
INTCNN_COMMON_AUTH_CHECK_ERROR | Kesalahan verifikasi tanda tangan. |
INTCNN_COMMON_NOT_FOUND | Operasi API tidak ada. |
INTCNN_COMMON_PARAM_VALID_ERROR | Kesalahan verifikasi parameter. |
INTCNN_COMMON_SYS_ERROR | Kesalahan tidak dikenal di server. |
9. Contoh permintaan
9.1. Gambar-ke-Video
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": "Seseorang sedang berjalan di sepanjang jalan sempit, dikelilingi oleh alam.",
"inputImage": "https://img.alicdn.com/imgextra/i2/O1CN01DspKG11ZLZjy0JKAf_!!6000000003178-0-tps-999-750.jpg"
}
}'9.1. Teks-ke-Gambar
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": "seekor kucing",
"width": 1024,
"height": 1024
}
}'9.2. Penukaran Pakaian
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
}
}'10. Contoh respons
{
"success": true,
"model": "28fdf560-249a-4712-adcc-906c0346602b",
"errorCode": null,
"errorMsg": null
}11. Tanda tangan permintaan
Untuk mencegah pemalsuan data, pemanggil API harus menandatangani permintaan dan server harus menggunakan tanda tangan untuk memverifikasi identitas pemanggil API. Penggunaan tanda tangan memastikan keamanan interaksi antara pengembang dan Platform Aplikasi Bisnis SuperApp.
11.1 Elemen tanda tangan
11.1.1. URI Permintaan
Asumsikan bahwa URL permintaan adalah https://{domainName}/openapi/v1/a/b.
Dalam hal ini, URI permintaan adalah /openapi/v1/a/b.
11.1.2. Metode Permintaan
Metode permintaan HTTP.
11.1.3. Header Permintaan
Tabel berikut menjelaskan bidang dalam header permintaan. Bidang bersifat peka huruf besar-kecil.
Header | Diperlukan | Deskripsi | Contoh kode |
X-Request-Sign | Ya | String tanda tangan yang dihitung untuk permintaan ini. Metode enkripsi default dari string tanda tangan adalah HMAC-SHA1. | X-Request-Sign: **** |
X-Access-Key | Ya | Pair AccessKey yang mewakili identitas pemanggil API. | X-Access-Key: Pair AccessKey yang diberikan kepada pemanggil API oleh Alibaba Cloud. Untuk mendapatkan ID AccessKey dan Rahasia AccessKey Anda, hubungi insinyur operasi Platform Aplikasi Bisnis SuperApp. |
X-Request-Timestamp | Ya | Timestamp permintaan. Unit: milidetik. | X-Timestamp: timestamp. Contoh: 1740471900061. |
x-acs-request-id | Ya | ID Permintaan | x-acs-request-id: ID Permintaan, UUID yang dibuat secara acak. Contoh: 51843d00-ef53-47f8-ac03-6bfc219ba1eb |
11.1.4. Body Permintaan
Body permintaan dalam format JSON. Bidang dalam body permintaan bervariasi berdasarkan operasi API.
11.2 Metode tanda tangan
Buat dan enkode string-to-sign. Sertakan parameter berikut dalam permintaan:
HTTP_URI: seperti /openapi/v1/a/b
X-Access-Key: seperti 46b1cac78ed94ca4b99ad6de550a****
X-Request-Timestamp: seperti 1676904384074
HTTP_BODY: Blok kode berikut menunjukkan contoh body:
{
"appId": "223232323****",
"authClientId": "7230000****,
"grantType": "authorization_code",
"authCode": "1cc19911172e4f8aaa509c8fb5d1****"
}Konfigurasikan
{Content_To_Be_Signed}dalam format berikut untuk menyusun string-to-sign:<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.46b1cac78ed94ca4b99ad6de550afb68Contoh kode berikut menunjukkan cara menghasilkan tanda tangan untuk string-to-sign menggunakan algoritma 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 Kirim permintaan
Tambahkan bidang Client-Id, Request-Time, dan Signature ke header permintaan untuk menyusun permintaan berikut:
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****"
}'