Construire · SaaS de photographie par IA
Créer un service de photographie de produits par IA
En une phrase
Provisionnez une clé d'API Photta par tenant (ou une clé mutualisée si le volume est faible), distribuez le catalogue de chaque client dans une file d'attente, appelez /api/v1/tryon/apparel par produit, effectuez le polling des ID de génération dans un pool de workers, stockez les résultats dans le bucket de votre client, et facturez chaque unité facturable (credit ou image générée) avec une marge appliquée sur le coût du credit Photta.
- Crédits: 5 crédits en 2K · 6 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é
Distribuez le traitement sur les catalogues de vos clients, lancez des jobs de try-on par produit, facturez au credit. Les mêmes primitives que Photta met à la disposition des développeurs individuels permettent de composer un SaaS en marque blanche — à condition de respecter les limites d'intégration.
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"]Comment ça fonctionne
D'une seule clé à un service multi-tenant
Cinq décisions d'architecture à prendre avant d'écrire du code de production.
Étape 1
Définissez le contrat de votre produit
Déterminez ce que reçoit votre client par unité facturable : une image générée ? Un lot ? Un pool mensuel de crédits ? Votre réponse conditionne tout le reste — profondeur de la file d'attente, politique de retry, copy de la page de tarification.
Étape 2
Provisionnez des clés Photta par tenant
À petite échelle : une clé mutualisée, avec suivi de l'utilisation par tenant dans votre base de données. À plus grande échelle : une clé Photta par tenant, gérée via le tableau de bord Photta — meilleure traçabilité, périmètre d'impact réduit en cas de fuite.
Étape 3
Distribuez via une file d'attente
Pour chaque produit du flux client, ajoutez un job de photo à la file d'attente. Ne soumettez jamais de manière synchrone pendant un import CSV — vous atteindrez le rate limit de 600 requêtes par minute et perdrez des jobs avec des erreurs 429.
Étape 4
Appliquez une marge sur le prix du credit
Chaque génération de vêtement en 4K vous coûte 6 crédits. Chaque facture envoyée doit correspondre à crédits × votre marge. Enregistrez le coût brut en crédits dans votre grand livre afin que la comptabilité puisse rapprocher la facture Photta de vos revenus.
Étape 5
Surveillez la latence et le taux d'échec
Suivez le temps d'exécution et le taux d'échec par tenant. Quand les photos d'un client prennent systématiquement plus de 4 minutes ou échouent de façon répétée, cela provient presque toujours d'une entrée invalide (URL corrompue, product_type non pris en charge) — pas d'un problème lié à Photta.
Trois architectures indispensables
Distribution, dispatch par tenant, registre de facturation — les piliers structurels d'un SaaS de photographie.
// For each product in the customer's feed, kick off a try-on.
for (const product of catalog) {
await photoQueue.add("photo", {
customerId: product.customer_id,
productUrl: product.image,
productType: product.type, // "top" | "bottom" | "top_and_bottom" | "one_piece"
});
}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.status// A completed apparel job costs 5 credits at 2K and 6 at 4K.
// Record it to your billing pipeline so you can margin on top of it.
await billingLedger.append({
customer: data.customerId,
sku: "photo-4k",
quantity: 1,
wholesaleCost: 6, // credits, = your Photta spend
});Questions fréquentes des développeurs
Exploiter un service au-dessus de Photta
Ai-je besoin d'une clé d'API Photta distincte par tenant ?
Non, mais cela simplifie les choses à grande échelle. En dessous d'une poignée de clients, une clé mutualisée avec suivi d'usage par tenant dans votre propre base de données suffit. Au-delà, une clé par tenant offre une meilleure traçabilité, une rotation simplifiée et un périmètre d'impact réduit en cas de fuite.
Que faire en cas d'épuisement des crédits ?
L'API renvoie une erreur 402 insufficient_credits avec le solde requis et disponible. Définissez un seuil d'alerte (ex. 100 crédits) et rechargez automatiquement avant que les jobs ne commencent à échouer. Les jobs en échec voient leurs crédits remboursés, de sorte qu'une rafale d'erreurs 402 n'aggrave pas la situation.
Comment dois-je tarifer mon service ?
Photta facture 5 crédits en 2K, 6 crédits en 4K. Convertissez cela dans votre devise de vente (coût × votre marge × conversion des crédits) et choisissez de facturer à l'image, au lot ou au mois. La plupart des SaaS de photographie finissent par facturer à l'image avec un forfait minimum mensuel.
Quels sont les SLA proposés par Photta ?
La fenêtre d'exécution documentée par Photta est de 1.5 à 4 minutes par tâche. Aucun SLA de disponibilité strict n'est publié. Si votre propre SaaS s'engage sur un délai, prévoyez de la marge dans votre contrat (par ex. « photos livrées sous 1 heure » vous offre une marge de sécurité de 10x) et suivez la latence par tenant pour détecter rapidement les régressions.
Puis-je utiliser le service en marque blanche ?
Oui. Les images retournées ne comportent aucun branding Photta. Vous pouvez les livrer directement dans le bucket de votre client derrière votre propre nom de domaine CDN — votre client n'a jamais besoin de savoir que le pipeline de Photta les a générées. L'API en elle-même n'est pas en marque blanche — la clé et le dashboard sont aux couleurs de Photta.
Pages associées
Référence
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.
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.
LireFonctionnalité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.
Lire
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
Déployez un SaaS de photographie au-dessus de Photta
Même API, votre marque, votre marge. Récupérez une clé d'API, intégrez les trois patterns ci-dessus dans vos workers, et vous êtes à mi-chemin du lancement.