cURL · Virtual Try-On API
Virtual Try-On API cURLilla
Nopein tapa ymmärtää mitä tahansa API:a on kutsua sitä terminaalista. Phottan dokumentaatio on suunniteltu cURL edellä — kaikki tällä sivulla toimii komentorivillä.
Yhdellä lauseella
Aseta `PHOTTA_API_KEY`, lähetä POST osoitteeseen `https://ai.photta.app/api/v1/tryon/apparel` oikealla JSON-rungolla, ota tunnus talteen ja pollata `curl … /tryon/apparel/:id` 3 sekunnin välein, kunnes `data.status` on `completed`. Käytä `jq`-työkalua URL-osoitteen poimimiseen.
Päivitetty · 2026-04-19
Ensimmäinen pyyntösi
# 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
doneMitä odottaa
Typical completion
1.5–4min
2K / 4K credits
5 / 7
Aspect ratios
5
Product types
6
Miten se toimii
Virtual Try-On API cURLilla
Viisi komentorivivaihetta, nolla riippuvuutta curl- ja jq-työkalujen lisäksi.
- 01
Vaihe 1
Rekisteröidy ja generoi avain
Mene osoitteeseen ai.photta.app, avaa Developers-välilehti ja klikkaa Generate API key. Live-avaimet alkavat `photta_live_`.
- 02
Vaihe 2
Aseta avain muuttujaan
Suorita `export PHOTTA_API_KEY="photta_live_xxx"` profiilissasi tai `.envrc`-tiedostossa, jotta kaikki myöhemmät kutsut käyttävät sitä automaattisesti.
- 03
Vaihe 3
Aseta perus-URL
`export PHOTTA_BASE_URL="https://ai.photta.app/api/v1"` pitää komennot lyhyinä ja helpottaa testausympäristöön vaihtamista myöhemmin.
- 04
Vaihe 4
Lähetä ja pollata
POST-pyyntö `$PHOTTA_BASE_URL/tryon/apparel` antaa tunnuksen, sitten pollata `curl $PHOTTA_BASE_URL/tryon/apparel/$ID` 3 sekunnin välein. Putkita vastaus jq:lle tilan tarkistamiseksi.
- 05
Vaihe 5
Tallenna lopputulos
Kun työ on valmis, poimi `.data.output_url` jq:lla ja käytä `curl -o` tallentaaksesi tavut paikallisesti.
Koodi alusta loppuun
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' ;;
esacMiksi tämä muoto
Miksi cURL on edelleen nopein tapa testata API:a
- 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
Mitä se ei tee
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
Muiden kehittäjien kysymyksiä
Questions other developers ask
Onko Phottalla CLI-työkalua?+
Ei vielä — mutta cURL ja pieni bash-kääre hoitavat saman asian. Dokumentaatio suosii cURL-esimerkkejä, koska se on yhteinen kieli kaikissa CI-putkissa.
Tarvitsenko jq-työkalua?+
Et välttämättä — mutta se helpottaa skriptausta huomattavasti. jq:lla voit poimia `.data.id`, `.data.status` ja `.data.output_url` ilman manuaalista jäsennystä. Asennus: `brew install jq` (macOS) tai `apt install jq` (Linux).
Miten tunnistaudun curlilla?+
Lisää `-H "Authorization: Bearer $PHOTTA_API_KEY"` jokaiseen pyyntöön. Pidä avain muuttujassa, älä kirjoita sitä suoraan skripteihin, jotka tallennat versiohallintaan.
Voinko käyttää curl-skriptejä tuotannossa?+
Kertaluonteisiin massapäivityksiin kyllä — tuhannet tiimit tekevät niin. Pitkäikäisessä sovelluksessa oikea ohjelmointikieli on parempi virhekäsittelyn ja havaittavuuden vuoksi. Pyynnön muoto pysyy samana.
Miten pollata bash-silmukassa?+
Käytä `for i in $(seq 1 120); do … ; sleep 3; done` -rakennetta. Keskeytä silmukka, kun tila on `completed` tai `failed`. Tämän sivun koodiesimerkki näyttää tarkan mallin.
Miten luen virhevastaukset curlilla?+
Käytä `curl -w "\n%{http_code}"` saadaksesi HTTP-tilakoodin. Toimi koodin mukaan: 402 (ei krediittejä), 429 (nopeusrajoitus), 5xx (palvelinvirhe). Virheviesti on aina JSON-kentissä `error.code` ja `error.message`.
cURL · Virtual Try-On API
Luo tili ja hanki API-avain
Aseta `PHOTTA_API_KEY`, lähetä POST osoitteeseen `https://ai.photta.app/api/v1/tryon/apparel` oikealla JSON-rungolla, ota tunnus talteen ja pollata `curl … /tryon/apparel/:id` 3 sekunnin välein, kunnes `data.status` on `completed`. Käytä `jq`-työkalua URL-osoitteen poimimiseen.