# AI 肌分析タスクを実行します。

AI タスクは非同期です。機能ごとに Webhook がサポートされている場合は、Webhook による完了処理を優先します。Webhook エンドポイントを設定し、Webhook 署名を検証したうえで、`success` または `error` の通知が来たら、受け取った `task_id` を使ってタスクの結果を照会します。設定と検証の詳細は [Webhook 統合ガイド](../develop/webhook.md) を参照してください。
Webhook がサポートされていない場合、または統合に使えない場合は、ポーリングを実装します。AI タスクを送信した後、一定の間隔（例：10 秒ごと）でステータスエンドポイントをポーリングし、`success` または `error` になるまで待ちます。

Endpoint: POST /s2s/v2.0/task/skin-analysis
Security: BearerAuthenticationV2

## Security:

  - `BearerAuthenticationV2` (unknown)
    http bearer

## Request fields (application/json):

  - `dst_actions` (array, required)
    AI 肌分析のアクションです。
機能には HD と SD の 2 種類があります。
1 つ以上の機能を選択できますが、すべて SD またはすべて HD で選択する必要があります。
注意: HD 機能と SD 機能を混在させることはできません。
HD 機能:
- hd_redness: 肌の赤みの重症度を測定します。
- hd_oiliness: 肌の油分レベルを判定します。
- hd_age_spot: 老人斑と色素沈着を検出します。
- hd_radiance: 肌の輝度を評価します。
- hd_moisture: 肌の水分量を評価します。
- hd_dark_circle: 目の下のクマの有無を分析します。
- hd_eye_bag: 目の下のたるみ（目袋）を検出します。
- hd_droopy_upper_eyelid: 上まぶたのたるみの重症度を測定します。
- hd_droopy_lower_eyelid: 下まぶたのたるみの重症度を測定します。
- hd_firmness: 肌の弾力性とハリを評価します。
- hd_texture: 肌全体の質感を分析します。
- hd_acne: ニキビの有無を検出します。
- hd_pore: 異なる顔領域（額、鼻、頬、全体）の毛穴を検出し評価します。
- hd_wrinkle: 様々な顔領域（額、眉間、目尻、目周り、ほうれい線、マリオネットライン、全体）のしわの重症度を測定します。
- hd_tear_trough: 涙袋（ゴルゴライン）を検出します。
- hd_skin_type: サブカテゴリー（全体、T ゾーン、U ゾーン）で肌タイプを Normal、Oily、Dry、Combination、Redness、Dry and Redness、Oily and Redness、Combination and Redness のいずれかで評価します。

SD 機能:
- wrinkle: 一般的なシワ分析。
- droopy_upper_eyelid: 上まぶたのたるみの重症度を測定します。
- droopy_lower_eyelid: 下まぶたのたるみの重症度を測定します。
- firmness: 肌の弾力性とハリを評価します。
- acne: ニキビの有無を評価します。
- moisture: 肌の水分量を測定します。
- eye_bag: 目の下のたるみ（目袋）を検出します。
- dark_circle_v2: クマを分析します。
- age_spot: 老人斑を検出します。
- radiance: 肌の明るさを評価します。
- redness: 肌の赤みを測定します。
- oiliness: 肌の油分を判定します。
- pore: 毛穴の目立ち度を測定します。
- texture: 肌全体の質感を分析します。
- tear_trough: 涙袋（ゴルゴライン）を検出します。
- skin_type: サブカテゴリー（全体、T ゾーン、U ゾーン）で肌タイプを Normal、Oily、Dry、Combination、Redness、Dry and Redness、Oily and Redness、Combination and Redness のいずれかで評価します。
    Example: ["hd_wrinkle","hd_pore","hd_texture","hd_acne"]

  - `miniserver_args` (object)

  - `miniserver_args.enable_mask_overlay` (boolean)
    マスクを画像にブレンドするかどうかを制御します。True の場合、オーバーレイされた画像が .jpg で返されます。False の場合、生のマスクが .png で返されます。初期値は false です。 すべての出力画像は、長辺の解像度が最大 2560 ピクセルに制限されます。enable_mask_overlay が有効でない場合、入力解像度が 2560 を超えているかを確認し、マスクオーバーレイをクライアント側で適切に処理する必要があります。入力画像の長辺が 2560 ピクセル未満の場合は、元の画像解像度を使用します。それ以外の場合は、2560 ピクセルを使用して表示を設定してください。

  - `miniserver_args.enable_dark_background_hd_pore` (boolean)
    HD 毛穴可視化用の暗い背景を有効にします

  - `miniserver_args.color_dark_background_hd_pore` (string)
    HD 毛穴暗い背景可視化用の色（16 進数形式）
    Example: 3D3D3D

  - `miniserver_args.opacity_dark_background_hd_pore` (number)
    HD 毛穴暗い背景可視化用の不透明度
    Example: 0.4

  - `miniserver_args.enable_dark_background_hd_wrinkle` (boolean)
    HD しわ可視化用の暗い背景を有効にします

  - `miniserver_args.color_dark_background_hd_wrinkle` (string)
    HD しわ暗い背景可視化用の色（16 進数形式）
    Example: 3D3D3D

  - `miniserver_args.opacity_dark_background_hd_wrinkle` (number)
    HD しわ暗い背景可視化用の不透明度
    Example: 0.4

  - `format` (string)
    分析結果のレスポンス形式。初期値は 'zip' です。 - `zip`: 結果は、score_info.json とすべての検出結果画像を含む skinanalysisResult フォルダを格納したダウンロード可能な ZIP ファイルとしてパッケージ化されます。レスポンスには ZIP ファイルをダウンロードするための URL が含まれます。 - `json`: 結果は JSON 形式でレスポンスボディに直接返されます。注意: format=json と format=zip でレスポンススキーマが異なります。
    Enum: "json", "zip"

  - `src_file_url` (string, required)
    タスクを実行するファイルの URL。この URL は公開されている必要があります。
    Example: https://example.com/selfie.jpg

  - `src_file_id` (string, required)
    タスクを実行するファイルの ID。ファイルアップロード API から取得したファイル ID です。
    Example: pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE=

## Response 200:

  - `200` (unknown)
    AI 肌分析タスクの実行に成功しました

## Response 200 fields (application/json):

  - `status` (integer)
    レスポンスステータス
    Example: 200

  - `data` (object)

  - `data.task_id` (string)
    このタスクの ID。タスクの結果は、この ID を使用して 24 時間以内にクエリできます。
    Example: grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe

## Response 401:

  - `401` (unknown)
    無効または欠落している API キー

## Response 401 fields (application/json):

  - `status` (integer)
    レスポンスステータス
    Example: 401

  - `error` (string)
    Example: Invalid API key

## Response 429:

  - `429` (unknown)
    リクエストが多すぎます

## Response 429 fields (application/json):

  - `status` (integer)
    レスポンスステータス
    Example: 429

  - `error` (string)
    Example: Too many requests

