Démarrage rapide

Première image Photta en moins de cinq minutes.

En une phrase

Inscrivez-vous sur ai.photta.app, cliquez sur Generate API key, exportez-la dans PHOTTA_API_KEY, envoyez un POST à /api/v1/tryon/apparel et interrogez l'ID de génération retourné toutes les 3 secondes jusqu'à ce que le statut passe à completed — généralement en 1.5 à 4 minutes.

  • Authentification: Clé Bearer
  • Traitement: asynchrone, polling
  • Limites: 600 requêtes/min

Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié

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

Cinq commandes pour passer de zéro à la première image

Collez-les dans un terminal dans l'ordre. Chaque extrait est autonome et repose uniquement sur curl + jq.

  1. Étape 1

    Générer une clé d'API

    Inscrivez-vous sur ai.photta.app et ouvrez le tableau de bord Développeurs. Cliquez sur Generate API key — les clés live commencent par photta_live_. Exportez-la pour que la suite du guide puisse la lire depuis votre shell.

    # https://ai.photta.app → Developers → Generate API key
    export PHOTTA_API_KEY="photta_live_xxxxx"
    export PHOTTA_BASE_URL="https://api.photta.app/api/v1"
  2. Étape 2

    Effectuer votre premier POST de try-on

    Appelez /api/v1/tryon/apparel avec une URL d'image produit et un identifiant de mannequin. L'API répond immédiatement 202 Accepted et renvoie un identifiant de génération dans data.id.

    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')
  3. Étape 3

    Effectuer le polling jusqu'à complétion

    GET /api/v1/tryon/apparel/:id toutes les 3 secondes. Le délai typique d'exécution est de 1.5–4 minutes. Définissez une limite maximale de tentatives pour qu'un job bloqué n'interrompe pas indéfiniment votre script.

    # $ID is data.id from the POST response. Poll every 3 seconds until status is "completed" or "failed".
    for i in $(seq 1 120); do
      RESULT=$(curl -s "https://api.photta.app/api/v1/tryon/apparel/$ID" -H "Authorization: Bearer $PHOTTA_API_KEY")
      STATUS=$(echo "$RESULT" | jq -r '.data.status')
      [ "$STATUS" = "completed" ] && break
      [ "$STATUS" = "failed" ] && echo "generation failed" && exit 1
      sleep 3
    done
    echo "$RESULT" | jq -r '.data.output_url'
  4. Étape 4

    Persister le rendu

    Lorsque le status passe à completed, data.output_url contient l'image générée. Téléchargez les octets dans votre propre stockage pour que votre produit ne dépende pas du CDN de Photta pour l'affichage.

    OUTPUT_URL=$(echo "$RESULT" | jq -r '.data.output_url')
    curl -sO "$OUTPUT_URL"
    echo "Saved $(basename "$OUTPUT_URL")"
  5. Étape 5

    Gérer les modes d'échec de manière robuste

    Gérez les cas selon le code de statut HTTP : 402 pour crédits insuffisants, 429 pour le rate limit (respectez le Retry-After), 5xx pour les erreurs serveur temporaires. Chaque corps d'erreur contient un error.code lisible par une machine que vous pouvez exploiter.

    case "$STATUS_CODE" in
      402) echo "insufficient_credits_error — top up before retrying" ;;
      429) echo "rate_limit_error — wait the Retry-After seconds (30 by default)" ;;
      4??) echo "$BODY" | jq '.error.type, .error.message' ;;
      5??) echo "api_error — retry with backoff" ;;
    esac

Questions fréquentes des développeurs

Questions fréquentes sur la prise en main

Combien de temps prend le quickstart ?

Cinq minutes pour l'inscription + la génération de la clé + le premier cURL. La génération en elle-même prend 1.5 à 4 minutes, comptez donc dix minutes au total avant de voir votre première image sur modèle.

Faut-il une carte de crédit pour essayer ?

Les nouveaux comptes sont dotés de crédits d'essai utilisables immédiatement avant de payer. Quand vous serez prêt à passer en production, souscrivez à un plan pour un solde de crédits mensuel plus important et des limites de débit (rate limits) plus élevées.

Quel endpoint tester en premier ?

Le try-on de vêtements (/api/v1/tryon/apparel) — c'est le plus répandu, la documentation est la plus exhaustive, et il utilise le pattern async + polling repris par tous les autres endpoints Photta. Une fois maîtrisé, les bijoux et le mannequin fantôme fonctionnent exactement de la même manière.

Puis-je l'exécuter depuis le navigateur ?

Non. Votre clé d'API doit rester côté serveur — l'envoyer au navigateur la divulgue à chaque visiteur. Faites transiter les requêtes via un proxy léger sur votre propre backend (route handler Next.js, Express, Flask, Lambda) et faites communiquer le navigateur avec ce proxy.

Pages associées

Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié

Votre première image est à cinq minutes d'ici

  • Clé Bearer
  • asynchrone, polling
  • 600 requêtes/min