cURL · API d'essayage virtuel

API d'essayage virtuel avec cURL

La façon la plus rapide de comprendre une API est de l'appeler depuis le terminal. La documentation de Photta est conçue pour cURL — chaque extrait sur cette page s'exécute directement dans votre shell.

En une phrase

Exportez `PHOTTA_API_KEY`, effectuez un POST vers `https://ai.photta.app/api/v1/tryon/apparel` avec le corps JSON adéquat, récupérez l'ID, puis bouclez sur `curl … /tryon/apparel/:id` toutes les 3 secondes jusqu'à ce que `data.status` passe à `completed` — généralement sous 1.5 à 4 minutes. Utilisez `jq` pour extraire l'URL finale.

Mis à jour · 2026-04-19

Votre première requête

cURLNode.jsPythoncURL
# Submit a try-on job. The API returns 202 Accepted + a generation ID.
JOB=$(curl -s -X POST "$PHOTTA_BASE_URL/tryon/apparel" \
  -H "$AUTH_HEADER" \
  -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"
  }')

ID=$(echo "$JOB" | jq -r '.data.id')
echo "Generation $ID queued"

# Poll every 3 seconds until the job completes (max 6 minutes).
for i in $(seq 1 120); do
  RESULT=$(curl -s "$PHOTTA_BASE_URL/tryon/apparel/$ID" -H "$AUTH_HEADER")
  STATUS=$(echo "$RESULT" | jq -r '.data.status')
  if [ "$STATUS" = "completed" ]; then
    echo "$RESULT" | jq -r '.data.output_url'
    break
  fi
  if [ "$STATUS" = "failed" ]; then
    echo "$RESULT" | jq -r '.data.error_message' >&2
    exit 1
  fi
  sleep 3
done

À quoi s'attendre

Typical completion

1.5–4min

2K / 4K credits

5 / 7

Aspect ratios

5

Product types

6

Comment ça marche

API d'essayage virtuel avec cURL

Cinq étapes shell, zéro dépendance au-delà de curl et jq.

  1. 01

    Étape 1

    S'inscrire et générer une clé

    Allez sur ai.photta.app, ouvrez l'onglet Développeurs, cliquez sur Générer une clé API. Les clés de production commencent par `photta_live_`.

  2. 02

    Étape 2

    Exporter la clé

    Ajoutez `export PHOTTA_API_KEY="photta_live_xxx"` à votre profil shell ou fichier `.envrc` pour que chaque appel curl l'utilise automatiquement.

  3. 03

    Étape 3

    Définir l'URL de base

    `export PHOTTA_BASE_URL="https://ai.photta.app/api/v1"` permet de raccourcir les commandes curl et facilite le passage à une URL de sandbox ultérieure.

  4. 04

    Étape 4

    Soumettre et interroger

    POST sur `$PHOTTA_BASE_URL/tryon/apparel` pour obtenir un ID, puis bouclez sur `curl $PHOTTA_BASE_URL/tryon/apparel/$ID` toutes les 3 secondes. Pipez la réponse dans jq pour extraire `.data.status` proprement.

  5. 05

    Étape 5

    Persister le résultat

    Une fois la tâche terminée, extrayez `.data.output_url` avec jq et utilisez `curl -o` pour sauvegarder les octets localement — prêt pour l'étape suivante de votre pipeline.

Code, de bout en bout

Copy, paste, done.

Four snippets — install prerequisites, wrap the REST call, submit + poll, then handle the errors that actually happen in production.

01cURL is already installed on macOS, Linux, WSL and modern Windows
bash
# Verify curl is available
curl --version

# Export your API key so the rest of the calls can reference it
export PHOTTA_API_KEY="photta_live_xxxxx"
02Set the base URL + auth header once
bash
# Pin the base URL in a shell variable so every call is a one-liner.
export PHOTTA_BASE_URL="https://ai.photta.app/api/v1"

# Reusable auth header — every request needs it.
AUTH_HEADER="Authorization: Bearer $PHOTTA_API_KEY"
03Submit and poll in one script
bash
# Submit a try-on job. The API returns 202 Accepted + a generation ID.
JOB=$(curl -s -X POST "$PHOTTA_BASE_URL/tryon/apparel" \
  -H "$AUTH_HEADER" \
  -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"
  }')

ID=$(echo "$JOB" | jq -r '.data.id')
echo "Generation $ID queued"

