Build · KI-Fotografie-SaaS

Einen Service für KI-Produktfotografie aufbauen

In aller Kürze

Einen Photta-API-Key pro Mandant bereitstellen (oder poolen, falls das Volumen klein ist), über den Katalog jedes Kunden in eine Queue auffächern, /api/v1/tryon/apparel pro Produkt aufrufen, die Generation-IDs in einem Worker-Pool pollen, Ergebnisse im Bucket deines Kunden speichern und jede abrechenbare Einheit (Credit oder gerendertes Bild) mit einer Marge auf die Credit-Kosten von Photta in Rechnung stellen.

  • Credits: 5 Credits bei 2K · 6 Credits bei 4K
  • Typische Dauer: 1.5–4 min
  • Verarbeitung: asynchron, Polling

Jeder Zahlenwert auf dieser Seite stammt aus der Photta-API-Dokumentation · geprüft

Über die Kataloge deiner Kunden auffächern, Try-on-Jobs pro Produkt dispatchen, nach Credits abrechnen. Dieselben Primitiven, die Photta einzelnen Entwicklern bereitstellt, lassen sich zu einem White-Label-SaaS kombinieren – wenn du die Grenzen respektierst.

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

Funktionsweise

Von einem Key zu einem mandantenfähigen Service

Fünf Architekturentscheidungen, die du treffen musst, bevor du produktiven Code schreibst.

  1. Schritt 1

    Definiere deinen Produktvertrag

    Entscheide, was dein Kunde pro Abrechnungseinheit erhält: Ein gerendertes Bild? Einen Batch? Einen monatlichen Credit-Pool? Deine Antwort bestimmt alles Weitere – Queue-Tiefe, Retry-Policy, Textierung der Preisseite.

  2. Schritt 2

    Photta-Keys pro Mandant bereitstellen

    Kleinere Skalierung: Ein geteilter Key, Nutzung pro Mandant in deiner Datenbank erfassen. Größere Skalierung: Ein Photta-Key pro Mandant, verwaltet über das Photta-Dashboard – klarere Zuordnung, geringerer Explosionsradius bei einem Datenleck.

  3. Schritt 3

    Über eine Queue auffächern

    Reihe für jedes Produkt im Kunden-Feed einen Foto-Job in die Queue ein. Niemals synchron während eines CSV-Imports übertragen – du wirst das Rate Limit von 600 Requests pro Minute erreichen und Jobs durch 429-Fehler verlieren.

  4. Schritt 4

    Marge auf den Credit-Preis aufschlagen

    Jeder 4K-Apparel-Render kostet dich 6 Credits. Jede Rechnung, die du stellst, sollte Credits × deine Marge lauten. Erfasse die reinen Credit-Kosten in deinem Ledger, damit die Buchhaltung die Photta-Rechnung mit deiner Umsatzzeile abgleichen kann.

  5. Schritt 5

    Latenz und Fehlerrate überwachen

    Verfolge die Fertigstellungszeit + Fehlerrate pro Mandant. Wenn die Fotos eines Kunden durchgehend länger als 4 Minuten dauern oder wiederholt fehlschlagen, liegt es fast immer an fehlerhaften Eingabedaten (beschädigte URL, nicht unterstützter product_type) – nicht an Photta.

Drei Muster, die du brauchen wirst

Fanout, Dispatching pro Mandant, Billing-Ledger – die tragenden Säulen eines Fotografie-SaaS.

// 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
});

Häufige Fragen von Entwicklern

Einen Service auf Basis von Photta betreiben

Brauche ich einen separaten Photta-API-Key pro Mandant?

Nein, aber es hilft bei zunehmender Skalierung. Bei einer Handvoll Kunden reicht ein geteilter Key mit Erfassung der Nutzung pro Mandant in deiner eigenen Datenbank völlig aus. Darüber hinaus bietet ein Key pro Mandant eine saubere Zuordnung, einfachere Rotation und einen kleineren Explosionsradius, falls etwas leckt.

Was mache ich, wenn die Credits aufgebraucht sind?

Die API gibt 402 insufficient_credits mit der benötigten und verfügbaren Anzahl zurück. Setze einen Schwellenwert (z. B. 100 Credits) und lade automatisch auf, bevor Jobs fehlschlagen. Fehlgeschlagene Jobs erstatten ihre Credits, sodass eine Welle von 402-Fehlern den Schaden nicht noch vergrößert.

Wie sollte ich mein Pricing gestalten?

Photta berechnet 5 credits bei 2K, 6 credits bei 4K. Rechnen Sie das in Ihre Endkundenwährung um (Kosten × Ihre Marge × Credit-Umrechnung) und entscheiden Sie, ob Sie pro Bild, pro Batch oder monatlich abrechnen. Die meisten Fotografie-SaaS-Produkte rechnen letztlich pro Bild mit einem monatlichen Mindestbetrag ab.

Welche SLAs bietet Photta?

Phottas dokumentiertes Verarbeitungsfenster liegt bei 1.5 bis 4 Minuten pro Job. Es gibt kein fest definiertes Uptime-SLA. Wenn Ihr SaaS ein eigenes SLA verspricht, planen Sie entsprechenden Puffer in Ihren Vertrag ein (z. B. verschafft Ihnen „Fotos geliefert innerhalb von 1 Stunde“ den 10-fachen Spielraum) und tracken Sie die Latenz pro Tenant, um Regressionen frühzeitig zu erkennen.

Kann ich den Output als White-Label nutzen?

Ja. Die zurückgegebenen Bilder enthalten kein Photta-Branding. Sie können sie mit Ihrer eigenen CDN-Domain direkt in den Bucket Ihres Kunden ausliefern – Ihr Kunde muss nie erfahren, dass Phottas Pipeline sie generiert hat. Die API selbst ist kein White-Label – Key und Dashboard tragen das Photta-Branding.

Bauen Sie ein Fotografie-SaaS auf Photta auf

Gleiche API, Ihre Marke, Ihre Marge. Holen Sie sich einen API-Key, binden Sie die drei oben genannten Patterns in Ihre Worker ein und Sie sind startklar.