Kvikstart

Første Photta-billede på under fem minutter.

I én sætning

Opret en konto på ai.photta.app, klik på Generate API key, eksporter den som PHOTTA_API_KEY, send en POST til /api/v1/tryon/apparel og poll det returnerede genererings-ID hvert 3. sekund, indtil status skifter til completed — typisk inden for 1,5 til 4 minutter.

  • Autentifikation: Bearer key
  • Behandling: async, polling
  • Grænser: 600 requests/min

Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket

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

Sådan virker det

Fem kommandoer fra nul til første billede

Indsæt dem i en terminal i rækkefølge. Hvert kodestykke er selvstændigt og bruger kun curl + jq.

  1. Trin 1

    Generer en API-nøgle

    Opret en konto på ai.photta.app og åbn Developers-dashboardet. Klik på Generate API key — produktionsnøgler starter med photta_live_. Eksporter den, så resten af vejledningen kan læse den fra din 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. Trin 2

    POST din første try-on

    Kald /api/v1/tryon/apparel med en produktbillede-URL og et mannequin-ID. API'et svarer straks med 202 Accepted og returnerer et genererings-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. Trin 3

    Poll indtil det er fuldført

    GET /api/v1/tryon/apparel/:id hvert 3. sekund. Typisk færdiggørelse tager 1.5–4 minutter. Sæt en øvre grænse for forsøg, så et fastlåst job ikke blokerer dit script for 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. Trin 4

    Persistér outputtet

    Når status skifter til completed, indeholder data.output_url det renderede billede. Download bytes til dit eget lager, så dit produkt ikke afhænger af Phottas CDN for rendering.

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

    Håndtér fejltilstande ærligt

    Forgren på HTTP-statuskoden: 402 for utilstrækkelige credits, 429 for rate limits (overhold Retry-After), 5xx for midlertidige serverfejl. Hver error body indeholder en maskinlæsbar error.code, du kan agere 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

Spørgsmål udviklere stiller

Spørgsmål om at komme i gang

Hvor lang tid tager quickstarten?

Fem minutter til oprettelse + nøglegenerering + første cURL. Selve genereringen tager 1.5 til 4 minutter, så regn med ti minutters reel tid, før du ser dit første billede på en model.

Skal jeg bruge et kreditkort for at prøve det?

Nye konti leveres med prøve-credits, du kan bruge, før du betaler. Når du er klar til at gå i produktion, kan du tegne et abonnement for at få en højere månedlig credits-saldo og hurtigere rate limits.

Hvilket endpoint bør jeg prøve først?

Apparel try-on (/api/v1/tryon/apparel) — det er det mest brugte, dokumentationen er den mest komplette, og det dækker det async + polling-mønster, som alle andre Photta-endpoints genbruger. Når du er fortrolig med det, fungerer smykker og ghost mannequin på samme måde.

Kan jeg køre det fra browseren?

Nej. Din API-nøgle skal forblive på serversiden — sender du den til en browser, lækkes den til alle besøgende. Rute kald gennem en tynd proxy på dit eget backend (Next.js route handler, Express, Flask, Lambda) og lad browseren tale med din proxy i stedet.

Relaterede sider

Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket

Du er fem minutter fra dit første billede

  • Bearer key
  • async, polling
  • 600 requests/min