はじめに
ある画像の顔立ちを、別の画像の人物に移します。移るのは顔立ちだけで、対象画像の髪型、生え際、頭の輪郭、ポーズ、服装、光、背景は元のまま残ります。だからこそ、結果は元の写真の上に貼り付いたものではなく、写真の中に収まったものになります。
Face Swap Pro は Face Swap シリーズの精度重視のモデルです。エンジンが 2 枚の写真から顔の特徴点を自動で見つけ、一方をもう一方に対応させます。その後、結果に処理を重ねることはありません。リクエストは画像 URL 2 つだけで、変更する写真を image_url、顔を reference_image_url に入れて spicyapi/face-swap-pro-v1/edit に送ります。呼び出しは非同期で、タスク ID が返り、そのタスクをポーリングすると 1 リクエストにつき 1 枚が返ります。課金は出力 1 枚単位です。
主な機能とハイライト
特徴点で顔を対応させる
Pro は精密な仕事のために作られています。領域を貼り移すのではなく、両方の写真で顔の特徴点を見つけて対応させるので、目、鼻、口は対象の顔の骨格が決める位置に収まります。このエンドポイントでは検出は自動で、送るのは画像 2 枚だけです。後処理の補正もかからないため、毛穴、細かなしわ、粒子感が残り、顔は周囲と同じシャープさになります。フィルターのかかった入れ替えより見栄えが劣って見えることがあるのもそのためです。正確さと美化は別の目的です。
画像 URL が 2 つだけ、間違えようがない
このカタログで、2 枚の画像以外を何も受け取らない顔入れ替えエンドポイントはこれだけです。書くプロンプトも、塗る領域も、調整する強度も、固定する seed もありません。あいまいな指示から生まれる失敗がまるごとなくなり、1 件ずつ判断することなくペアのリストを流せるので、バッチ処理も簡単です。未知のキーは無視されずに拒否されるため、フィールド名の打ち間違いは既定値に黙って戻ることなく、送信時に失敗します。本当に大事なのは、どの URL をどちらに入れるかだけです。2 つのフィールドは対称ではなく、入れ替えても有効なリクエストとして通り、まったく違う結果になります。
対象の写真はそのまま残る
| 参照画像から来るもの | 対象画像に残るもの |
|---|---|
| 目、鼻、口、眉 | 髪型、生え際、頭の輪郭 |
| 顔そのものの比率 | ポーズ、視線、体、服装 |
| 顔の範囲内の肌のディテール | 背景、フレーミング、光、粒子感 |
ここにはアスペクト比も解像度の設定もありません。画像を作り直すのではなく、既存の写真の一部を置き換えるだけだからです。そのため、すでに承認済みのカットにも使えます。顔以外のものは何も動きません。
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
image_url | はい | 差し替えられる画像です。この人物の頭の形、髪、生え際、ポーズ、視線、衣装、背景は保たれ、置き換わるのは顔の造作だけです。 1 文字以上 |
reference_image_url | はい | 顔の造作を供給する画像です。取り込まれるのは顔だけで、頭の形や髪は取り込まれないため、この写真自身の構図、背景、衣装は無視されます。 1 文字以上 |
face_enhance | いいえ | 入れ替えた顔に顔補正の処理をかけ、より高解像度の顔にします。既定はオフです。 デフォルト値: |
料金
$0.16 / 枚
ユースケース
印刷される雑誌・キャンペーンのカット
なめらかに加工された顔は、印刷サイズでは破綻します。シャープな服や背景の隣で、肌がプラスチックのように見えるからです。元の質感を残せば、サムネイルではなく近くで見られても画面が持ちこたえます。
承認済みのカットで人物だけを差し替える
光もポーズもセットもすでに決まっていて、画面全体を作り直せばそのすべてが振り出しに戻ります。代わりに顔だけをそのカットに移せば、承認したものはすべてそのまま残ります。
シリーズを通して同じ人物にする
場面はどのモデルで生成してもかまいません。そのあとで同じ顔をすべてに移せば、シリーズ全体が同じ人物として読めます。髪と服はそれぞれの対象画像のものが残るので、生成したバリエーションも失われません。
検閲なしのカットで問われるのは、題材ではなく同意
SpicyAPI は独自のコンテンツフィルターを追加せず、コンテンツフラグも求めないため、フレームに何が写っていてもリクエスト本文は同じ二つのフィールドです。緩まないのは許可です。描かれている人物の、その素材における、その特定の顔についての明確で説明を受けた同意が必要で、写真が公開されていることは同意とはみなされません。
プロンプトガイドと実践のヒント
プロンプトがないので、調整は呼び出す前に行う
多くの画像エンドポイントでは、結果に不満があれば文章を書き直します。ここではそれができません。リクエストは URL 2 つなので、変えられるのは送る写真だけです。1 枚を替えてもう 1 枚を固定すれば何が変わったかがはっきりわかり、試行錯誤は整理しやすくなります。その一方で、組み合わせが悪ければ、指示を工夫しても救えません。
対象画像と参照画像の選び方
image_url は変更する写真、reference_image_url は顔を提供する写真です。どちらも、はっきり見える顔が 1 つ、おおむね正面向きで、ピントが合い、顔立ちが読み取れる程度に大きく写った JPEG、PNG、WebP にしてください。集合写真は先に 1 人に切り抜きます。いちばん効くのは光の向きです。対象と同じ側からおおよそ光が当たっている参照画像を選んでください。入れ替えても対象の光は変わらないため、食い違うとあごのラインに継ぎ目が出ます。
結果が思いどおりでないとき
| 見えている症状 | まず変えること |
|---|---|
| あごや首に継ぎ目がある | 同じ向きから光が当たった参照画像を使う |
| 顔立ちがぼやけている、または大まか | 顔がより大きく鮮明に写った参照画像を使う |
| 違う人物が変わった | 対象画像を 1 人に切り抜く |
| リクエストがそのまま失敗した | 2 つの URL がまだ画像ファイルを返すか確認する |
| 他の入れ替えツールより艶が少ない | 想定どおりです。補正はかからないので、必要なら後から自分でかける |
用途に合ったエンドポイントを選ぶ
| 必要なもの | エンドポイント |
|---|---|
| 特徴点の正確さと元の質感、調整項目なし | このエンドポイント |
| 肌トーンの調整とファイル形式の選択 | Face Swap Plus |
| seed 付きのシンプルな入れ替え、髪には一切触れない | Face Swap |
| 髪を含めた頭部全体 | Head Swap |
| 動いているクリップ全体で 1 つの顔 | Video Face Swap |
バッチで実行する
1 件ごとに判断することがないので、バッチはペアのループです。作成の呼び出しには毎回 Idempotency-Key を付け、タスク ID をその処理のきっかけになったレコードの隣に保存します。接続が切れても、同じキーで再送すれば元のタスクが返り、2 回目の課金を伴う 2 つ目のタスクは始まりません。数秒ごとにポーリングし、結果はそれぞれ自前のストレージにコピーしてください。生成ファイルは 14 日後、アップロードした元画像は 1 日後に削除されます。
API クイックスタート
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "spicyapi/face-swap-pro-v1/edit",
"input": {
"image_url": "https://example.com/reference.png",
"reference_image_url": "https://example.com/reference.png"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
認証、完全なスキーマ、ポーリング、エラー処理は API リファレンスを参照してください。









