# Eachlabs Face Swap Swap faces between images effortlessly! Integrate your app with the Faceswap model by Eachlabs for smooth and seamless transformations. ## API Information - **Model Slug:** each-faceswap-v1 - **Branded URL:** https://www.eachlabs.ai/eachlabs/eachlabs/each-faceswap-v1 - **Provider:** each::labs - **Category:** Image to Image - **Output Type:** image - **Status:** active - **Version:** 0.0.1 - **Base Cost:** $0.06 per face swap - **Estimated Processing Time:** 10 seconds - **Last Updated:** 2026-06-01 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/each-faceswap-v1 ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.0600 - **Pricing Details:** $0.06 per face swap ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | $0.06 per face swap | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | source_image | string | Yes | - | image/jpeg, image/png, image/jpg, image/webp | The image containing the face to be swapped. | | target_image_gif_or_video | string | Yes | - | image/jpeg, image/png, image/jpg, image/webp | The image where the swapped face will be placed. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "each-faceswap-v1", "input": { "target_image_gif_or_video": "https://storage.googleapis.com/magicpoint/inputs/men.webp", "source_image": "https://storage.googleapis.com/magicpoint/models/man.png" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated image)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "X-API-Key: YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `X-API-Key` | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **each-faceswap-v1 — Image-to-Image AI Model** Swap faces between images effortlessly with **each-faceswap-v1**, the image-to-image AI model from Eachlabs that delivers seamless, high-fidelity transformations for developers and creators seeking an **AI image editor API**. Developed by Eachlabs as part of the eachlabs family, **each-faceswap-v1** excels in precise face replacement, maintaining identity, lighting, and expressions across source and target images without artifacts common in generic editing tools. Ideal for apps requiring "face swap AI model" functionality, it processes uploads quickly to produce photorealistic results, solving the challenge of realistic persona swaps in photos, memes, or personalized visuals. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `X-API-Key: YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.