Démarrage rapide
Votre première image Photta en moins de cinq minutes.
Un compte, une clé API, cinq commandes shell. Les étapes ci-dessous correspondent exactement aux recommandations officielles de Photta — pas de wrappers, pas de SDK, pas de frameworks imposés.
En une phrase
Inscrivez-vous sur ai.photta.app, cliquez sur Générer une clé API, exportez-la comme PHOTTA_API_KEY, faites un POST vers /api/v1/tryon/apparel et interrogez l'ID retourné toutes les 3 secondes jusqu'au statut completed — généralement sous 1.5 à 4 minutes.
Comment ça marche
Cinq commandes pour une première image
Collez-les dans un terminal dans l'ordre. Chaque extrait est autonome et utilise uniquement curl + jq.
- 01
Étape 1
Générer une clé API
Inscrivez-vous sur ai.photta.app et ouvrez le tableau de bord Développeurs. Cliquez sur Générer une clé API — les clés de production commencent par photta_live_. Exportez-la pour que votre shell puisse la lire.
# Sign up at ai.photta.app, open the Developers dashboard, # click "Generate API key" and copy it into your env. export PHOTTA_API_KEY="photta_live_xxxxx" export PHOTTA_BASE_URL="https://ai.photta.app/api/v1" - 02
Étape 2
Soumettre votre premier essayage
Appelez /api/v1/tryon/apparel avec une URL d'image produit, un mannequin_id et un pose_id. L'API répond 202 Accepted immédiatement et renvoie un ID de génération dans data.id.
curl -X POST "$PHOTTA_BASE_URL/tryon/apparel" \ -H "Authorization: Bearer $PHOTTA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "product_type": "dress", "product_images": ["https://example.com/dress.jpg"], "mannequin_id": "mnq_athena_ts", "pose_id": "pose_standing_front", "resolution": "2K", "aspect_ratio": "3:4" }' # Response: 202 Accepted + data.id (generation ID) - 03
Étape 3
Interroger jusqu'à la fin
GET /api/v1/tryon/apparel/:id toutes les 3 secondes. La complétion prend typiquement 1.5–4 minutes. Fixez une limite de tentatives pour éviter que votre script ne reste bloqué.
# Loop every 3 seconds until status flips to "completed". # Typical completion: 1.5–4 minutes. Max 120 attempts = 6 min. for i in $(seq 1 120); do RESULT=$(curl -s "$PHOTTA_BASE_URL/tryon/apparel/$ID" \ -H "Authorization: Bearer $PHOTTA_API_KEY") STATUS=$(echo "$RESULT" | jq -r '.data.status') [ "$STATUS" = "completed" ] && break [ "$STATUS" = "failed" ] && echo "Job failed" && exit 1 sleep 3 done - 04
Étape 4
Persister le résultat
Quand le statut 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.
# Pull the final URL out of the response and save the bytes. OUTPUT_URL=$(echo "$RESULT" | jq -r '.data.output_url') curl -sO "$OUTPUT_URL" echo "Saved $(basename "$OUTPUT_URL")" - 05
Étape 5
Gérer les échecs honnêtement
Vérifiez le code HTTP : 402 pour crédits insuffisants, 429 pour limite de débit (respectez Retry-After), 5xx pour erreurs serveur. Chaque erreur contient un error.code exploitable par machine.
# Surface the common failure modes honestly. case "$STATUS_CODE" in 402) echo "Out of credits — top up at ai.photta.app" ;; 429) echo "Rate limited — honour Retry-After header" ;; 4??) echo "Client error: $(echo "$BODY" | jq '.error.message')" ;; 5??) echo "Server error — retry with backoff" ;; esac
Questions fréquentes des développeurs
Questions sur le démarrage
Combien de temps dure ce guide ?+
Cinq minutes pour l'inscription, la clé et le premier cURL. La génération prend 1.5 à 4 minutes, prévoyez donc dix minutes montre en main avant de voir votre première image.
Ai-je besoin d'une carte bancaire pour tester ?+
Les nouveaux comptes incluent des crédits d'essai utilisables immédiatement. Une fois prêt pour la production, abonnez-vous à un forfait pour plus de crédits et de meilleures limites de débit.
Quel endpoint tester en premier ?+
L'essayage de vêtements (/api/v1/tryon/apparel) — c'est le plus utilisé, le mieux documenté et il illustre parfaitement le modèle asynchrone utilisé par tous les autres endpoints Photta.
Puis-je l'utiliser depuis le navigateur ?+
Non. Votre clé API doit rester côté serveur — l'exposer dans un navigateur la rendrait accessible à n'importe quel visiteur. Faites transiter vos appels par un proxy sur votre backend (route Next.js, Express, Lambda).