Einführung
Das Modell überträgt die Gesichtszüge aus einem Bild auf die Person in einem anderen. Nur die Züge wandern: Frisur, Haaransatz, Kopfsilhouette, Pose, Kleidung, Licht und Hintergrund des Zielbilds bleiben, wie sie waren. Genau deshalb sitzt das Ergebnis im Originalfoto statt darauf.
Face Swap Pro ist die Präzisionsstufe der Face-Swap-Reihe. Die Engine findet die Gesichts-Keypoints in beiden Fotos selbst und bildet den einen Satz auf den anderen ab; danach läuft nichts mehr über das Ergebnis. Die gesamte Anfrage besteht aus zwei Bild-URLs – image_url für das Foto, das verändert wird, reference_image_url für das Gesicht –, gesendet an spicyapi/face-swap-pro-v1/edit. Der Aufruf ist asynchron: Er liefert eine Task-ID, Sie fragen diese Task ab, und pro Anfrage kommt ein Bild zurück, abgerechnet je Ausgabebild.
Wichtige Funktionen und Highlights
Die Engine bildet das Gesicht über seine Keypoints ab
Pro ist für Präzisionsarbeit gebaut. Statt einen Bereich hinüberzukopieren, findet es die Gesichts-Keypoints in beiden Fotos und bildet den einen Satz auf den anderen ab. So landen Augen, Nase und Mund dort, wo die Geometrie des Zielgesichts sie hinsetzt. Die Erkennung läuft auf diesem Endpunkt automatisch: Sie senden zwei Bilder und sonst nichts. Eine Nachbearbeitung gibt es ebenfalls nicht, Poren, feine Linien und Korn bleiben also erhalten, und das Gesicht ist genauso scharf wie alles drumherum. Das ist auch der Grund, warum ein Ergebnis weniger schmeichelhaft wirken kann als ein gefilterter Tausch – Genauigkeit und Schmeichelei sind nicht dasselbe Ziel.
Zwei Bild-URLs, sonst nichts, was schiefgehen kann
Es ist der einzige Face-Swap-Endpunkt in diesem Katalog, der ausschließlich die beiden Bilder annimmt: kein Prompt zu formulieren, keine Region zu maskieren, keine Stärke einzustellen und kein Seed festzulegen. Damit entfällt die ganze Klasse von Fehlern, die aus mehrdeutigen Anweisungen entsteht, und der Endpunkt lässt sich trivial im Batch nutzen, weil eine Liste von Paaren ohne Einzelentscheidung durchläuft. Unbekannte Schlüssel werden abgelehnt statt ignoriert; ein vertippter Feldname scheitert also schon beim Absenden, statt stillschweigend auf einen Standard zurückzufallen. Worauf es wirklich ankommt, ist, welche URL wohin gehört: Die beiden Felder sind nicht symmetrisch, und vertauscht ergeben sie eine völlig gültige Anfrage mit einem ganz anderen Ergebnis.
Das Zielfoto übersteht den Tausch
| Kommt aus der Referenz | Bleibt beim Zielbild |
|---|---|
| Augen, Nase, Mund, Brauen | Frisur, Haaransatz, Kopfsilhouette |
| Die Proportionen des Gesichts selbst | Pose, Blick, Körper, Kleidung |
| Hautdetails innerhalb der Gesichtsregion | Hintergrund, Bildausschnitt, Licht, Korn |
Ein Seitenverhältnis oder eine Auflösung gibt es hier nicht, weil das Bild nicht neu erzeugt wird – ersetzt wird nur eine Region eines vorhandenen Fotos. Deshalb taugt der Endpunkt für eine Aufnahme, die bereits abgenommen ist: Außerhalb des Gesichts wird nichts neu verhandelt.
Request-Parameter
| Parameter | Pflicht | Beschreibung |
|---|---|---|
image_url | Ja | Das Bild, das verändert wird. Kopfform, Haare, Haaransatz, Pose, Blickrichtung, Garderobe und Hintergrund dieser Person bleiben erhalten – ersetzt werden nur ihre Gesichtszüge. mindestens 1 Zeichen |
reference_image_url | Ja | Das Bild, das die Gesichtszüge liefert. mindestens 1 Zeichen |
face_enhance | Nein | Führt nach dem Tausch einen Gesichtsverbesserungs-Durchgang aus, der das neue Gesicht höher aufgelöst ausgibt. Standardmäßig aus. Standardwert: |
Preis
$0.16 / Bild
Anwendungsfälle
Editorial- und Kampagnenmotive für den Druck
Ein geglättetes Gesicht zerfällt in Druckgröße: Neben scharfer Kleidung und scharfem Hintergrund wirkt die Haut wie Plastik. Bleibt die Originaltextur erhalten, hält das Bild auch dann zusammen, wenn jemand genau hinsieht statt auf ein Vorschaubild.
Eine bereits freigegebene Aufnahme neu besetzen
Licht, Pose und Set funktionieren bereits, und das ganze Bild neu zu erzeugen würde all das wieder offen machen. Setzen Sie stattdessen ein Gesicht in die Aufnahme ein, und alles, was Sie freigegeben haben, bleibt genau, wo es war.
Durchgängige Figuren in einer Serie
Erzeugen Sie die Szenen mit einem beliebigen Modell und bringen Sie dann ein Gesicht in alle, damit die Serie als dieselbe Person gelesen wird. Haare und Kleidung bleiben beim jeweiligen Zielbild, die erzeugte Vielfalt übersteht den Durchgang also.
Unzensierte Motive: Die Grenze ist die Einwilligung, nicht das Thema
SpicyAPI fügt keinen eigenen Inhaltsfilter hinzu und verlangt keine Inhaltskennzeichnung, daher bleibt der Request-Body unabhängig vom Bildinhalt bei denselben zwei Feldern. Nicht gelockert wird die Berechtigung: Sie brauchen die ausdrückliche, informierte Einwilligung der abgebildeten Person für genau diese Ähnlichkeit in genau diesem Material, und Einwilligung wird nicht dadurch unterstellt, dass ein Foto öffentlich ist.
Prompt-Leitfaden und Praxistipps
Es gibt keinen Prompt – abgestimmt wird vor dem Aufruf
Bei den meisten Bild-Endpunkten schreiben Sie einen Satz um, wenn ein Ergebnis enttäuscht. Hier nicht: Die Anfrage besteht aus zwei URLs, die einzigen Variablen sind also die Fotos, die Sie senden. Das macht Iterationen leicht nachvollziehbar – ein Bild tauschen, das andere halten, und Sie wissen genau, was sich bewegt hat –, heißt aber auch, dass ein schlechtes Paar sich nicht mit einer besseren Anweisung retten lässt.
Zielbild und Referenz wählen
image_url ist das Foto, das verändert wird; reference_image_url liefert das Gesicht. Beide sollten ein gut sichtbares Gesicht zeigen, einigermaßen frontal, scharf und groß genug im Bild, dass die Züge erkennbar sind, als JPEG, PNG oder WebP. Schneiden Sie ein Gruppenfoto vorher auf eine Person zu. Das Wirksamste, was Sie steuern, ist die Lichtrichtung: Wählen Sie eine Referenz, die ungefähr von derselben Seite beleuchtet ist wie das Zielbild. Das Licht des Zielbilds ändert sich durch den Tausch nicht, und ein Widerspruch zeigt sich als Naht am Kiefer.
Wenn das Ergebnis nicht passt
| Was Sie sehen | Was Sie zuerst ändern |
|---|---|
| Eine Naht an Kiefer oder Hals | Eine Referenz mit Licht aus derselben Richtung nehmen |
| Die Züge wirken weich oder ungefähr | Eine Referenz mit größerem, schärferem Gesicht nehmen |
| Die falsche Person wurde verändert | Das Zielbild auf eine Person zuschneiden |
| Die Anfrage ist komplett fehlgeschlagen | Prüfen, ob beide URLs noch eine Bilddatei liefern |
| Weniger glatt als bei einem anderen Swap-Tool | Erwartbar – es läuft keine Retusche; retuschieren Sie danach selbst |
Den passenden Endpunkt wählen
| Was Sie brauchen | Endpunkt |
|---|---|
| Präzise Gesichtspunkte und Originaltextur, ohne Regler | Dieser Endpunkt |
| Hautton-Abgleich und freie Wahl des Dateiformats | Face Swap Plus |
| Der einfache Tausch mit Seed, die Haare bleiben immer unberührt | Face Swap |
| Der ganze Kopf, Haare inklusive | Head Swap |
| Ein Gesicht über einen bewegten Clip hinweg | Video Face Swap |
Als Batch ausführen
Weil pro Eintrag nichts entschieden wird, ist ein Batch eine Schleife über Paare. Senden Sie jeden Create-Aufruf mit einem Idempotency-Key und speichern Sie die Task-ID beim auslösenden Datensatz. Bricht eine Verbindung ab, liefert die Wiederholung mit demselben Schlüssel die ursprüngliche Task, statt eine zweite mit zweiter Abrechnung zu starten. Fragen Sie alle paar Sekunden ab und kopieren Sie jedes Ergebnis in Ihren eigenen Speicher – erzeugte Dateien werden nach 14 Tagen gelöscht, hochgeladene Ausgangsbilder nach einem Tag.
API-Schnellstart
# 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"
Authentifizierung, vollständiges Schema, Polling und Fehlerbehandlung stehen in der API-Referenz.









