cURL · Virtual Try-On API
Virtual Try-On API med cURL
Det snabbaste sättet att förstå ett API är att anropa det från skalet. Phottas dokumentation är cURL-fokuserad av design — allt på denna sida går att köra i en terminal, utan krav på Node eller Python.
I en mening
Exportera PHOTTA_API_KEY, skicka POST till https://ai.photta.app/api/v1/tryon/apparel med rätt JSON-body, fånga generations-ID:t och loopa sedan curl … /tryon/apparel/:id var 3:e sekund tills data.status ändras till completed — vanligtvis inom 1.5 till 4 minuter. Kombinera med jq för att extrahera resultatets URL från det slutgiltiga svaret.
Uppdaterad · 2026-04-19
Din första förfrågan
# 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
doneVad du kan förvänta dig
Typical completion
1.5–4min
2K / 4K credits
5 / 7
Jewelry types
4
Close-up mannequins
built-in
Så fungerar det
Virtual Try-On API med cURL
Fem steg i skalet, noll beroenden utöver curl och jq.
- 01
Steg 1
Registrera dig och generera en nyckel
Gå till ai.photta.app, öppna fliken för utvecklare, klicka på Generate API key. Live-nycklar börjar med photta_live_.
- 02
Steg 2
Exportera nyckeln
Lägg export PHOTTA_API_KEY="photta_live_xxx" i din skalprofil eller en .envrc-fil så att alla efterföljande curl-anrop hittar den automatiskt.
- 03
Steg 3
Spara bas-URL:en
export PHOTTA_BASE_URL="https://ai.photta.app/api/v1" håller dina curl-kommandon korta och gör det enkelt att byta till en sandbox-URL när en sådan lanseras.
- 04
Steg 4
Skicka och polla
Skicka POST till $PHOTTA_BASE_URL/tryon/apparel för att få ett ID, loopa sedan curl $PHOTTA_BASE_URL/tryon/apparel/$ID var 3:e sekund. Pipe:a svaret till jq för att extrahera .data.status snyggt.
- 05
Steg 5
Spara resultatet
När jobbet är klart, hämta .data.output_url med jq och använd curl -o för att ladda ner rådatan lokalt — redo för nästa steg i din pipeline.
Kod, hela vägen
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' ;;
esacVarför denna struktur
Varför cURL fortfarande är det snabbaste sättet att verifiera ett API
- 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
Vad den inte gör
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
Frågor från andra utvecklare
Questions other developers ask
Finns det ett Photta CLI-verktyg?+
Inte ännu — men cURL plus en bash-wrapper på femton rader räcker långt. Dokumentationen prioriterar cURL-exempel eftersom alla språk kan köra en underprocess, och skalet är den gemensamma nämnaren i CI-pipelines.
Behöver jag jq för att använda API:et?+
Inte strikt — men skriptade pipelines blir mycket enklare med det. jq låter dig hämta .data.id, .data.status och .data.output_url från JSON-svaret utan att behöva parsa det manuellt. Installera med brew install jq på macOS eller apt install jq på Debian/Ubuntu.
Hur autentiserar jag med curl?+
Lägg till -H "Authorization: Bearer $PHOTTA_API_KEY" i varje anrop. Behåll nyckeln i en miljövariabel, skriv aldrig in den direkt i ett skript du sparar. curl --oauth2-bearer fungerar också, men den explicita header-formen är tydligare i dokumentation och loggar.
Kan jag använda curl-baserade skript i produktion?+
För enstaka batch-uppdateringar och cron-jobb, ja — tusentals team hanterar kataloguppdateringar på detta sätt. För en långlivad applikation är ett riktigt programmeringsspråk oftast bättre eftersom du får korrekt felhantering, retries och observerbarhet. cURL-exemplen på denna sida förblir korrekta även efter att du portat till Node eller Python; förfrågans struktur är densamma.
Hur pollar jag från en bash-loop?+
Använd for i in $(seq 1 120); do … ; sleep 3; done med statuskontrollen inuti loopen. Avbryt när .data.status är completed eller failed. Kodexemplet på denna sida visar det exakta mönstret, inklusive en hård övre gräns så att ett fastnat jobb inte låser skriptet för evigt.
Hur läser jag felsvar i curl?+
Använd curl -w "\n%{http_code}" för att fånga HTTP-statuskoden tillsammans med JSON-svaret. Aggera utifrån status: 402 för otillräckliga credits, 429 för rate limits (följ Retry-After-värdet), 5xx för tillfälliga serverfel. Felmeddelandet innehåller alltid fälten error.code och error.message.
cURL · Virtual Try-On API
Skapa ett konto och hämta en API-nyckel
Exportera PHOTTA_API_KEY, skicka POST till https://ai.photta.app/api/v1/tryon/apparel med rätt JSON-body, fånga generations-ID:t och loopa sedan curl … /tryon/apparel/:id var 3:e sekund tills data.status ändras till completed — vanligtvis inom 1.5 till 4 minuter. Kombinera med jq för att extrahera resultatets URL från det slutgiltiga svaret.