Introduction
Le modèle transpose les traits du visage d’une image sur la personne d’une autre. Seuls les traits voyagent : coiffure, implantation des cheveux, silhouette de la tête, pose, tenue, lumière et arrière-plan de l’image cible restent tels quels, et c’est ce qui fait que le résultat s’intègre à la photo d’origine au lieu d’être posé dessus.
Face Swap Pro est le palier de précision de la gamme Face Swap. Le moteur repère lui-même les points clés du visage dans les deux photos et projette un ensemble sur l’autre, et rien n’est appliqué ensuite au résultat. Toute la requête tient en deux URL d’image — image_url pour la photo à modifier, reference_image_url pour le visage —, envoyées à spicyapi/face-swap-pro-v1/edit. L’appel est asynchrone : il renvoie un identifiant de tâche, vous interrogez cette tâche, et chaque requête renvoie une image, facturée à l’image produite.
Fonctionnalités et points forts
Le moteur place le visage d’après ses points clés
Pro est conçu pour le travail de précision. Au lieu de recopier une zone, il repère les points clés du visage dans les deux photos et projette un ensemble sur l’autre ; les yeux, le nez et la bouche tombent ainsi là où la géométrie du visage cible les place. Sur ce point de terminaison, la détection est automatique : vous envoyez deux images, rien d’autre. Aucune passe d’amélioration n’a lieu ensuite non plus, si bien que pores, ridules et grain sont conservés et que le visage est aussi net que tout le reste. C’est aussi pourquoi un résultat peut paraître moins flatteur qu’un échange filtré : exactitude et flatterie ne sont pas le même objectif.
Deux URL d’image, et rien d’autre à rater
C’est le seul point de terminaison de face swap de ce catalogue qui ne prend que les deux images : pas de prompt à formuler, pas de zone à peindre, pas d’intensité à régler, pas de seed à fixer. Cela supprime toute la catégorie d’erreurs qui naissent d’une consigne ambiguë et rend le traitement par lot trivial, puisqu’une liste de paires passe sans décision au cas par cas. Les clés inconnues sont refusées plutôt qu’ignorées ; un nom de champ mal orthographié échoue donc dès l’envoi au lieu de retomber discrètement sur une valeur par défaut. La seule chose qui compte vraiment, c’est quelle URL va où : les deux champs ne sont pas symétriques, et les inverser donne une requête parfaitement valide avec un résultat complètement différent.
La photo cible survit à l’échange
| Vient de la référence | Reste avec la cible |
|---|---|
| Yeux, nez, bouche, sourcils | Coiffure, implantation des cheveux, silhouette de la tête |
| Les proportions du visage lui-même | Pose, regard, corps, tenue |
| Le détail de la peau dans la zone du visage | Arrière-plan, cadrage, lumière, grain |
Il n’y a ici ni format ni résolution à régler, car l’image n’est pas régénérée : on remplace une zone d’une photo existante. C’est ce qui rend ce point de terminaison utilisable sur un plan déjà validé : rien en dehors du visage n’est remis en jeu.
Paramètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
image_url | Oui | L’image modifiée. 1 caractères minimum |
reference_image_url | Oui | L’image qui fournit les traits du visage. 1 caractères minimum |
face_enhance | Non | Applique une passe d’amélioration au visage échangé pour lui donner une résolution plus élevée. Désactivé par défaut. Valeur par défaut: |
Tarification
$0.16 / image
Cas d’utilisation
Images éditoriales et de campagne destinées à l’impression
Un visage lissé ne tient pas en grand format : la peau paraît plastique à côté d’un vêtement et d’un fond nets. Garder la texture d’origine permet à l’image de tenir quand on la regarde de près, et pas seulement en vignette.
Changer le visage d’un plan déjà validé
La lumière, la pose et le décor fonctionnent déjà, et régénérer toute l’image remettrait tout cela en jeu. Placez plutôt un visage dans le plan : tout ce que vous avez validé reste exactement à sa place.
Des personnages cohérents sur une série
Générez les scènes avec le modèle de votre choix, puis reportez un même visage sur toutes pour que la série se lise comme une seule personne. Cheveux et tenue restent propres à chaque image cible, la variété générée survit donc au passage.
Images sans censure : la limite est le consentement, pas le sujet
SpicyAPI n’ajoute aucun filtre de contenu propre et n’exige aucun indicateur de contenu : le corps de requête reste donc constitué des mêmes deux champs quoi que montre l’image. Ce qui ne se relâche pas, c’est l’autorisation : il faut le consentement explicite et éclairé de la personne représentée pour cette ressemblance précise dans ce contenu précis, et le consentement n’est jamais présumé du fait qu’une photo est publique.
Guide de prompt et conseils pratiques
Pas de prompt : le réglage se fait avant l’appel
Sur la plupart des points de terminaison d’image, on réécrit une phrase quand un résultat déçoit. Pas ici : la requête tient en deux URL, les seules variables sont donc les photos envoyées. Les itérations sont faciles à analyser — changez une image, gardez l’autre, et vous savez exactement ce qui a bougé —, mais une mauvaise paire ne se rattrape pas avec une meilleure consigne.
Choisir la cible et la référence
image_url est la photo à modifier ; reference_image_url fournit le visage. Les deux doivent montrer un seul visage bien visible, plutôt de face, net et assez grand dans le cadre pour que les traits se lisent, en JPEG, PNG ou WebP. Recadrez d’abord une photo de groupe sur une seule personne. Le levier le plus utile reste la direction de la lumière : choisissez une référence éclairée à peu près du même côté que la cible, car l’échange ne modifie pas la lumière de la cible et un désaccord se voit comme une couture le long de la mâchoire.
Quand le résultat n’est pas celui attendu
| Ce que vous voyez | Ce qu’il faut changer d’abord |
|---|---|
| Une couture le long de la mâchoire ou du cou | Prendre une référence éclairée du même côté |
| Des traits flous ou approximatifs | Prendre une référence où le visage est plus grand et plus net |
| La mauvaise personne a été modifiée | Recadrer la cible sur une seule personne |
| La requête a échoué | Vérifier que les deux URL renvoient toujours un fichier image |
| Moins lisse qu’un autre outil d’échange | Normal : aucune retouche n’est appliquée, faites la vôtre ensuite |
Choisir le bon point de terminaison
| Ce dont vous avez besoin | Point de terminaison |
|---|---|
| La précision des repères du visage et la texture d’origine, sans réglage | Ce point de terminaison |
| L’accord du teint et le choix du format de fichier | Face Swap Plus |
| L’échange simple avec seed, sans jamais toucher aux cheveux | Face Swap |
| La tête entière, cheveux compris | Head Swap |
| Un visage sur tout un clip en mouvement | Video Face Swap |
Traiter par lot
Comme rien ne se décide au cas par cas, un lot est une boucle sur des paires. Envoyez chaque appel de création avec un Idempotency-Key et stockez l’identifiant de tâche à côté de l’enregistrement qui l’a déclenché ; si une connexion tombe, répéter la requête avec la même clé renvoie la tâche d’origine au lieu d’en lancer une seconde, facturée une seconde fois. Interrogez toutes les quelques secondes, puis copiez chaque résultat dans votre propre stockage : les fichiers générés sont supprimés après 14 jours, les images sources envoyées après un jour.
Démarrage rapide de l’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"
La référence API détaille l’authentification, le schéma complet, le polling et la gestion des erreurs.









