# AI 顔交換タスクを実行します。

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

Endpoint: POST /s2s/v2.0/task/face-swap
Security: BearerAuthenticationV2

## Security:

  - `BearerAuthenticationV2` (unknown)
    http bearer

## Request fields (application/json):

  - `face_mapping` (array, required)
    ターゲット画像で検出された各顔に対して交換する、指定された参照画像 ID と顔位置情報。
ロジックルール
1. インデックスマッピング:
`index`
 は、参照リストで提供される画像の順序に直接対応します。
2. 交換のスキップ: ソースで検出された特定の顔の交換をスキップするには、
`index`
 と
`position`
 の両方を
`-1`
 に設定します。
3. 配列の順序: 配列内のオブジェクトの順序は、
`position`
 に基づいて一致させる必要があります。

使用例シナリオ
シナリオ:
参照リスト: 2 枚の画像を提供 (画像 A、画像 B)。
ソース画像: 3 つの顔が検出される (顔 0、顔 1、顔 2)。
目標:
顔 0 (ソース) を画像 1 (参照) と交換。
顔 1 (ソース) の交換をスキップ。
顔 2 (ソース) を画像 0 (参照) と交換。
設定:
"face_mapping": [
{
"index": 1,  // 2 番目の参照画像を使用
"position": 0 // ソースで最初に検出された顔に適用
},
{
"index": -1, // 交換をスキップ
"position": -1 // 交換をスキップ
},
{
"index": 0,  // 1 番目の参照画像を使用
"position": 2 // ソースで 3 番目に検出された顔に適用
}
]

  - `face_mapping.index` (integer)
    参照画像のインデックス

  - `face_mapping.position` (integer)
    ターゲット画像上の顔のインデックス。インデックスは検出結果の顔に基づきます。

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

  - `ref_file_urls` (array, required)

  - `ref_file_ids` (array, required)

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

## Response 200:

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

## Response 200 fields (application/json):

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

  - `data` (object)

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

## Response 400:

  - `400` (unknown)
    タスクの実行に失敗しました

## Response 400 fields (application/json):

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

  - `error` (string)
    エラーメッセージ
    Example: The operation could not be completed

  - `error_code` (string)
    エラーコード:
* InvalidParameters - 無効なリクエストパラメータ
* CreditInsufficiency - 実行に必要なユニットが不足しています
* BadRequest - 予期しないリクエストパラメータ
* InvalidStyleGroup - 無効なスタイルグループ ID
* InvalidStyle - 無効なスタイル ID
    Enum: "InvalidParameters", "CreditInsufficiency", "InvalidStyleGroup", "InvalidStyle", "BadRequest"

## 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

