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')

Comment ça fonctionne

D'une seule clé à un service multi-tenant

Cinq décisions d'architecture à prendre avant d'écrire du code de production.

  1. É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.

  2. É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.

  3. É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.

  4. É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.

  5. É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.

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.