Przewodnik · Migracja
Migracja z FASHN do Photta co się zmienia, a co pozostaje bez zmian
W jednym zdaniu
Przeniesienie integracji try-on do Photta oznacza nowy klucz bearer, nowe body żądania i nową ścieżkę statusu. Struktura integracji — submit, poll, download, store — nie ulega zmianie.
- Typowy czas: 1.5–4 min
- Credits: 5 credits w 2K · 6 credits w 4K
- Przetwarzanie: asynchroniczne, polling
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Krótka odpowiedź
Zespoły migrują między API try-on ze standardowych powodów: wyniki lepiej pasują do ich katalogu, cena za obraz wypada korzystniej przy ich wolumenie lub potrzebują funkcji, której obecny dostawca nie oferuje — wsadowego ghost mannequin, zbliżeń detali czy wygenerowanych modeli wykorzystywanych wielokrotnie w trakcie sezonu.
Trzy kwestie: poświadczenia, treść żądania i ścieżka statusu. Photta wymaga klucza bearer przy każdym wywołaniu, stosuje własne nazwy pól i raportuje stan zadania na osobnym endpoincie statusu dla każdej funkcji. Każda wartość wysyłana przez Twój kod jest udokumentowana jako enum lub id, które możesz wcześniej wylistować.
Architektura. W obu przypadkach są to asynchroniczne API działające w modelu submit i poll, więc Twoja kolejka, worker, polityka ponawiania prób i storage działają bez zmian. W praktyce migracja sprowadza się do nowego modułu klienta i nowego zestawu nazw pól, a nie budowy nowego potoku.
Endpoint, na który migrujesz
Pobrane z dokumentacji API Photta, niepisane ręcznie.
W skrócie
- Endpoint
- POST /api/v1/tryon/apparel
- Uwierzytelnianie
- Klucz API Bearer
- Przetwarzanie
- Asynchroniczne — odpytuj endpoint statusu
- Typowy czas
- 1.5–4 min
- Credits
- 5 credits w 2K · 6 credits w 4K
- Proporcje obrazu
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Limity wejściowe
- Do 10 MB na obraz; JPEG, PNG, WebP
- Idempotentne
- Nie
Cztery kwestie, które faktycznie się zmieniają
Uwierzytelnianie
Jeden klucz Bearer dla każdego endpointu, generowany w panelu Photta. Brak uprawnień per-endpoint i brak etapu wymiany tokenów.
Ciało żądania
Photta przyjmuje pola w snake_case z udokumentowanymi typami enum oraz identyfikatory modelu, pozy i tła, które pobierasz z endpointów zasobów i cachujesz.
Polling
Odpytuj status endpoint danej funkcji co 3 sekundy, aż zwróci completed lub failed. Nie ma webhooków, więc nie musisz wystawiać niczego publicznie.
Rozliczenia
Credits za wywołanie — 5 przy 2K i 6 przy 4K dla apparel try-on — pobierane w momencie startu zadania i zwracane automatycznie w przypadku błędu.
Nowe żądanie
To samo wywołanie w cURL, Node.js i Python.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": true,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": true,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/tryon/apparel",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": True,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
},
)
data = res.json()["data"] # data["id"], data["status"]Pytania dotyczące migracji
Ile trwa migracja?
To kwestia jednego modułu klienta: nowy klucz, nowe nazwy pól, nowa ścieżka statusu. Jeśli Twój worker już wysyła zadania i wykonuje polling, reszta kodu pozostaje bez zmian.
Czy muszę zmieniać system kolejek?
Nie. Oba API są asynchroniczne, więc cokolwiek stosujesz obecnie — Celery, BullMQ, Inngest, tabelę cron — zachowuje swoją strukturę. Zmieniają się tylko wywołania wewnątrz zadania.
Co z wygenerowanymi wcześniej obrazami?
To pliki w Twoim własnym storage'u i nic w nich się nie zmienia. Migracja wpływa na to, co renderujesz w kolejnym kroku, a nie na to, co zostało już opublikowane.
Jak wypadają ceny w porównaniu?
Strona z porównaniem zestawia koszt Photta w credits za wywołanie z danymi publikowanymi przez FASHN w ich własnym cenniku, wraz z datą odczytania każdej wartości. O tym, co opłaca się bardziej, decyduje Twój wolumen.
Czy mogę używać obu rozwiązań jednocześnie?
Tak, i jest to najbezpieczniejszy sposób na migrację. Przepuść część katalogu przez nowy endpoint, porównaj wyniki na rzeczywistych produktach, a potem przenieś resztę.
Warto przeczytać
Możliwości
API wirtualnego try-on dla odzieży
REST API, które nakłada odzież na manekiny AI. Asynchroniczne, generowanie w 1.5–4 minuty, 5 credits przy 2K, 6 przy 4K. Przykłady dla cURL, Node.js i Python.
CzytajPorównaj
Photta vs FASHN — API AI dla branży fashion, zestawienie
Porównanie Photta i FASHN: endpointy, ceny credits, plany subskrypcyjne, limity współbieżności. Źródłem są oficjalne strony cenników obu firm z dnia 2026-04-19. Żadnych zmyślonych liczb.
CzytajDokumentacja
Cennik Photta API
Informacje o kosztach każdego endpointu Photta API w credits dla rozdzielczości 2K i 4K, zasadach naliczania opłat i zwrotów oraz bezpłatnych endpointach. Brak bezpośredniej ceny pieniężnej za zdjęcie.
CzytajDokumentacja
Rate limity Photta API
Rate limit Photta API, jego okno, nagłówek Retry-After, interwał dla pollingu oraz limity współbieżności według planu — wszystko prosto z dokumentacji API.
CzytajSzybki start
Pierwszy obraz z Photta w mniej niż pięć minut.
Zarejestruj się, wygeneruj klucz API, wykonaj pierwsze wywołanie cURL, odpytuj aż do ukończenia, zapisz wynik. Pięć kroków opisanych od początku do końca.
Czytaj
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Uruchom oba, potem przełącz
Skieruj kopię swojej kolejki na nowy endpoint i samodzielnie porównaj wyniki.
- 1.5–4 min
- 5 credits w 2K · 6 credits w 4K
- asynchroniczne, polling