Hızlı Başlangıç

Beş dakikadan kısa sürede ilk Photta görseli.

Tek cümlede

ai.photta.app adresinde kaydolun, Generate API key seçeneğine tıklayın, bunu PHOTTA_API_KEY olarak export edin, /api/v1/tryon/apparel adresine POST isteği atın ve dönen üretim ID'sini durum completed olana kadar her 3 saniyede bir yoklayın — genellikle 1.5 ila 4 dakika içinde tamamlanır.

  • Kimlik doğrulama: Bearer anahtarı
  • İşleme: asenkron, polling
  • Sınırlar: 600 istek/dk

Bu sayfadaki her veri şuradan alınmıştır: Photta API dokümantasyonu · kontrol edildi

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

Nasıl çalışır

Sıfırdan ilk görsele beş komut

Bunları sırayla bir terminale yapıştırın. Her kod parçacığı bağımsızdır ve yalnızca curl + jq kullanır.

  1. Adım 1

    Bir API anahtarı oluşturun

    ai.photta.app adresinden kaydolun ve Developers panelini açın. Generate API key seçeneğine tıklayın — canlı anahtarlar photta_live_ ile başlar. Eğitimin geri kalanının bunu kabuğunuzdan okuyabilmesi için export edin.

    # 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. Adım 2

    İlk try-on isteğinizi POST edin

    Bir ürün görseli URL'si ve bir mannequin ID ile /api/v1/tryon/apparel endpoint'ine istek atın. API hemen 202 Accepted yanıtı verir ve data.id içinde bir üretim ID'si döndürür.

    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. Adım 3

    Tamamlanana kadar yoklayın (poll)

    Her 3 saniyede bir GET /api/v1/tryon/apparel/:id isteği atın. Tipik tamamlanma süresi 1.5–4 dakikadır. Takılan bir işin betiğinizi sonsuza kadar askıda bırakmaması için deneme sayısına bir üst sınır koyun.

    # $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. Adım 4

    Çıktıyı kalıcı hale getirin

    Durum completed değerine geçtiğinde, data.output_url işlenmiş görseli barındırır. Ürününüzün görsel sunumu için Photta'nın CDN'ine bağımlı kalmaması adına baytları kendi depolama alanınıza indirin.

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

    Hata durumlarını şeffaf bir şekilde yönetin

    HTTP durum koduna göre dallara ayırın: Yetersiz credits için 402, rate limit için 429 (Retry-After başlığını dikkate alın), geçici sunucu hataları için 5xx. Her hata gövdesi, aksiyon alabileceğiniz makine tarafından okunabilir bir error.code taşır.

    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

Geliştiricilerin sıkça sorduğu sorular

Başlangıç hakkında sorular

Hızlı başlangıç ne kadar sürer?

Kayıt olma + anahtar oluşturma + ilk cURL için beş dakika. Görselin üretilmesi 1.5 ila 4 dakika sürer, bu nedenle model üzerindeki ilk görselinizi görmeden önce toplamda on dakikalık bir süre planlayın.

Denemek için kredi kartına ihtiyacım var mı?

Yeni hesaplar, ödeme yapmadan önce harcayabileceğiniz deneme credits ile birlikte gelir. Canlıya geçmeye hazır olduğunuzda, daha yüksek aylık credit bakiyesi ve daha hızlı rate limit değerleri için bir plana abone olun.

Önce hangi endpoint'i denemeliyim?

Kıyafet try-on (/api/v1/tryon/apparel) — en yaygın kullanılanıdır, dokümantasyonu en eksiksiz olandır ve diğer tüm Photta endpoint'lerinin yeniden kullandığı asenkron + polling desenini kapsar. Burada deneyim kazandıktan sonra takı ve ghost mannequin de aynı şekilde çalışır.

Tarayıcıdan çalıştırabilir miyim?

Hayır. API anahtarınız sunucu tarafında kalmalıdır; bunu bir tarayıcıya göndermek anahtarı tüm ziyaretçilere sızdırır. Çağrıları kendi arka ucunuzdaki hafif bir proxy (Next.js route handler, Express, Flask, Lambda) üzerinden yönlendirin ve tarayıcının bunun yerine proxy'nizle konuşmasını sağlayın.

İlgili sayfalar

Bu sayfadaki her veri şuradan alınmıştır: Photta API dokümantasyonu · kontrol edildi

İlk görselinize beş dakika uzaklıktasınız

  • Bearer anahtarı
  • asenkron, polling
  • 600 istek/dk