Guide · Migration
Migrer de FASHN vers Photta ce qui change, ce qui ne change pas
En une phrase
Migrer une intégration de try-on vers Photta implique une nouvelle clé Bearer, un nouveau corps de requête et un nouveau chemin de statut. La structure de l'intégration — soumettre, poller, télécharger, stocker — ne change pas.
- Délai typique: 1.5–4 min
- Crédits: 5 crédits en 2K · 6 crédits en 4K
- Traitement: asynchrone, polling
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
La réponse courte
Les équipes changent d'API de try-on pour des raisons classiques : le rendu convient mieux à leur catalogue, le coût unitaire par image est plus avantageux à leur volume, ou elles requièrent une fonctionnalité non proposée par leur fournisseur actuel — ghost mannequin en batch, gros plans sur les détails, modèles générés réutilisables sur toute une saison.
Trois éléments : l'identifiant, le corps de la requête et le chemin de statut. Photta s'authentifie avec une clé Bearer à chaque appel, utilise ses propres noms de champs et renvoie l'état du job sur un endpoint de statut dédié à chaque fonctionnalité. Chaque valeur envoyée par votre code est documentée sous forme d'enum ou d'id que vous pouvez lister au préalable.
L'architecture. Les deux sont des API asynchrones avec soumission et polling ; votre file d'attente, votre worker, votre stratégie de retry et votre stockage restent pleinement opérationnels. En pratique, une migration consiste en un nouveau module client et un nouveau jeu de noms de champs, et non en un nouveau pipeline.
L'endpoint cible de votre migration
Extrait de la documentation de l'API Photta, non rédigé à la main.
En un coup d'œil
- Endpoint
- POST /api/v1/tryon/apparel
- Authentification
- Clé API Bearer
- Traitement
- Asynchrone — interrogez l'endpoint de statut par polling
- Délai typique
- 1.5–4 min
- Crédits
- 5 crédits en 2K · 6 crédits en 4K
- Rapports d'aspect
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Limites d'entrée
- Jusqu'à 10 Mo par image ; JPEG, PNG, WebP
- Idempotent
- Non
Les quatre changements réels
Authentification
Une seule clé bearer sur chaque endpoint, créée dans votre tableau de bord Photta. Aucun scope par endpoint et aucune étape d’échange de token.
Le corps de la requête
Photta accepte des champs en snake_case avec des énumérations documentées, ainsi que des identifiants pour le mannequin, la pose et l'arrière-plan que vous listez via les endpoints de ressources et mettez en cache.
Polling
Interrogez le status endpoint de la fonctionnalité toutes les 3 secondes jusqu’à ce qu’il renvoie completed ou failed. Il n’y a aucun webhook, rien de nouveau n’a donc besoin d’être exposé publiquement.
Fonctionnement de la facturation
Des credits par appel — 5 en 2K et 6 en 4K pour le try-on de vêtements — débités au lancement de la tâche et remboursés automatiquement en cas d’échec.
La nouvelle requête
Le même appel en cURL, Node.js et Python.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": true,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": true,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/tryon/apparel",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": True,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
},
)
data = res.json()["data"] # data["id"], data["status"]Questions sur la migration
Combien de temps prend une migration ?
Il s’agit d’un seul module client : une nouvelle clé, de nouveaux noms de champs, un nouveau chemin de statut. Si votre worker gère déjà la soumission et le polling, le code périphérique ne bouge pas.
Dois-je modifier ma file d’attente ?
Non. Les deux API étant asynchrones, la structure reste identique, peu importe ce que vous utilisez aujourd’hui — Celery, BullMQ, Inngest, une table cron. Seuls les appels au sein de la tâche changent.
Qu’advient-il des images que j’ai déjà générées ?
Ce sont des fichiers présents sur votre propre stockage et rien ne change à leur sujet. Migrer impacte vos prochains rendus, pas ce que vous avez déjà publié.
Comment se comparent les tarifs ?
La page de comparaison confronte le coût par appel en credits de Photta à ce que FASHN publie sur sa propre page de tarification, avec la date à laquelle chaque chiffre a été relevé. Votre propre volume détermine la solution la plus avantageuse.
Puis-je exécuter les deux en parallèle ?
Oui, et c’est la manière la plus sûre de faire la transition. Envoyez une fraction de votre catalogue vers le nouvel endpoint, comparez le résultat sur des produits réels, puis basculez le reste.
À lire ensuite
Fonctionnalités
API de try-on virtuel pour les vêtements
API REST qui positionne des vêtements sur des mannequins générés par IA. Traitement asynchrone, génération en 1.5–4 minutes, 5 crédits en 2K, 6 en 4K. Exemples en cURL, Node.js et Python.
LireComparer
Photta vs FASHN — API d’IA pour la mode, côte à côte
Photta et FASHN comparés : endpoints, tarification en crédits, niveaux d’abonnement, limites de concurrence. Données issues de la page de tarification respective de chaque entreprise au 2026-04-19. Aucun chiffre inventé.
LireRéférence
Tarification de l'API Photta
Le coût en credits de chaque endpoint de l’API Photta en 2K et 4K, le fonctionnement de la facturation et des remboursements, et les endpoints gratuits. Aucun prix monétaire par image.
LireRéférence
Rate limits de l'API Photta
La rate limit de l'API Photta, sa fenêtre, l'en-tête Retry-After, l'intervalle de polling et les plafonds de simultanéité par forfait, tels que documentés dans l'API.
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.
Lire
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
Exécutez les deux, puis basculez
Acheminez une copie de votre file d'attente vers le nouvel endpoint et comparez vous-même les résultats.
- 1.5–4 min
- 5 crédits en 2K · 6 crédits en 4K
- asynchrone, polling