cURL · Virtual Try-On API
Virtual Try-On API med cURL
Den raskeste måten å forstå et API på er å kalle det fra terminalen. Phottas dokumentasjon er cURL-fokusert — alt på denne siden kan kjøres direkte i terminalen uten Node eller Python.
Kort fortalt
Eksporter `PHOTTA_API_KEY`, send POST til `https://ai.photta.app/api/v1/tryon/apparel` med riktig JSON, hent genererings-ID-en, og kjør en loop med `curl … /tryon/apparel/:id` hvert 3 sekunder til `data.status` blir `completed` — vanligvis innen 1.5–4 minutes. Bruk `jq` for å hente ut bilde-URL-en fra den endelige responsen.
Oppdatert · 2026-04-19
Din første forespørsel
# 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
doneHva du kan forvente
Typical completion
1.5–4min
2K / 4K credits
5 / 7
Aspect ratios
5
Product types
6
Slik fungerer det
Virtual Try-On API med cURL
Fem terminal-steg, null avhengigheter utover curl og jq.
- 01
Steg 1
Registrer deg og generer en nøkkel
Gå til ai.photta.app, åpne Developers-fanen, og klikk på Generate API key. Live-nøkler starter med `photta_live_`.
- 02
Steg 2
Eksporter nøkkelen
Legg `export PHOTTA_API_KEY="photta_live_xxx"` i din shell-profil eller en `.envrc`-fil slik at alle påfølgende curl-kall plukker den opp automatisk.
- 03
Steg 3
Sett base-URL
`export PHOTTA_BASE_URL="https://ai.photta.app/api/v1"` holder curl-kommandoene korte og gjør det enkelt å bytte til en sandkasse-URL senere.
- 04
Steg 4
Send inn og poll
POST til `$PHOTTA_BASE_URL/tryon/apparel` for å få en ID, og kjør deretter `curl $PHOTTA_BASE_URL/tryon/apparel/$ID` i en loop hvert 3 sekunder. Send responsen til jq for å lese `.data.status` enkelt.
- 05
Steg 5
Lagre resultatet
Når jobben er ferdig, hent ut `.data.output_url` med jq og bruk `curl -o` for å lagre bildedataene lokalt.
Kode, ende-til-ende
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' ;;
esacHvorfor dette formatet
Hvorfor cURL fortsatt er den raskeste måten å verifisere et API på
- 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
Hva det ikke gjø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
Spørsmål andre utviklere stiller
Questions other developers ask
Finnes det et Photta CLI-verktøy?+
Ikke ennå — men cURL pluss en liten bash-wrapper tar deg nesten hele veien. Dokumentasjonen prioriterer cURL fordi alle språk kan kjøre en subprosess, og shell er fellesnevneren i CI-pipelines.
Må jeg bruke jq for å bruke API-et?+
Ikke strengt tatt — men skripting blir mye enklere. jq lar deg hente ut `.data.id`, `.data.status` og `.data.output_url` fra JSON-responsen uten manuell parsing. Installer med `brew install jq` på macOS eller `apt install jq` på Debian/Ubuntu.
Hvordan autentiserer jeg med curl?+
Legg til `-H "Authorization: Bearer $PHOTTA_API_KEY"` i hver forespørsel. Hold nøkkelen i en miljøvariabel, aldri skriv den direkte i et skript du lagrer. `curl --oauth2-bearer` fungerer også, men den eksplisitte header-formen er tydeligere i logger.
Kan jeg bruke curl-baserte skript i produksjon?+
For engangsjobber og cron-jobber, ja — mange team gjør det slik. For en permanent applikasjon er et ordentlig programmeringsspråk bedre for å få god feilhåndtering og observabilitet. Curl-eksemplene forblir gyldige selv om du går over til Node eller Python.
Hvordan poller jeg fra en bash-loop?+
Bruk `for i in $(seq 1 120); do … ; sleep 3; done` med en statussjekk inne i loopen. Avbryt når `.data.status` er `completed` eller `failed`. Kodeeksemplet på denne siden viser mønsteret, inkludert en øvre grense.
Hvordan leser jeg feilmeldinger i curl?+
Bruk `curl -w "\n%{http_code}"` for å se HTTP-statuskoden sammen med JSON-responsen. Håndter kodene: 402 for manglende credits, 429 for ratelimits (respekter Retry-After), 5xx for midlertidige serverfeil. Feilmeldingen inneholder alltid `error.code` og `error.message`.
cURL · Virtual Try-On API
Opprett en konto og hent en API-nøkkel
Eksporter `PHOTTA_API_KEY`, send POST til `https://ai.photta.app/api/v1/tryon/apparel` med riktig JSON, hent genererings-ID-en, og kjør en loop med `curl … /tryon/apparel/:id` hvert 3 sekunder til `data.status` blir `completed` — vanligvis innen 1.5–4 minutes. Bruk `jq` for å hente ut bilde-URL-en fra den endelige responsen.