1. API
「AIGC タスクの送信」 API から返された taskId を使用して、AIGC タスクの結果をクエリします。
2. エンドポイント
https://industrysolutions.alibabacloud.com
3. URI
/openapi/v1/aigc/queryTask
4. メソッド
GET
5. リクエストパラメーター
パラメーター | タイプ | 必須 | 説明 |
taskId | string | はい | AIGC タスクの ID です。タスク送信 API によって返されます。 |
6. 応答
パラメーター | サブパラメーター | タイプ | 説明 |
success | boolean | API 呼び出しが成功したかどうかを示します。値が | |
model | object | タスク詳細のコンテナです。 | |
taskId | string | タスクの ID です。 | |
status | string |
| |
ossPath | string | 生成されたイメージのパブリック URL です。このパラメーターは、タスクの | |
errorCode | string | リクエストが失敗した場合に返されるエラーコードです。詳細については、「7. エラーコード」セクションをご参照ください。 | |
errorMsg | string | リクエストが失敗した場合に返されるエラーメッセージです。 |
7. エラーコード
エラーコード | 説明 |
INTCNN_COMMON_AUTH_CHECK_ERROR | 署名検証に失敗しました。 |
INTCNN_COMMON_NOT_FOUND | API が存在しません。 |
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. リクエスト URI
リクエスト URL が https://{domainName}/openapi/v1/a/b の場合、
リクエスト URI は /openapi/v1/a/b です。
10.1.2. リクエストメソッド
HTTP リクエストメソッドです。
10.1.3. リクエストヘッダー
リクエストヘッダーには、次のフィールドを含める必要があります。フィールド名では大文字と小文字が区別されます。
ヘッダー | 必須 | 説明 | コード例 |
X-Request-Sign | はい | リクエストに対して生成された署名です。デフォルトの署名アルゴリズムは HmacSHA1 です。 | X-Request-Sign: **** |
X-Access-Key | はい | リクエスターを識別するために使用される AccessKey です。 | AccessKey ID とシークレットを取得するには、SuperApp ビジネスアプリケーションプラットフォームの運用チームにご連絡ください。 |
X-Request-Timestamp | はい | リクエストタイムスタンプ (ミリ秒) です。 | X-Request-Timestamp: 1740471900061 |
10.1.4. リクエストクエリ文字列
クエリ文字列は、GET リクエストの ? に続くパラメーターで構成されます。たとえば、URL https://{domainName}/openapi/v1/a/b?param1=xx¶m2=yy の場合、
クエリ文字列は param1=xx¶m2=yy です。
10.2. 署名の生成
次のコンポーネントから署名対象文字列を構築します:
HTTP_URI: /openapi/v1/a/b
HTTP_QUERY_STRING: param1=xx¶m2=yy
X-Access-Key: 46b1cac78ed94ca4b99ad6de550a****
X-Request-Timestamp: 1676904384074
次のフォーマットでコンポーネントを組み立てて、署名対象文字列を作成します:
<HTTP_URI>?<HTTP_QUERY_STRING><Request-Time><Access-Key>
/openapi/v1/a/b?param1=xx¶m2=yy167690438407446b1cac78ed94ca4b99ad6de550a****
次の Java の例に示すように、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(accessKey)) {
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. リクエストの送信
リクエストに X-Access-Key、X-Request-Timestamp、X-Request-Sign ヘッダーを追加します。最終的なリクエストは次のようになります:
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'