Snabbstart

Första Photta-bilden på under fem minuter.

I en mening

Skapa konto på ai.photta.app, klicka på Generate API key, exportera den som PHOTTA_API_KEY, POST:a till /api/v1/tryon/apparel och polla det returnerade generations-ID:t var 3:e sekund tills status ändras till completed — vanligtvis inom 1.5 till 4 minuter.

  • Autentisering: Bearer-nyckel
  • Bearbetning: asynkron, polling
  • Gränser: 600 requests/min

Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad

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

Hur det fungerar

Fem kommandon från noll till första bilden

Klistra in dem i en terminal i ordningsföljd. Varje kodavsnitt är fristående och använder endast curl + jq.

  1. Steg 1

    Generera en API-nyckel

    Skapa konto på ai.photta.app och öppna Developers-panelen. Klicka på Generate API key — skarpa nycklar börjar med photta_live_. Exportera den så att resten av guiden kan läsa den från ditt skal.

    # 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. Steg 2

    POST:a din första try-on

    Anropa /api/v1/tryon/apparel med en produktbilds-URL och ett mannequin_id. API:et svarar direkt med 202 Accepted och returnerar ett generations-ID i 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. Steg 3

    Polla tills det är klart

    GET /api/v1/tryon/apparel/:id var 3:e sekund. Typisk slutförandetid är 1.5–4 minuter. Sätt en övre gräns för antalet försök så att ett låst jobb inte hänger ditt skript för evigt.

    # $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. Steg 4

    Persistera datan

    När status ändras till completed innehåller data.output_url den renderade bilden. Ladda ner byten till din egen lagring så att din produkt inte är beroende av Phottas CDN för rendering.

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

    Hantera feltyperna explicit

    Grena ut baserat på HTTP-statuskoden: 402 för otillräckliga credits, 429 för rate limits (respektera Retry-After), 5xx för transienta serverfel. Varje fel-body har en maskinläsbar error.code som du kan agera på.

    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

Vanliga utvecklarfrågor

Frågor om att komma igång

Hur lång tid tar snabbstarten?

Fem minuter för registrering + nyckelgenerering + första cURL-anropet. Själva genereringen tar 1.5 till 4 minuter, så räkna med tio minuter totalt innan du ser din första bild på en modell.

Behöver jag ett kreditkort för att testa?

Nya konton levereras med test-credits som du kan använda innan du betalar. När du är redo för produktion tecknar du ett abonnemang för ett högre månatligt credits-saldo och högre rate limits.

Vilken endpoint ska jag testa först?

Apparel try-on (/api/v1/tryon/apparel) — den används mest, dokumentationen är mest komplett och den täcker det mönster för asynkrona anrop + polling som alla andra Photta-endpoints återanvänder. När du känner dig bekväm där fungerar smycken och ghost mannequin på samma sätt.

Kan jag köra det från webbläsaren?

Nej. Din API-nyckel måste stanna på serversidan — att skicka den till en webbläsare läcker den till varje besökare. Dirigera anropen via en tunn proxy på din egen backend (Next.js route handler, Express, Flask, Lambda) och låt webbläsaren prata med din proxy istället.

Relaterade sidor

Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad

Du är fem minuter från din första bild

  • Bearer-nyckel
  • asynkron, polling
  • 600 requests/min