Build · Automatisation ghost mannequin
Automatisez l'extraction ghost mannequin pour votre catalogue
En une phrase
Récupérez le delta du catalogue depuis votre dernière exécution, envoyez un POST avec un tableau product_images (chaque élément contenant une URL d'image et une optionnelle back_image) avec un style à /api/v1/ghost-mannequin/batch, interrogez l'ID du lot par polling toutes les 3 secondes jusqu'à ce que chaque élément soit completed ou failed, puis mettez à jour chaque ligne produit avec son output_url. Les lots concurrents sont limités selon votre forfait.
- Crédits: 4 crédits en 2K · 5 crédits en 4K
- Délai typique: 1.5–4 min
- Traitement: asynchrone, polling
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
Retirez le mannequin de chaque photo de vos fiches produit sans solliciter de graphiste. L'endpoint ghost-mannequin de Photta gère nativement le traitement par lots — un cron nocturne transforme un flux de 50K-SKU en un catalogue avec mannequin invisible en quelques heures, et non en plusieurs semaines.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]Comment ça fonctionne
Exécution nocturne, à l'échelle du catalogue
Les cinq briques nécessaires pour une automatisation sans intervention humaine.
Étape 1
Mappez votre catalogue
Identifiez quelles lignes de produits nécessitent une image ghost mannequin, lesquelles en ont déjà une et lesquelles appartiennent à des catégories restreintes. Stockez un horodatage last_photographed_at pour que la tâche nocturne ne traite que le delta.
Étape 2
Choisissez 3D ou à plat (flat-lay) par catégorie
`3d` pour les vêtements nécessitant du volume — vêtements d'extérieur, denim, pièces de tailleur. `flat_lay` pour les accessoires et la maille qui rendent mieux photographiés à plat. Enregistrez le style par catégorie de produit pour que le générateur de lots sélectionne le bon sans ajustement manuel.
Étape 3
Soumettez le delta par lot
Envoyez un POST à /api/v1/ghost-mannequin/batch avec un tableau product_images — chaque élément inclut image, les champs optionnels back_image et image_side — ainsi qu'un unique style, background_color et resolution pour l'ensemble du lot. Conservez votre propre mapping entre l'indice du tableau et l'ID du produit ; la réponse renvoie un ID de génération par élément dans le même ordre.
Étape 4
Interrogez le lot parent par polling
L'endpoint de lot retourne des compteurs agrégés (total, processing, completed, failed). Effectuez un polling toutes les 3 secondes jusqu'à ce que completed + failed soit égal à total. Photta traite les éléments en parallèle au sein du lot, vous n'avez donc pas besoin d'interroger chaque génération individuellement.
Étape 5
Persistez les données dans votre base
Parcourez status.data.items dans l'ordre — le lot préserve l'ordre de votre tableau — et mettez à jour chaque ligne produit avec son output_url. Journalisez les échecs — ils indiquent presque toujours une mauvaise photo source dans votre flux, que vous pourrez corriger et soumettre à nouveau lors de la prochaine exécution.
Trois étapes en Python
Extraction du delta, soumission par lot, polling parent — le minimum viable pour l'automatisation de catalogue.
from datetime import datetime, timedelta
yesterday = datetime.utcnow() - timedelta(days=1)
rows = db.execute(
"SELECT id, source_image_url FROM products WHERE updated_at > %s",
(yesterday,),
).fetchall()import os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]import os, time, requests
BASE = "https://api.photta.app/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"}
# data["items"] comes back in the order of the product_images you submitted.
batch_id = data["batch_id"]
for _ in range(240): # 240 × 3s = 12 minutes
status = requests.get(f"{BASE}/ghost-mannequin/batch/{batch_id}", headers=HEADERS).json()["data"]
if status["completed"] + status["failed"] == status["total"]:
break
time.sleep(3)
for row, item in zip(rows, status["items"]):
if item["status"] == "completed":
db.execute(
"UPDATE products SET ghost_image_url = %s WHERE id = %s",
(item["output_url"], row.id),
)Questions fréquentes des développeurs
Exécuter le ghost mannequin à l'échelle du catalogue
Quelle est la taille maximale d'un lot unique ?
Selon la documentation, l'endpoint de lot accepte jusqu'à quelques centaines d'éléments par appel. Pour une exécution nocturne de 50K-SKU, découpez le delta en lots de 100–200 éléments et envoyez-les séquentiellement afin de rester confortablement en dessous du rate limit de votre forfait.
Un lot peut-il mélanger 3D et flat-lay ?
Oui — style est un champ défini par élément, un même lot peut donc contenir les deux. En pratique, la plupart des équipes séparent tout de même par catégorie, car la logique de persistance en aval est plus simple lorsque chaque ligne d'un lot alimente la même colonne en base de données.
Qu'advient-il des éléments en échec ?
Les éléments en échec dans un lot remboursent automatiquement leurs crédits et renvoient un error_code + error_message dans le payload final de l'élément. Journalisez les erreurs et réessayez la nuit suivante, après que votre équipe a eu l'occasion de corriger la photo source ou de marquer la ligne comme entrée définitivement invalide.
Comment réassocier les résultats à mes ID de produits ?
Conservez votre propre mapping entre la position dans le tableau et l'ID produit lors de la soumission : la réponse du lot renvoie un ID de génération par élément dans le même ordre que product_images, et le statut du lot liste également les éléments dans cet ordre.
Puis-je planifier cela sous forme de cron quotidien ?
Oui — un cron quotidien simple qui extrait le delta des dernières 24 heures, le découpe en segments, soumet les lots et écrit les résultats dans votre base de données est un pattern éprouvé pour les équipes gérant des catalogues volumineux. Gardez le runner idempotent afin qu'une nuit en échec puisse être rejouée sans risque.
Pages associées
Référence
Fonctionnalités
API mannequin fantôme pour des photos de produits sur mannequin invisible
Endpoint AI de mannequin fantôme. Supprimez le mannequin d'une photo de vêtement et préservez les détails intérieurs. 3D ou flat-lay, traitement par lots, 4 crédits en 2K.
LireDémarrage rapide
Première image Photta en moins de cinq minutes.
Inscrivez-vous, générez une clé d'API, lancez votre premier appel cURL, effectuez le polling jusqu'à la complétion, persistez le résultat. Cinq étapes documentées de bout en bout.
LireLangages
Python walkthrough
Lire
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
Déployez le mannequin fantôme à l'échelle catalogue ce soir
Trois fonctions Python, un cron, 50K photos. Récupérez une clé API et pointez-la vers votre catalogue.