1. Descrição da operação de API
Envia uma tarefa de AIGC de forma assíncrona. A operação retorna um ID de tarefa para consulta do resultado.
2. Endpoint
https://industrysolutions.alibabacloud.com
3. URI da operação
/openapi/v1/aigc/submitTask
4. Método de solicitação
POST(application/json)
5. Parâmetros da solicitação
|
Parameter |
Type |
Required |
Description |
|
workflow |
string |
yes |
Identificador do algoritmo de AIGC. Valores válidos: "IMAGE2VIDEO": imagem para vídeo. "CATVTON": troca de roupas. "TEXT2IMAGE": texto para imagem. |
|
version |
string |
yes |
Versão do algoritmo de AIGC. Exemplo: 1.0.0. |
|
algoInput |
object |
yes |
Entrada do algoritmo de AIGC. Os parâmetros variam conforme o algoritmo. Consulte as tabelas de parâmetros algoInput abaixo. |
6. Parâmetros de algoInput
6,1. Algoritmo de Imagem para Vídeo
|
Parameter |
Type |
Required |
Description |
|
inputText |
string |
yes |
Texto do prompt. Comprimento máximo: 500 caracteres. |
|
inputImage |
string |
yes |
URL da imagem de entrada. Deve ter acesso público.
|
6,2. Algoritmo de Texto para Imagem
|
Parameter |
Type |
Required |
Description |
|
inputText |
string |
yes |
Texto do prompt. Comprimento máximo: 500 caracteres. |
|
width |
int |
yes |
Largura da imagem |
|
height |
int |
yes |
Altura da imagem |
6,3. Algoritmo de Troca de Roupas
|
Parameter |
Type |
Required |
Description |
|
modelImage |
string |
yes |
URL da imagem do modelo. Deve ter acesso público.
|
|
garmentImage |
string |
yes |
URL da imagem da roupa. Deve ter acesso público.
|
|
category |
string |
yes |
Tipo de troca de roupa. Valores válidos: upper: acima da cintura. lower: abaixo da cintura. overall: corpo inteiro. |
|
seed |
int |
yes |
Semente aleatória para geração de imagem. Valores válidos: 0 a 2147483647. A mesma semente com a mesma entrada produz a mesma saída. |
7. Parâmetros de resposta
|
Parameter |
Type |
Description |
|
success |
boolean |
Indica se a solicitação foi bem-sucedida. Valores válidos: true, false. |
|
model |
string |
ID da tarefa. Use este ID para consultar o resultado da tarefa. |
|
errorCode |
string |
Código de erro retornado quando a solicitação falha. Os códigos de erro válidos estão listados na seção "8. Mensagens de erro comuns". |
|
errorMsg |
string |
Mensagem de erro retornada quando a solicitação falha. |
8. Mensagens de erro comuns
|
Error message |
Description |
|
INTCNN_COMMON_AUTH_CHECK_ERROR |
Erro de verificação de assinatura. |
|
INTCNN_COMMON_NOT_FOUND |
A operação de API não existe. |
|
INTCNN_COMMON_PARAM_VALID_ERROR |
Erro de verificação de parâmetro. |
|
INTCNN_COMMON_SYS_ERROR |
Erro desconhecido no servidor. |
9. Exemplo de solicitação
9,1. Imagem para Vídeo
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": "A person is walking along a narrow path, surrounded by nature.",
"inputImage": "https://img.alicdn.com/imgextra/i2/O1CN01DspKG11ZLZjy0JKAf_!!6000000003178-0-tps-999-750.jpg"
}
}'
9,2. Texto para Imagem
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
}
}'
9,3. Troca de Roupas
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. Exemplo de resposta
{
"success": true,
"model": "28fdf560-249a-4712-adcc-906c0346602b",
"errorCode": null,
"errorMsg": null
}
11. Assinatura da solicitação
As assinaturas de solicitação evitam adulteração de dados e verificam a identidade do chamador da API.
11,1 Elementos da assinatura
11.1.1. URI da solicitação
Suponha que a URL da solicitação seja https://{domainName}/openapi/v1/a/b.
Nesse caso, a URI da solicitação é /openapi/v1/a/b.
11.1.2. Método da solicitação
O método de solicitação HTTP.
11.1.3. Cabeçalho da solicitação
Os campos do cabeçalho da solicitação diferenciam maiúsculas de minúsculas.
|
Header |
Required |
Description |
Code sample |
|
X-Request-Sign |
Yes |
A assinatura da solicitação. Algoritmo padrão: HMAC-SHA1. |
X-Request-Sign: **** |
|
X-Access-Key |
Yes |
O AccessKey ID do chamador da API. |
X-Access-Key: Seu AccessKey ID. Entre em contato com a equipe de operações da Plataforma de Aplicativos de Negócios do SuperApp para obter seu par de AccessKey. |
|
X-Request-Timestamp |
Yes |
O timestamp da solicitação. Unidade: milissegundos. |
X-Timestamp: timestamp. Exemplo: 1740471900061. |
|
x-acs-request-id |
Yes |
ID da solicitação |
x-acs-request-id: Um UUID gerado aleatoriamente. Exemplo: 51843d00-ef53-47f8-ac03-6bfc219ba1eb |
11.1.4. Corpo da solicitação
O corpo da solicitação está formatado em JSON. Os campos variam conforme a operação de API.
11,2 Método de assinatura
-
Componha e codifique uma string a ser assinada. Inclua os seguintes parâmetros na solicitação:
HTTP_URI: como /openapi/v1/a/b
X-Access-Key: como 46b1cac78ed94ca4b99ad6de550a****
X-Request-Timestamp: como 1676904384074
HTTP_BODY : O bloco de código a seguir mostra um exemplo de corpo:
{
"appId": "223232323****",
"authClientId": "7230000****,
"grantType": "authorization_code",
"authCode": "1cc19911172e4f8aaa509c8fb5d1****"
}
Configure
{Content_To_Be_Signed}no seguinte formato para compor a string a ser assinada:<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
Gere uma assinatura usando o algoritmo 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 Envie a solicitação
Adicione Client-Id, Request-Time e Signature ao cabeçalho da solicitação:
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****"
}'