cURL · Sanal Giyim Deneme API'si

cURL ile Sanal Giyim Deneme API'si

Herhangi bir API'yi anlamanın en hızlı yolu onu shell üzerinden çağırmaktır. Photta'nın dokümanları tasarım gereği cURL önceliklidir — bu sayfadaki her şey tek bir terminalde çalışır, Node veya Python gerektirmez.

Tek cümlede

`PHOTTA_API_KEY` değerini export edin, doğru JSON gövdesiyle `https://ai.photta.app/api/v1/tryon/apparel` adresine POST yapın, generation ID'yi yakalayın, ardından `data.status` değeri `completed` olana kadar her 3 saniyede bir `curl … /tryon/apparel/:id` döngüsünü çalıştırın — genellikle 1.5 ile 4 dakika sürer. Nihai yanıttan çıktı URL'sini çıkarmak için `jq` ile eşleştirin.

Güncellendi · 2026-04-19

İlk isteğiniz

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

Neler beklenmeli

Typical completion

1–3min

2K / 4K credits

4 / 6

Styles

2

Batch-ready

yes

Nasıl çalışır

cURL ile Sanal Giyim Deneme API'si

Beş shell adımı, curl ve jq dışında sıfır bağımlılık.

  1. 01

    Adım 1

    Kaydolun ve bir anahtar oluşturun

    ai.photta.app adresine gidin, Geliştiriciler sekmesini açın, Generate API key butonuna tıklayın. Canlı anahtarlar `photta_live_` ile başlar.

  2. 02

    Adım 2

    Anahtarı export edin

    `export PHOTTA_API_KEY="photta_live_xxx"` komutunu shell profilinize veya bir `.envrc` dosyasına ekleyin, böylece sonraki her curl çağrısı onu otomatik olarak alır.

  3. 03

    Adım 3

    Temel URL'yi sabitleyin

    `export PHOTTA_BASE_URL="https://ai.photta.app/api/v1"` komutu curl komutlarını kısa tutar ve sandbox URL'si çıktığında değiştirmeyi kolaylaştırır.

  4. 04

    Adım 4

    Gönderin ve poll edin

    Bir ID almak için `$PHOTTA_BASE_URL/tryon/apparel` adresine POST yapın, ardından her 3 saniyede bir `curl $PHOTTA_BASE_URL/tryon/apparel/$ID` döngüsünü çalıştırın. `.data.status` değerini temiz bir şekilde çıkarmak için yanıtı jq'ya pipe edin.

  5. 05

    Adım 5

    Sonucu kalıcı hale getirin

    İş tamamlandığında, `.data.output_url` değerini jq ile çekin ve byte'ları `curl -o` ile yerel depolamaya indirin — bir sonraki pipeline adımınız için hazır.

Uçtan uca kod

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

Neden bu yapı

Neden cURL hala bir API'yi doğrulamanın en hızlı yoludur

  • 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

Neleri yapmaz

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

Diğer geliştiricilerin sorduğu sorular

Questions other developers ask

Bir Photta CLI aracı var mı?+

Henüz değil — ancak cURL ve on beş satırlık bir bash wrapper sizi yolun büyük kısmına ulaştırır. Dokümanlar cURL öncelikli örneklere öncelik verir çünkü her dil bir alt süreç çalıştırabilir ve shell, CI pipeline'larındaki ortak paydadır.

API'yi kullanmak için jq'ya ihtiyacım var mı?+

Kesinlikle değil — ancak script tabanlı pipeline'lar onunla çok daha kolaydır. jq, JSON yanıtından `.data.id`, `.data.status` ve `.data.output_url` değerlerini elle ayrıştırmadan çekmenizi sağlar. macOS'te `brew install jq` veya Debian/Ubuntu'da `apt install jq` ile kurun.

curl ile nasıl kimlik doğrularım?+

Her isteğe `-H "Authorization: Bearer $PHOTTA_API_KEY"` ekleyin. Anahtarı bir env değişkeninde tutun, asla commit ettiğiniz bir script'in içine yazmayın. `curl --oauth2-bearer` da çalışır ancak açık header formu dokümanlarda ve loglarda daha nettir.

Üretimde curl tabanlı script'leri kullanabilir miyim?+

Tek seferlik toplu doldurmalar ve cron işleri için evet — binlerce ekip katalog güncellemelerini bu şekilde yapıyor. Uzun ömürlü bir uygulama için, düzgün hata yönetimi, yeniden denemeler ve izlenebilirlik sağladığı için gerçek bir programlama dili genellikle daha iyidir. Bu sayfadaki curl örnekleri, Node veya Python'a port ettikten sonra bile geçerliliğini korur; istek yapısı aynıdır.

Bir bash döngüsünden nasıl polling yaparım?+

Döngü gövdesinde durum kontrolü olacak şekilde `for i in $(seq 1 120); do … ; sleep 3; done` kullanın. `.data.status` değeri `completed` veya `failed` olduğunda döngüden çıkın. Bu sayfadaki kod örneği, hatalı bir işin script'i sonsuza kadar askıda bırakmaması için sert bir üst sınır dahil olmak üzere tam deseni göstermektedir.

curl'de hata yanıtlarını nasıl okurum?+

JSON gövdesinin yanı sıra HTTP durum kodunu da yakalamak için `curl -w "\n%{http_code}"` kullanın. Duruma göre dallanın: Yetersiz kredi için 402, rate limit'ler için 429 (Retry-After değerine uyun), geçici sunucu hataları için 5xx. Hata gövdesi her zaman bir `error.code` ve `error.message` alanına sahiptir.

cURL · Sanal Giyim Deneme API'si

Hesap oluşturun ve bir API anahtarı alın

`PHOTTA_API_KEY` değerini export edin, doğru JSON gövdesiyle `https://ai.photta.app/api/v1/tryon/apparel` adresine POST yapın, generation ID'yi yakalayın, ardından `data.status` değeri `completed` olana kadar her 3 saniyede bir `curl … /tryon/apparel/:id` döngüsünü çalıştırın — genellikle 1.5 ile 4 dakika sürer. Nihai yanıttan çıktı URL'sini çıkarmak için `jq` ile eşleştirin.

cURL ile Sanal Giyim Deneme API'si — Photta | Photta