Szybki start
Pierwsze zdjęcie Photta w mniej niż pięć minut.
Jedno konto, jeden klucz API, pięć poleceń w konsoli. Poniższe kroki dokładnie odpowiadają zaleceniom oficjalnej dokumentacji Photta — bez wrapperów, bez SDK, bez założeń co do frameworka.
W jednym zdaniu
Zarejestruj się na ai.photta.app, kliknij Generate API key, wyeksportuj go jako PHOTTA_API_KEY, wyślij POST do /api/v1/tryon/apparel i odpytuj zwrócony identyfikator generacji co 3 sekundy do zmiany statusu na completed — zwykle w 1.5 do 4 minut.
Jak to działa
Pięć poleceń od zera do pierwszego zdjęcia
Wklejaj je po kolei do terminala. Każdy fragment jest samowystarczalny i używa tylko curl + jq.
- 01
Krok 1
Wygeneruj klucz API
Zarejestruj się na ai.photta.app i otwórz panel Developers. Kliknij Generate API key — klucze live zaczynają się od photta_live_. Wyeksportuj go, aby reszta poradnika mogła go odczytać z powłoki.
# Sign up at ai.photta.app, open the Developers dashboard, # click "Generate API key" and copy it into your env. export PHOTTA_API_KEY="photta_live_xxxxx" export PHOTTA_BASE_URL="https://ai.photta.app/api/v1" - 02
Krok 2
Wyślij pierwszą przymierzalnię (POST)
Wywołaj /api/v1/tryon/apparel z URL zdjęcia produktu, mannequin ID i pose ID. API natychmiast odpowie 202 Accepted i zwróci identyfikator generacji w data.id.
curl -X POST "$PHOTTA_BASE_URL/tryon/apparel" \ -H "Authorization: Bearer $PHOTTA_API_KEY" \ -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" }' # Response: 202 Accepted + data.id (generation ID) - 03
Krok 3
Odpytuj do zakończenia
Wywołuj GET /api/v1/tryon/apparel/:id co 3 sekundy. Typowy czas to 1.5–4 minuty. Ustal limit prób, aby zawieszone zadanie nie blokowało skryptu w nieskończoność.
# Loop every 3 seconds until status flips to "completed". # Typical completion: 1.5–4 minutes. Max 120 attempts = 6 min. for i in $(seq 1 120); do RESULT=$(curl -s "$PHOTTA_BASE_URL/tryon/apparel/$ID" \ -H "Authorization: Bearer $PHOTTA_API_KEY") STATUS=$(echo "$RESULT" | jq -r '.data.status') [ "$STATUS" = "completed" ] && break [ "$STATUS" = "failed" ] && echo "Job failed" && exit 1 sleep 3 done - 04
Krok 4
Zapisz wynik
Gdy status zmieni się na completed, data.output_url zawiera wygenerowany obraz. Pobierz bajty do własnego magazynu, aby Twój produkt nie polegał na CDN Photta.
# Pull the final URL out of the response and save the bytes. OUTPUT_URL=$(echo "$RESULT" | jq -r '.data.output_url') curl -sO "$OUTPUT_URL" echo "Saved $(basename "$OUTPUT_URL")" - 05
Krok 5
Rzetelna obsługa błędów
Reaguj na kody statusu HTTP: 402 przy braku kredytów, 429 przy limitach (Retry-After), 5xx przy błędach serwera. Każdy błąd zawiera maszynowy error.code, na podstawie którego możesz podjąć akcję.
# Surface the common failure modes honestly. case "$STATUS_CODE" in 402) echo "Out of credits — top up at ai.photta.app" ;; 429) echo "Rate limited — honour Retry-After header" ;; 4??) echo "Client error: $(echo "$BODY" | jq '.error.message')" ;; 5??) echo "Server error — retry with backoff" ;; esac
Pytania innych programistów
Pytania o rozpoczęcie pracy
Jak długo trwa szybki start?+
Pięć minut na rejestrację + klucz + pierwszy cURL. Sama generacja trwa od 1.5 do 4 minut, więc zarezerwuj dziesięć minut czasu zegarowego, zanim zobaczysz pierwsze zdjęcie na modelu.
Czy potrzebuję karty kredytowej, aby spróbować?+
Nowe konta otrzymują kredyty próbne (trial), które możesz wykorzystać przed dokonaniem płatności. Gdy będziesz gotowy do produkcji, wykup plan z wyższym limitem i szybszymi limitami zapytań.
Który endpoint wypróbować jako pierwszy?+
Przymierzalnię odzieży (/api/v1/tryon/apparel) — jest najczęściej używana, ma najpełniejszą dokumentację i korzysta z wzorca asynchronicznego odpytywania, który powtarzają inne endpointy. Gdy to opanujesz, biżuteria i ghost mannequin działają tak samo.
Czy mogę uruchomić to z przeglądarki?+
Nie. Twój klucz API musi pozostać po stronie serwera — umieszczenie go w przeglądarce ujawni go każdemu odwiedzającemu. Przesyłaj wywołania przez proxy na własnym backendzie (Next.js route handler, Express, Flask, Lambda).