1. 接口说明
根据“提交AIGC任务”接口返回的 taskId 查询任务结果
2. 服务接入地址
https://industrysolutions.alibabacloud.com
3. 接口URI
/openapi/v1/aigc/queryTask
4. 请求Method
GET
5. 请求参数
参数名 | 类型 | 是否必传 | 说明 |
taskId | string | yes | 提交aigc任务接口返回的taskId |
6. 接口响应
参数名 | 子参数 | 类型 | 说明 |
success | boolean | 是否调用成功:true:调用成功,false:调用失败 | |
model | object | 生成的taskId,后续用于查询任务执行结果 | |
taskId | string | 任务ID | |
status | string | WAITING: 待调度 RUNNING: 执行中 SUCCESS: 成功 AIGC_ERROR: 算法异常 LW_REQUEST_ERROR: 请求异常 LW_RESULT_ERROR: 结果异常 TIMEOUT: 超时 FC_ERROR:函数异常 UNKNOWN_ERROR: 未知异常 SUBMIT_ERROR:接口异常 | |
ossPath | string | 当status为“SUCCESS”返回图片的公网url地址 | |
errorCode | string | 异常状态码。当接口调用失败时有值。状态码参考后续文档。 | |
errorMsg | string | 异常信息。当接口调用失败时有值。 |
7. 常用异常状态码
异常状态码 | 异常信息描述 |
INTCNN_COMMON_AUTH_CHECK_ERROR | 签名校验错误 |
INTCNN_COMMON_NOT_FOUND | 接口不存在 |
INTCNN_COMMON_PARAM_VALID_ERROR: | 参数校验异常 |
INTCNN_COMMON_SYS_ERROR | 服务端未知异常 |
8. 请求示例
curl --location 'https://industrysolutions.alibabacloud.com/openapi/v1/aigc/queryTask?taskId=65111151-ac20-4f90-8ea7-263ef42db5e5' \
--header 'X-Request-Id: db160925-0b58-4609-bc6e-08cdf12bf2e6' \
--header 'X-Access-Key: 5017114*******' \
--header 'X-Request-Sign: 7894db2a4*******c23976d6d42c93e' \
--header 'X-Request-Timestamp: 1736162679922'9. 响应示例
{
"success": true,
"model": {
"taskId": "28fdf560-249a-4712-adcc-906c0346602b",
"status": "SUCCESS",
"ossPath": "http://superapp.oss-ap-southeast-1.aliyuncs.com/%5B%5D?Expires=1738915150&OSSAccessKeyId=LTfdfaFPkwJtb&Signature=ju0HvkN8nhr%2Fqv3JYyfdfxK1B%2Bk%3D"
},
"errorCode": null,
"errorMsg": null
}
注:结果链接时效为24小时,请及时保存结果。
10. 接口签名
请求端需要对请求的内容进行签名,服务端进行验签,以证明内容没有被篡改,从而保障开发者应用和开放平台交互的安全性。
10.1. 签名涉及要素
10.1.1. Request URI
如请求地址为:https://{domainName}/openapi/v1/a/b
则requestURI为:/openapi/v1/a/b
10.1.2. Request Method
http请求的method。
10.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 |
10.1.4. Request QueryString
get请求的参数,?后面的部分。如https://{domainName}/openapi/v1/a/b?param1=xx¶m2=yy
则QueryString为:param1=xx¶m2=yy
10.2. 签名方式
首先需要构造用于加签的content,每次请求都会有以下属性:
HTTP_URI : 例如 /openapi/v1/a/b
HTTP_QUERY_STRING : param1=xx¶m2=yy
X-Access-Key:46b1cac78ed94ca4b99ad6de550a****
X-Request-Timestamp:1676904384074
基于以上信息,
{Content_To_Be_Signed}的格式如下,我们可以构造出需要加签的content。<HTTP_URI> ?<HTTP_QUERY_STRING><Request-Time><Access-Key>
/openapi/v1/a/b?param1=xx¶m2=yy167690438407446b1cac78ed94ca4b99ad6de550a****
使用HmacSHA1算法,以下的代码示例展示了如何加签一个请求。
public String computeGetSign(String accessKey,String secretKey,String timestamp,String uri,String queryString) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(uri);
if (StringUtils.isNotBlank(queryString)) {
stringBuilder.append("?");
stringBuilder.append(queryString);
}
if (StringUtils.isNotBlank(timestamp)) {
stringBuilder.append(timestamp);
}
if (StringUtils.isNotBlank(ak)) {
stringBuilder.append(accessKey);
}
return generateSign(stringBuilder.toString(), secretKey, SIGN_ALGORITHM);
}
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();
}
10.3. 发送请求
通过将Client-Id、Request-Time和Signature添加到请求头,可以构造出如下请求:
curl --location 'https://example.com/openapi/v1/a/b?param1=xx¶m2=yy' \
--header 'X-Request-Id: db160925-0b58-4609-bc6e-08cdf12bf2e6' \
--header 'X-Access-Key: 5017114*******' \
--header 'X-Request-Sign: 7894db2a4*******c23976d6d42c93e' \
--header 'X-Request-Timestamp: 1736162679922'