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')

Jak to działa

Od jednego klucza do usługi multi-tenant

Pięć decyzji architektonicznych, które musisz podjąć przed napisaniem kodu produkcyjnego.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

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.