Build · SaaS do fotografii AI
Zbuduj usługę fotografii produktowej AI
W jednym zdaniu
Przydziel klucz Photta API na tenanta (lub wspólną pulę przy małym wolumenie), wykonaj fanout katalogu każdego klienta do kolejki, wywołuj /api/v1/tryon/apparel per produkt, odpytuj o identyfikatory generowania w puli workerów, przechowuj wyniki w buckecie klienta i fakturowuj każdą jednostkę rozliczeniową (credit lub wyrenderowany obraz) z narzutem marży na koszt credits w Photta.
- Credits: 5 credits w 2K · 6 credits w 4K
- Typowy czas: 1.5–4 min
- Przetwarzanie: asynchroniczne, polling
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Wykonaj fanout na katalogach swoich klientów, zlecaj zadania try-on na produkt, wystawiaj faktury na podstawie zużytych credits. Te same prymitywy, które Photta udostępnia pojedynczym deweloperom, składają się na SaaS typu white-label — jeśli tylko zachowasz odpowiednie granice architektoniczne.
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"]Jak to działa
Od jednego klucza do usługi multi-tenant
Pięć decyzji architektonicznych, które musisz podjąć przed napisaniem kodu produkcyjnego.
Krok 1
Zdefiniuj kontrakt swojego produktu
Zdecyduj, co Twój klient otrzymuje za jednostkę rozliczeniową: jeden wyrenderowany obraz? Paczkę? Miesięczną pulę credits? Twoja odpowiedź determinuje wszystko inne — głębokość kolejki, politykę retry, treści na stronie z cennikiem.
Krok 2
Przydzielaj klucze Photta per-tenant
Mała skala: jeden współdzielony klucz, śledzenie użycia per tenant we własnej bazie danych. Większa skala: jeden klucz Photta na tenanta, zarządzany przez dashboard Photta — czytelniejsze przypisanie kosztów, mniejszy promień rażenia w przypadku wycieku.
Krok 3
Zastosuj fanout przez kolejkę
Dla każdego produktu w feedzie klienta dodaj zadanie fotograficzne do kolejki. Nigdy nie wysyłaj żądań synchronicznie podczas importu CSV — uderzysz w limit 600 żądań na minutę i stracisz zadania przez błędy 429.
Krok 4
Marża doliczana do ceny credits
Każdy render odzieży w 4K kosztuje Cię 6 credits. Każda wystawiona przez Ciebie faktura powinna wynosić credits × Twoja marża. Rejestruj bazowy koszt credits w swojej księdze rozliczeń, aby dział finansowy mógł uzgodnić fakturę od Photta z Twoją linią przychodów.
Krok 5
Monitoruj opóźnienia i wskaźnik błędów
Śledź czas ukończenia + failure rate per tenant. Kiedy zdjęcia klienta konsekwentnie generują się dłużej niż 4 minuty lub ciągle kończą się błędem, prawie zawsze jest to wina nieprawidłowych danych wejściowych (uszkodzony URL, nieobsługiwany product_type) — a nie problem po stronie Photta.
Trzy wzorce, których będziesz potrzebować
Fanout, dispatch per-tenant, rejestr rozliczeń — kluczowe elementy nośne w SaaS do fotografii.
// For each product in the customer's feed, kick off a try-on.
for (const product of catalog) {
await photoQueue.add("photo", {
customerId: product.customer_id,
productUrl: product.image,
productType: product.type, // "top" | "bottom" | "top_and_bottom" | "one_piece"
});
}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.status// A completed apparel job costs 5 credits at 2K and 6 at 4K.
// Record it to your billing pipeline so you can margin on top of it.
await billingLedger.append({
customer: data.customerId,
sku: "photo-4k",
quantity: 1,
wholesaleCost: 6, // credits, = your Photta spend
});Pytania zadawane przez programistów
Uruchamianie usługi na bazie Photta
Czy potrzebuję osobnego klucza Photta API dla każdego tenanta?
Nie, ale pomaga to przy większej skali. Poniżej garści klientów jeden współdzielony klucz ze śledzeniem zużycia per-tenant we własnej bazie danych w zupełności wystarczy. Powyżej tego poziomu klucz na tenanta zapewnia czytelniejszą atrybucję, łatwiejszą rotację i mniejszy promień rażenia w przypadku wycieku danych.
Co zrobić, gdy skończą się credits?
API zwraca 402 insufficient_credits z liczbami required oraz available. Ustaw próg ostrzegawczy (np. 100 credits) i doładowuj konto automatycznie, zanim zadania zaczną kończyć się niepowodzeniem. Za nieudane zadania następuje refund credits, więc seria błędów 402 nie potęguje strat.
Jak wycenić własną usługę?
Photta pobiera 5 credits przy 2K i 6 credits przy 4K. Przelicz to na swoją walutę docelową (koszt × Twoja marża × przelicznik credits) i zdecyduj, czy rozliczać się za zdjęcie, za wsad, czy w abonamencie miesięcznym. Większość produktów SaaS do fotografii decyduje się na rozliczenie za zdjęcie z minimalną opłatą miesięczną.
Jakie SLA oferuje Photta?
Udokumentowany czas realizacji zadania w Photta wynosi od 1.5 do 4 minut. Brak opublikowanego, sztywnego SLA dotyczącego dostępności (uptime). Jeśli Twój SaaS gwarantuje własny czas realizacji, uwzględnij odpowiedni bufor we własnej umowie (np. „zdjęcia dostarczane w ciągu 1 godziny” daje 10-krotny margines bezpieczeństwa) i monitoruj opóźnienia per-tenant, aby wcześnie wykrywać regresje.
Czy mogę oferować usługę jako white-label?
Tak. Zwracane zdjęcia nie zawierają oznaczeń Photta. Możesz przesyłać je bezpośrednio do bucketa klienta z własną domeną CDN na froncie — Twój klient nie musi wiedzieć, że wygenerował je pipeline Photta. Samo API nie jest white-label — klucz i dashboard są brandowane przez Photta.
Powiązane strony
Dokumentacja referencyjna
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.
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.
CzytajMożliwości
Ghost mannequin API do zdjęć produktowych typu hollow-man
Endpoint AI ghost mannequin. Usuń manekina ze zdjęcia odzieży i zachowaj detale wnętrza. 3D lub flat-lay, przetwarzanie wsadowe, 4 credits w 2K.
Czytaj
Każda liczba na tej stronie pochodzi z dokumentacji API Photta · sprawdzono
Zbuduj SaaS fotograficzny na bazie Photta
To samo API, Twoja marka, Twoja marża. Pobierz klucz API, zaimplementuj trzy powyższe wzorce w swoich workerach i jesteś w połowie drogi do wdrożenia.