Seedream 5.0 Pro अब लाइव है | Image Generator में आज़माएं →
साइन इन

WaveSpeed AI Image Face Swap

wavespeed-ai /

Free swap faces in any photo instantly — realistic blending, no watermark, no sign up. Upload a base image and reference face to get started now.

portrait-transfer
इनपुट

निष्क्रिय

$0.01प्रति रन·~100 / $1

उदाहरणसभी देखें

संबंधित मॉडल

README

WaveSpeedAI Face Swap

Face Swap is an advanced AI-powered face replacement model that enables realistic, seamless, and watermark-free face swaps in static images. By combining powerful face recognition, alignment, and blending algorithms, it ensures lifelike results while preserving lighting, pose, and expression fidelity.

⚙️ Why it looks so cool

  • Instant Face Swapping Upload a base image and a reference face — the model replaces the original face with the target identity while maintaining natural contours and lighting.

  • Realistic Blending Automatically adapts skin tone, lighting direction, and expression for ultra-smooth integration.

  • Expression & Pose Preservation The source image’s emotion, head tilt, and gaze direction are retained for believable results.

  • Watermark-Free Results Every generation is clean, production-ready, and suitable for both fun edits and professional use.

🧠 How to use

  • Input:

  • image → The base photo to edit

  • face_image → The reference face to swap in

  • target_index → (optional) Which face to swap when multiple faces exist; 0 = largest face. Default: 0

  • target_gender → (optional) Only swap faces matching this gender: all, male, or female. Default: all

  • Output: JPEG / PNG / WEBP image with replaced face

  • AI Engine: WaveSpeedAI Face Identity Alignment & Lighting Consistency Module

💰 Pricing

OperationPrice (USD)
Face Swap (per image)$0.010

💡 Best Use Cases

  • Social Media & Entertainment — Fun, shareable, and creative swaps in portraits and group photos.
  • Film & Advertising — Quick mockups for casting, storyboarding, and concept design.
  • Photography & Visual Design — Replace faces for privacy, retouching, or creative effects.
  • Virtual Production — Generate realistic composites for narrative or promotional visuals.

📝 Notes

  • For best results, use clear, front-facing portraits with consistent lighting between both faces.
  • Avoid overly complex or low-resolution images — clarity improves blending accuracy.
  • Ensure you have permission to use all uploaded images and likenesses.
  • If you are working with anime or illustrated characters, the output quality may be significantly lower due to visual style differences.
नोट:यह वेबसाइट तृतीय पक्षों द्वारा प्रदान किए गए AI मॉडलों का उपयोग करती है।

Image Face Swap API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/image-face-swap with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Image Face Swap below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "face_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "target_index": 0,
    "target_gender": "all",
    "output_format": "jpeg"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/image-face-swap" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/image-face-swap";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "face_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "target_index": 0,
        "target_gender": "all",
        "output_format": "jpeg"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "face_image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "target_index": 0,
    "target_gender": "all",
    "output_format": "jpeg"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/image-face-swap", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Image Face Swap API — Frequently asked questions

What is the Image Face Swap API?

Image Face Swap is a WaveSpeedAI model for AI inference, exposed as a REST API on WaveSpeedAI. Free swap faces in any photo instantly — realistic blending, no watermark, no sign up. Upload a base image and reference face to get started now. You can call it programmatically or try it from the playground above.

How do I call the Image Face Swap API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/image-face-swap.

How much does Image Face Swap cost per run?

Image Face Swap starts at $0.010 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Image Face Swap accept?

Key inputs: `image`, `enable_base64_output`, `enable_sync_mode`, `face_image`, `output_format`, `target_gender`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/image-face-swap.

How long does Image Face Swap take to generate?

Median end-to-end generation time on WaveSpeedAI is around 4 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Image Face Swap outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

WaveSpeed AI Image Face Swap | AI Portrait Transfer API | WaveSpeedAI