Bouw · AI Photography SaaS
Bouw een AI-dienst voor productfotografie
In één zin
Wijs per tenant een Photta API-sleutel toe (of pool ze bij een klein volume), verdeel de catalogus van elke klant over een wachtrij, roep /api/v1/tryon/apparel aan per product, poll de generation ID's in een worker pool, sla resultaten op in de bucket van je klant en factureer elke facturabele eenheid (credit of gerenderde afbeelding) met een marge bovenop de creditkosten van Photta.
- Credits: 5 credits bij 2K · 6 credits bij 4K
- Typische duur: 1.5–4 min
- Verwerking: async, polling
Elk getal op deze pagina is afkomstig uit de Photta-API-documentatie · gecontroleerd
Distribueer over de catalogi van je klanten, verzend try-on-jobs per product en factureer per credit. Dezelfde bouwstenen die Photta biedt aan individuele ontwikkelaars, vormen samen een white-label SaaS — mits je de grenzen respecteert.
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"]Hoe het werkt
Van één sleutel naar een multi-tenant service
Vijf architectuurbeslissingen die je moet nemen voordat je productiecode schrijft.
Stap 1
Definieer je productcontract
Bepaal wat je klant krijgt per facturabele eenheid: één gerenderde afbeelding? Een batch? Een maandelijks tegoed aan credits? Je antwoord hierop bepaalt de rest — wachtrijdiepte, retry-beleid en de teksten op je prijspagina.
Stap 2
Wijs Photta-sleutels per tenant toe
Kleine schaal: één gedeelde sleutel, waarbij je het verbruik per tenant bijhoudt in je database. Grotere schaal: één Photta-sleutel per tenant, beheerd via het Photta-dashboard — voor duidelijkere toewijzing en een kleinere impact bij een datalek.
Stap 3
Distribueer via een wachtrij
Plaats voor elk product in de feed van de klant een fototaak in de wachtrij. Dien deze nooit synchroon in tijdens een CSV-import — je loopt tegen de rate limit van 600-requests-per-minute aan en jobs mislukken door 429s.
Stap 4
Marge bovenop de creditprijs
Elke 4K-kledingrender kost je 6 credits. Elke factuur die je verstuurt moet berekend worden als credits × jouw marge. Leg de kale creditkosten vast in je grootboek, zodat finance de factuur van Photta eenvoudig kan afstemmen op je omzet.
Stap 5
Monitor latency en foutpercentages
Houd de doorlooptijd + het foutpercentage per tenant bij. Wanneer de foto's van een klant consequent langer duren dan 4 minuten of herhaaldelijk mislukken, ligt dat vrijwel altijd aan foutieve input (beschadigde URL, niet-ondersteunde product_type) — niet aan Photta.
Drie patronen die je nodig hebt
Fan-out, verwerking per tenant, facturatiegrootboek — de dragende onderdelen van een SaaS voor fotografie.
// 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
});Veelgestelde vragen van developers
Een dienst draaien bovenop Photta
Heb ik een aparte Photta API-sleutel per tenant nodig?
Nee, maar op schaal helpt het wel. Bij minder dan een handvol klanten volstaat één gedeelde sleutel met verbruikstracking per tenant in je eigen database. Daarboven zorgt een sleutel per tenant voor een zuiverdere toewijzing, eenvoudiger roteren en een kleinere impact bij een lek.
Wat doe ik als de credits op zijn?
De API retourneert 402 insufficient_credits met de vereiste en beschikbare aantallen. Stel een ondergrens in (bijv. 100 credits) en waardeer automatisch op voordat jobs beginnen te falen. Bij mislukte jobs worden credits teruggestort, waardoor een piek aan 402s de schade niet verergert.
Hoe moet ik mijn dienst prijzen?
Photta rekent 5 credits bij 2K, 6 credits bij 4K. Reken dat om naar je retailvaluta (kosten × je marge × creditconversie) en bepaal of je factureert per afbeelding, per batch of per maand. De meeste fotografie-SaaS-producten factureren uiteindelijk per afbeelding met een maandelijks minimum.
Welke SLA's biedt Photta?
Photta's gedocumenteerde verwerkingstijd is 1.5 tot 4 minuten per job. Er is geen harde uptime-SLA gepubliceerd. Als je eigen SaaS een doorlooptijd toezegt, bouw die speling dan in je eigen contract in (bijv. 'foto's geleverd binnen 1 uur' geeft je 10x speling) en monitor de latency per tenant om regressies vroegtijdig te signaleren.
Kan ik de output van een white-label voorzien?
Ja. De geretourneerde afbeeldingen bevatten geen Photta-branding. Je kunt ze afleveren in de bucket van je klant met je eigen CDN-domein ervoor — je klant hoeft nooit te weten dat de pipeline van Photta ze heeft gegenereerd. De API zelf is niet white-label — de sleutel en het dashboard zijn voorzien van Photta-branding.
Gerelateerde pagina's
Referentie
Mogelijkheden
Virtual try-on API voor kleding
REST API die kleding op AI-mannequins plaatst. Asynchroon, generatie in 1.5–4 minuten, 5 credits bij 2K, 6 bij 4K. Voorbeelden in cURL, Node.js en Python.
LezenSnelstartgids
Eerste Photta-afbeelding in minder dan vijf minuten.
Registreer je, genereer een API-sleutel, voer je eerste cURL-call uit, poll totdat deze is voltooid, sla het resultaat op. Vijf stappen, end-to-end gedocumenteerd.
LezenMogelijkheden
Ghost mannequin API voor hollow-man-productfoto's
AI ghost mannequin endpoint. Verwijder de paspop uit een kledingfoto en behoud interne details. 3D of flat-lay, batchverwerking, 4 credits bij 2K.
Lezen
Elk getal op deze pagina is afkomstig uit de Photta-API-documentatie · gecontroleerd
Bouw een fotografie-SaaS bovenop Photta
Dezelfde API, jouw merk, jouw marge. Vraag een API-sleutel aan, implementeer de drie bovenstaande patronen in je workers, en je bent halverwege de lancering.