cURL · Virtual Try-On API

Virtual Try-On API med cURL

Det snabbaste sättet att förstå ett API är att anropa det från skalet. Phottas dokumentation är cURL-fokuserad av design — allt på denna sida går att köra i en terminal, utan krav på Node eller Python.

I en mening

Exportera PHOTTA_API_KEY, skicka POST till https://ai.photta.app/api/v1/tryon/apparel med rätt JSON-body, fånga generations-ID:t och loopa sedan curl … /tryon/apparel/:id var 3:e sekund tills data.status ändras till completed — vanligtvis inom 1.5 till 4 minuter. Kombinera med jq för att extrahera resultatets URL från det slutgiltiga svaret.

Uppdaterad · 2026-04-19

Din första förfrågan

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

Vad du kan förvänta dig

Typical completion

1.5–4min

2K / 4K credits

5 / 7

Jewelry types

4

Close-up mannequins

built-in

Så fungerar det

Virtual Try-On API med cURL

Fem steg i skalet, noll beroenden utöver curl och jq.

  1. 01

    Steg 1

    Registrera dig och generera en nyckel

    Gå till ai.photta.app, öppna fliken för utvecklare, klicka på Generate API key. Live-nycklar börjar med photta_live_.

  2. 02

    Steg 2

    Exportera nyckeln

    Lägg export PHOTTA_API_KEY="photta_live_xxx" i din skalprofil eller en .envrc-fil så att alla efterföljande curl-anrop hittar den automatiskt.

  3. 03

    Steg 3

    Spara bas-URL:en

    export PHOTTA_BASE_URL="https://ai.photta.app/api/v1" håller dina curl-kommandon korta och gör det enkelt att byta till en sandbox-URL när en sådan lanseras.

  4. 04

    Steg 4

    Skicka och polla

    Skicka POST till $PHOTTA_BASE_URL/tryon/apparel för att få ett ID, loopa sedan curl $PHOTTA_BASE_URL/tryon/apparel/$ID var 3:e sekund. Pipe:a svaret till jq för att extrahera .data.status snyggt.

  5. 05

    Steg 5

    Spara resultatet

    När jobbet är klart, hämta .data.output_url med jq och använd curl -o för att ladda ner rådatan lokalt — redo för nästa steg i din pipeline.

Kod, hela vägen

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

Varför denna struktur

Varför cURL fortfarande är det snabbaste sättet att verifiera ett 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

Vad den inte gör

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

Frågor från andra utvecklare

Questions other developers ask

Finns det ett Photta CLI-verktyg?+

Inte ännu — men cURL plus en bash-wrapper på femton rader räcker långt. Dokumentationen prioriterar cURL-exempel eftersom alla språk kan köra en underprocess, och skalet är den gemensamma nämnaren i CI-pipelines.

Behöver jag jq för att använda API:et?+

Inte strikt — men skriptade pipelines blir mycket enklare med det. jq låter dig hämta .data.id, .data.status och .data.output_url från JSON-svaret utan att behöva parsa det manuellt. Installera med brew install jq på macOS eller apt install jq på Debian/Ubuntu.

Hur autentiserar jag med curl?+

Lägg till -H "Authorization: Bearer $PHOTTA_API_KEY" i varje anrop. Behåll nyckeln i en miljövariabel, skriv aldrig in den direkt i ett skript du sparar. curl --oauth2-bearer fungerar också, men den explicita header-formen är tydligare i dokumentation och loggar.

Kan jag använda curl-baserade skript i produktion?+

För enstaka batch-uppdateringar och cron-jobb, ja — tusentals team hanterar kataloguppdateringar på detta sätt. För en långlivad applikation är ett riktigt programmeringsspråk oftast bättre eftersom du får korrekt felhantering, retries och observerbarhet. cURL-exemplen på denna sida förblir korrekta även efter att du portat till Node eller Python; förfrågans struktur är densamma.

Hur pollar jag från en bash-loop?+

Använd for i in $(seq 1 120); do … ; sleep 3; done med statuskontrollen inuti loopen. Avbryt när .data.status är completed eller failed. Kodexemplet på denna sida visar det exakta mönstret, inklusive en hård övre gräns så att ett fastnat jobb inte låser skriptet för evigt.

Hur läser jag felsvar i curl?+

Använd curl -w "\n%{http_code}" för att fånga HTTP-statuskoden tillsammans med JSON-svaret. Aggera utifrån status: 402 för otillräckliga credits, 429 för rate limits (följ Retry-After-värdet), 5xx för tillfälliga serverfel. Felmeddelandet innehåller alltid fälten error.code och error.message.

cURL · Virtual Try-On API

Skapa ett konto och hämta en API-nyckel

Exportera PHOTTA_API_KEY, skicka POST till https://ai.photta.app/api/v1/tryon/apparel med rätt JSON-body, fånga generations-ID:t och loopa sedan curl … /tryon/apparel/:id var 3:e sekund tills data.status ändras till completed — vanligtvis inom 1.5 till 4 minuter. Kombinera med jq för att extrahera resultatets URL från det slutgiltiga svaret.

Virtual Try-On API med cURL — Photta | Photta