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
# 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
doneNeler beklenmeli
Typical completion
1.5–4min
2K / 4K credits
5 / 7
Aspect ratios
5
Product types
6
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.
- 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.
- 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.
- 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.
- 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.
- 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.
# 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"# 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"# 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# -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' ;;
esacNeden 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.