Crea · AI Photography SaaS
Crea un servizio di fotografia di prodotto basato su AI
In sintesi
Esegui il provisioning di una API key di Photta per tenant (o usane una condivisa se il volume è ridotto), distribuisci il catalogo di ciascun cliente in una coda, chiama /api/v1/tryon/apparel per ciascun prodotto, effettua il polling degli ID di generazione in un pool di worker, salva i risultati nel bucket del tuo cliente e fattura ogni unità fatturabile (credit o immagine renderizzata) applicando un margine sul costo dei credits di Photta.
- Credits: 5 credits a 2K · 6 credits a 4K
- Tempo tipico: 1.5–4 min
- Elaborazione: asincrono, polling
Ogni dato in questa pagina proviene da la documentazione dell'API di Photta · verificato
Distribuisci l'elaborazione sui cataloghi dei tuoi clienti, invia job di try-on per prodotto, fattura in base ai credits. Le stesse primitive che Photta mette a disposizione dei singoli sviluppatori permettono di comporre un SaaS white-label — purché se ne rispettino i limiti.
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"]Come funziona
Da una singola chiave a un servizio multi-tenant
Cinque decisioni architetturali da prendere prima di scrivere codice per la produzione.
Passaggio 1
Definisci il contratto del tuo prodotto
Decidi cosa riceve il tuo cliente per ogni unità di fatturazione: un'immagine renderizzata? Un batch? Un pool mensile di credits? La tua scelta guiderà tutto il resto — profondità della coda, policy di retry, testi della pagina dei prezzi.
Passaggio 2
Esegui il provisioning delle chiavi Photta per tenant
Su piccola scala: un'unica chiave condivisa, tracciando l'utilizzo per tenant nel tuo database. Su scala più ampia: una chiave Photta per tenant, gestita tramite la dashboard di Photta — attribuzione più chiara, raggio di impatto ridotto in caso di leak.
Passaggio 3
Distribuisci tramite una coda
Per ogni prodotto nel feed del cliente, inserisci in coda un job fotografico. Non inviare mai richieste in modo sincrono durante un'importazione CSV — supereresti il rate limit di 600 richieste al minuto e perderesti job a causa di errori 429.
Passaggio 4
Margine sul costo dei credits
Ogni render di abbigliamento in 4K ti costa 6 credits. Ogni fattura inviata dovrebbe corrispondere a credits × il tuo margine. Registra il costo base dei credits nel tuo ledger contabile così il team finance potrà riconciliare la fattura di Photta con i ricavi registrati.
Passaggio 5
Monitora latenza e tasso di fallimento
Traccia il tempo di completamento e il tasso di errore per tenant. Quando le foto di un cliente impiegano costantemente più di 4 minuti o falliscono ripetutamente, si tratta quasi sempre di un input non valido (URL corrotto, product_type non supportato) — non di un problema di Photta.
Tre pattern di cui avrai bisogno
Fanout, dispatch per tenant, registro di fatturazione — i componenti portanti di un SaaS di fotografia.
// 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
});Domande frequenti degli sviluppatori
Eseguire un servizio basato su Photta
Ho bisogno di una API key di Photta separata per ogni tenant?
No, ma è utile su larga scala. Con pochi clienti, una sola chiave condivisa con tracciamento dell'utilizzo per tenant nel proprio database è sufficiente. Oltre tale soglia, una chiave per tenant offre una migliore attribuzione, una rotazione più semplice e un raggio di impatto ridotto in caso di leak.
Cosa succede quando i credits si esauriscono?
L'API restituisce 402 insufficient_credits indicando i conteggi di credits richiesti e disponibili. Imposta una soglia minima di sicurezza (ad es. 100 credits) e ricarica automaticamente prima che i job inizino a fallire. I job non riusciti rimborsano i relativi credits, evitando che una serie di errori 402 aggravi l'impatto economico.
Come dovrei definire il prezzo del mio servizio?
Photta addebita 5 credits a 2K, 6 credits a 4K. Convertili nella tua valuta di vendita al dettaglio (costo × il tuo margine × conversione dei crediti) e decidi se fatturare per immagine, per batch o su base mensile. La maggior parte dei prodotti SaaS di fotografia finisce per fatturare per immagine con un minimo mensile.
Quali SLA offre Photta?
La finestra di completamento documentata di Photta va da 1.5 a 4 minuti per job. Non è pubblicato alcuno SLA formale di uptime. Se il tuo SaaS si impegna su tempi di consegna propri, includi un margine di sicurezza nel tuo contratto (ad es. "foto consegnate entro 1 ora" ti garantisce un margine di 10x) e monitora la latenza per singolo tenant per individuare tempestivamente eventuali regressioni.
Posso distribuire l'output in white-label?
Sì. Le immagini restituite non contengono il brand di Photta. Puoi distribuirle direttamente nel bucket del tuo cliente impostando a monte il tuo dominio CDN: il tuo cliente non saprà mai che sono state prodotte dalla pipeline di Photta. L'API in sé non è white-label: la chiave e la dashboard riportano il brand Photta.
Pagine correlate
Riferimento
Funzionalità
API di Virtual try-on per abbigliamento
REST API per applicare capi di abbigliamento su manichini AI. Generazione asincrona in 1.5–4 minuti, 5 crediti a 2K, 6 a 4K. Esempi per cURL, Node.js e Python.
LeggiGuida rapida
La prima immagine con Photta in meno di cinque minuti.
Registrati, genera una chiave API, esegui la tua prima chiamata cURL, fai polling fino al completamento, salva il risultato. Cinque passaggi, interamente documentati.
LeggiFunzionalità
API Ghost mannequin per foto prodotto con manichino invisibile
Endpoint AI per ghost mannequin. Rimuovi il manichino dalla foto di un capo e preserva i dettagli interni. 3D o flat-lay, elaborazione in batch, 4 credits a 2K.
Leggi
Ogni dato in questa pagina proviene da la documentazione dell'API di Photta · verificato
Lancia un SaaS di fotografia basato su Photta
La stessa API, il tuo brand, il tuo margine. Prendi una chiave API, integra i tre pattern qui sopra nei tuoi worker e sarai già a metà strada verso il lancio.