# Poll every 3 seconds until the job completes (max 6 minutes).
for i in $(seq 1 120); do
  RESULT=$(curl -s "$PHOTTA_BASE_URL/tryon/apparel/$ID" -H "$AUTH_HEADER")
  STATUS=$(echo "$RESULT" | jq -r '.data.status')
  if [ "$STATUS" = "completed" ]; then
    echo "$RESULT" | jq -r '.data.output_url'
    break
  fi
  if [ "$STATUS" = "failed" ]; then
    echo "$RESULT" | jq -r '.data.error_message' >&2
    exit 1
  fi
  sleep 3
done
04Read the status code + error body instead of silently failing
bash
# -w pulls out the HTTP status without polluting the JSON body.
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "$PHOTTA_BASE_URL/tryon/apparel" \
  -H "$AUTH_HEADER" \
  -H "Content-Type: application/json" \
  -d '{ "product_type": "dress" }')

BODY=$(echo "$RESPONSE" | sed '$d')
STATUS=$(echo "$RESPONSE" | tail -1)

case "$STATUS" in
  200|202)
    echo "$BODY" | jq '.data' ;;
  402)
    echo "Out of credits" ; echo "$BODY" | jq '.error' ;;
  429)
    RETRY=$(echo "$BODY" | jq -r '.error.retry_after')
    echo "Rate limited — retry in ${RETRY}s" ;;
  *)
    echo "Error $STATUS" ; echo "$BODY" | jq '.error' ;;
esac

Pourquoi cette structure

Pourquoi cURL reste la méthode la plus rapide pour tester une API

  • Zero install — cURL ships with every major OS
  • Pairs with `jq` for scripted pipelines (CI, cron, bash hooks)
  • Ideal for smoke-testing endpoints before wiring them into code
  • All code in this page copy-pastes into any POSIX shell

Ce qu'il ne fait pas

Honest caveats

  • cURL's polling loop blocks your terminal — move to Node/Python for parallel workers
  • No streaming parser for the result; you fetch the final URL when the job is done
  • Windows Command Prompt users should run WSL or PowerShell's curl.exe wrapper

Questions fréquentes des développeurs

Questions other developers ask

Existe-t-il un outil CLI Photta ?+

Pas encore — mais cURL associé à un wrapper bash de quinze lignes fait l'affaire. La documentation privilégie cURL car tout langage peut exécuter un sous-processus, et le shell est le dénominateur commun des pipelines CI.

Ai-je besoin de jq pour utiliser l'API ?+

Pas strictement — mais c'est bien plus simple pour scripter. jq permet d'extraire `.data.id`, `.data.status` et `.data.output_url` du JSON sans parsing manuel. Installez-le via `brew install jq` sur macOS ou `apt install jq` sur Debian/Ubuntu.

Comment s'authentifier avec curl ?+

Ajoutez `-H "Authorization: Bearer $PHOTTA_API_KEY"` à chaque requête. Gardez la clé dans une variable d'environnement, ne l'écrivez jamais en clair dans un script committé. `curl --oauth2-bearer` fonctionne aussi, mais l'en-tête explicite est plus clair.

Puis-je utiliser des scripts cURL en production ?+

Pour des traitements de masse ponctuels ou des tâches cron, oui — de nombreuses équipes gèrent leurs catalogues ainsi. Pour une application pérenne, un langage de programmation est préférable pour la gestion d'erreurs, les tentatives et l'observabilité. Les exemples curl restent valables même après portage vers Node ou Python.

Comment interroger depuis une boucle bash ?+

Utilisez `for i in $(seq 1 120); do … ; sleep 3; done` avec la vérification de statut dans la boucle. Sortez quand `.data.status` est `completed` ou `failed`. L'exemple sur cette page montre le modèle exact, incluant une limite maximale.

Comment lire les erreurs dans curl ?+

Utilisez `curl -w "\n%{http_code}"` pour capturer le code HTTP à côté du corps JSON. Gérez selon le code : 402 pour crédits insuffisants, 429 pour limite de débit (respectez Retry-After), 5xx pour erreurs serveur temporaires. L'objet d'erreur contient toujours `error.code` et `error.message`.

cURL · API d'essayage virtuel

Créer un compte et obtenir une clé API

Exportez `PHOTTA_API_KEY`, effectuez un POST vers `https://ai.photta.app/api/v1/tryon/apparel` avec le corps JSON adéquat, récupérez l'ID, puis bouclez sur `curl … /tryon/apparel/:id` toutes les 3 secondes jusqu'à ce que `data.status` passe à `completed` — généralement sous 1.5 à 4 minutes. Utilisez `jq` pour extraire l'URL finale.

API d'essayage virtuel avec cURL — Photta | Photta