Build · SaaS de fotografía con IA
Crea un servicio de fotografía de producto con IA
En una frase
Aprovisiona una API key de Photta por tenant (o un pool si el volumen es bajo), distribuye el catálogo de cada cliente en una cola, llama a /api/v1/tryon/apparel por producto, haz polling de los IDs de generación en un pool de workers, almacena los resultados en el bucket de tu cliente y factura cada unidad facturable (credit o imagen renderizada) con un margen sobre el costo en credits de Photta.
- Credits: 5 credits a 2K · 6 credits a 4K
- Tiempo típico: 1.5–4 min
- Procesamiento: asíncrono, polling
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
Distribuye la carga entre los catálogos de tus clientes, envía jobs de try-on por producto y factura por cada credit. Las mismas primitivas que Photta expone a desarrolladores individuales se integran en un SaaS de marca blanca, si respetas los límites.
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"]Cómo funciona
De una sola clave a un servicio multi-tenant
Cinco decisiones de arquitectura que debes tomar antes de escribir código de producción.
Paso 1
Define el contrato de tu producto
Decide qué recibe tu cliente por unidad de facturación: ¿una imagen renderizada? ¿Un lote? ¿Un pool mensual de credits? Tu respuesta condiciona todo lo demás: profundidad de la cola, política de reintentos y el copy de la página de precios.
Paso 2
Aprovisiona claves de Photta por tenant
A pequeña escala: una sola clave compartida, rastreando el uso por tenant en tu base de datos. A mayor escala: una clave de Photta por tenant, gestionada a través del dashboard de Photta; mejor atribución y menor radio de impacto ante una fuga.
Paso 3
Distribuye el trabajo mediante una cola
Para cada producto en el feed del cliente, encola un job de fotografía. Nunca envíes solicitudes de forma síncrona durante una importación de CSV: alcanzarás el rate limit de 600 solicitudes por minuto y perderás jobs debido a errores 429.
Paso 4
Margen sobre el precio del credit
Cada render de indumentaria en 4K te cuesta 6 credits. Cada factura que emitas debe calcularse como credits × tu margen. Registra el costo bruto en credits en tu contabilidad para que finanzas pueda conciliar la factura de Photta con tu línea de ingresos.
Paso 5
Monitorea la latencia y la tasa de fallos
Rastrea el tiempo de finalización + la tasa de fallos por tenant. Cuando las fotos de un cliente tardan sistemáticamente más de 4 minutos o fallan de forma reiterada, casi siempre se debe a una entrada incorrecta (URL corrupta, product_type no admitido), no a un problema de Photta.
Tres patrones que necesitarás
Fanout, despacho por tenant y registro contable de facturación: las piezas estructurales de un SaaS de fotografía.
// 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
});Preguntas frecuentes de desarrolladores
Ejecutar un servicio sobre Photta
¿Necesito una API key de Photta independiente por tenant?
No, pero ayuda a escala. Si tienes pocos clientes, una sola clave compartida con seguimiento de uso por tenant en tu propia base de datos es suficiente. Más allá de eso, una clave por tenant te proporciona una atribución más clara, una rotación más sencilla y un radio de impacto menor si ocurre una fuga.
¿Qué hago cuando se agotan los credits?
La API devuelve 402 insufficient_credits con los recuentos requeridos y disponibles. Establece un límite mínimo de alerta (por ejemplo, 100 credits) y recarga automáticamente antes de que los jobs comiencen a fallar. Los jobs fallidos reembolsan sus credits, por lo que una ráfaga de errores 402 no agrava el impacto.
¿Cómo debería fijar el precio de mi servicio?
Photta cobra 5 credits en 2K y 6 credits en 4K. Convierte eso a tu moneda de venta (costo × tu margen × conversión de credits) y decide si facturar por imagen, por lote o por mes. La mayoría de los productos SaaS de fotografía terminan facturando por imagen con un mínimo mensual.
¿Qué SLA ofrece Photta?
La ventana de finalización documentada de Photta es de 1.5 a 4 minutos por trabajo. No hay un SLA formal de uptime publicado. Si tu SaaS se compromete a un tiempo de respuesta propio, incluye margen en tu propio contrato (por ejemplo, «fotos entregadas en 1 hora» te da un margen de 10x) y monitoriza la latencia por tenant para detectar regresiones a tiempo.
¿Puedo ofrecer el resultado como marca blanca?
Sí. Las imágenes devueltas no llevan la marca de Photta. Puedes entregarlas en el bucket de tu cliente con tu propio dominio CDN por delante; tu cliente nunca sabrá que el pipeline de Photta las generó. La API en sí no es de marca blanca: la key y el dashboard llevan la marca de Photta.
Páginas relacionadas
Referencia
Capacidades
API de virtual try-on para ropa
API REST que viste maniquíes de IA con prendas. Generación asíncrona de 1.5–4 minutos, 5 créditos en 2K, 6 en 4K. Ejemplos en cURL, Node.js y Python.
LeerGuía rápida
Tu primera imagen de Photta en menos de cinco minutos.
Regístrate, genera una API key, ejecuta tu primera llamada cURL, haz polling hasta que se complete y guarda el resultado. Cinco pasos, documentados de principio a fin.
LeerCapacidades
API de maniquí invisible para fotos de producto con efecto maniquí invisible
Endpoint de maniquí invisible con IA. Elimina el maniquí de una foto de la prenda y preserva el detalle interior. 3D o flat-lay, procesamiento por lotes, 4 credits a 2K.
Leer
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
Lanza un SaaS de fotografía sobre Photta
La misma API, tu marca, tu margen. Obtén una API key, integra los tres patrones anteriores en tus workers y estarás a medio camino del lanzamiento.