Head Swap (Image)
namifusion/head-swap/image-edit
Swap the head in a photo with the head from a reference image. Upload the target photo first, then the head reference.
Parameters
| Name | Type | Default | Constraints | Description |
|---|---|---|---|---|
| images *Images | image_upload | — | 2–2 items | Exactly 2 images: [0] head reference, [1] target photo |
Output fields
| Field | Type | Description |
|---|---|---|
| images | array<string> |
API
Call this model through one unified REST API. Get a key on the API Keys page.
cURL
# 1) Submit — returns { "task_uuid": "..." }
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/namifusion/head-swap/image-edit" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"images": [
"https://assets-public.namifusion.com/uploads/images/2026-04-21/76c1186af77d.png",
"https://assets-public.namifusion.com/uploads/images/2026-04-21/149467630166.png"
]
}
}'
# 2) Poll until status is "completed", then read the output URLs
curl "https://www.namifusion.com/api/v1/marketplace/run/tasks/TASK_UUID" \
-H "Authorization: Bearer YOUR_API_KEY"Python
import time, requests
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1) Submit
resp = requests.post(
"https://www.namifusion.com/api/v1/marketplace/run/namifusion/head-swap/image-edit",
headers=HEADERS,
json={
"input": {
"images": [
"https://assets-public.namifusion.com/uploads/images/2026-04-21/76c1186af77d.png",
"https://assets-public.namifusion.com/uploads/images/2026-04-21/149467630166.png"
]
}
},
)
resp.raise_for_status() # 401/402/429/5xx stop here instead of polling a bad task
task = resp.json()
# 2) Poll until a terminal state (completed / failed / cancelled).
# This model is allowed up to 600s server-side.
deadline = time.time() + 660
while task.get("status") not in ("completed", "failed", "cancelled"):
if time.time() > deadline:
raise TimeoutError(f"still {task.get('status')} — keep the task_uuid and poll later")
time.sleep(3)
poll = requests.get(f"https://www.namifusion.com/api/v1/marketplace/run/tasks/{task['task_uuid']}", headers=HEADERS)
poll.raise_for_status()
task = poll.json()
print(task["status"], task.get("output"))JavaScript
const API_KEY = "YOUR_API_KEY";
const HEADERS = { Authorization: `Bearer ${API_KEY}` };
// 1) Submit
const resp = await fetch("https://www.namifusion.com/api/v1/marketplace/run/namifusion/head-swap/image-edit", {
method: "POST",
headers: { ...HEADERS, "Content-Type": "application/json" },
body: JSON.stringify({
"input": {
"images": [
"https://assets-public.namifusion.com/uploads/images/2026-04-21/76c1186af77d.png",
"https://assets-public.namifusion.com/uploads/images/2026-04-21/149467630166.png"
]
}
}),
});
if (!resp.ok) throw new Error(`submit failed: ${resp.status} ${await resp.text()}`);
let task = await resp.json();
// 2) Poll until a terminal state (completed / failed / cancelled).
// This model is allowed up to 600s server-side.
const deadline = Date.now() + 660 * 1000;
while (!["completed", "failed", "cancelled"].includes(task.status)) {
if (Date.now() > deadline) throw new Error(`still ${task.status} — keep the task_uuid and poll later`);
await new Promise((r) => setTimeout(r, 3000));
const poll = await fetch(`https://www.namifusion.com/api/v1/marketplace/run/tasks/${task.task_uuid}`, { headers: HEADERS });
if (!poll.ok) throw new Error(`poll failed: ${poll.status}`);
task = await poll.json();
}
console.log(task.status, task.output);Documentation
Head Swap Image Edit
Transfer a head from one reference image onto a target photo while preserving the target body, pose, and scene.
Head Swap Image Edit is a focused two-image workflow for replacing the head in a target photograph. The first image supplies the head reference and identity; the second image supplies the body, pose, clothing, lighting context, and background that should remain. The fixed input order makes the model straightforward to use, but respecting that order is essential for a correct result.
Key Features
- Dedicated head replacement: Changes the head region while retaining the target photograph as the visual base.
- Two-image control: Separates identity reference from target composition instead of relying on a text prompt.
- Pose and scene preservation: Designed to keep the target body, clothing, framing, and background intact.
- Simple deterministic contract: Exactly two image URLs are required in a documented order.
- Square output: Produces a 1024 x 1024 edited image for consistent downstream use.
Technical Specifications
| Item | Details |
|---|---|
| Task | Head replacement / image editing |
| Required input | images, exactly two image URLs |
| Image 1 | Head and identity reference |
| Image 2 | Target photograph and base composition |
| Input order | Reference first, target second |
| Prompt | Not required |
| Output | Edited image URL |
| Output dimensions | 1024 x 1024 |
Input Guidance
Use a sharp reference image with a clearly visible head and minimal occlusion. For the target image, choose a photo where the head, neck, and surrounding hair or clothing boundaries are readable. Similar camera angles and compatible lighting generally produce a more natural blend. The two URLs must remain in the exact documented order.
Pricing
| Item | Price |
|---|---|
| One edited image | 22 credits |
This value reproduces the existing Marketplace pricing configuration; this documentation update does not alter pricing.
Best Use Cases
- Character and casting visualization for creative review.
- Portrait concept variations while retaining an approved pose and scene.
- Marketing mockups that require a different head reference on an existing composition.
- Controlled visual experiments where a text prompt would introduce unnecessary variation.
Best Practices
Avoid tiny, heavily blurred, side-profile, or obstructed reference heads. Match approximate viewing angle and lighting direction between the two images. Check the result around hairlines, ears, neck boundaries, and accessories. If alignment is poor, improve the input crops rather than changing the required image order.
Related models
xAI Grok Imagine Image v2.0 Edit
xAI Grok Imagine Image V2.0 Edit transforms input images with text prompts, with configurable resolution and quality for precise image editing, visual refinements, creative variations, social content, marketing assets, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
qwen-image-edit-spicy
Precisely edit images with text instructions. Add, remove, or modify visual elements, transfer styles, and replace backgrounds for photo retouching and visual design.
Qwen Image 3.0 Pro Edit | Fast Image Editing
Qwen Image 3.0 Pro Edit is a professional-grade image editing model with superior quality and advanced instruction understanding. Up to 2k. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
OpenAI GPT Image 2.5 Sunburst Edit
High-fidelity image editing for precise transformations using up to 16 reference images.
OpenAI GPT Image 2.5 Flare Edit
Fast, balanced image editing from natural-language instructions and up to 16 reference images.
Nano Banana Image Edit
Fast & Affordable Editing. Intuitive object replacement and style transfer without manual masking.
Nano Banana Pro Image Edit
4K Semantic Editing.Modifies existing images via natural language with context awareness and multilingual text editing.
Nano Banana 2 Image Edit
4K Semantic Editing.Modifies existing images via natural language with context awareness and multilingual text editing.