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

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.

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

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

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

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

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

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.