Documentación de la API de Vestidor Virtual

La API de vestidor virtual de TnB permite a marcas y e-commerce de terceros integrar nuestro procesador de probador de ropa inteligente mediante llamados REST HTTPS. Enviando una foto de cuerpo completo del usuario y fotos claras de las prendas, nuestra IA genera una imagen realista del cliente vistiendo dichas prendas de manera instantánea.

💡 ¿Qué es la IA de Probador? Es un modelo interno optimizado para ajustar, doblar y superponer prendas sobre fotos humanas conservando texturas, logos y detalles físicos.

1. Consola de Prueba interactiva

Consola de Prueba de API

Simulá una petición HTTP POST real a nuestro probador virtual con la API Key de demostración.

Persona
Campera
Zapatillas
Boina
tryon-rest-client.sh
fetch("https://api.tnb.com/v1/fitting/try-on", {
  method: "POST",
  headers: {
    "Authorization": "Bearer tnb_demo_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    userPhoto: "https://images.unsplash.com/photo-1552374196-1ab2a1c593e8?w=400&q=80",
    garments: [
      "https://aiq7mraevuhfwffd.public.blob.vercel-storage.com/products/1778607634870-campera.jpg",
      "https://aiq7mraevuhfwffd.public.blob.vercel-storage.com/products/1778607458823-zapas.PNG",
      "https://aiq7mraevuhfwffd.public.blob.vercel-storage.com/products/1778607580353-boina.jpg"
    ]
  })
})
Presioná "Probar API" a la izquierda para ejecutar.

2. Autenticación

Cada solicitud que realices a la API de TnB debe estar firmada incluyendo tu API Key provista en el encabezado Authorization como un Token Bearer.

Authorization: Bearer tnb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

⚠️ Las claves API deben resguardarse en el backend de tu servidor y nunca exponerse en código cliente front-end expuesto en navegadores.

POST/api/v1/fitting/try-on

Este endpoint envía la foto del usuario y las imágenes de las prendas a procesar de forma inmediata.

Parámetros del Body (JSON)

CampoTipoDescripción
userPhotoStringURL pública de la foto del usuario o cadena en formato Base64. Requerido.
garmentsArray [String]Array conteniendo de 1 a 5 URLs públicas o Base64 de las prendas que vestirá. Requerido.

Ejemplo en JavaScript (Fetch)

fetch("https://api.tnb.com/v1/fitting/try-on", {
  method: "POST",
  headers: {
    "Authorization": "Bearer TU_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    userPhoto: "https://tusitio.com/foto-usuario.jpg",
    garments: [
      "https://tusitio.com/remera.jpg",
      "https://tusitio.com/pantalon.jpg"
    ]
  })
})
.then(res => res.json())
.then(data => console.log(data));

Ejemplo en Python

import requests

url = "https://api.tnb.com/v1/fitting/try-on"
headers = {
    "Authorization": "Bearer TU_API_KEY",
    "Content-Type": "application/json"
}
payload = {
    "userPhoto": "https://tusitio.com/foto-usuario.jpg",
    "garments": [
        "https://tusitio.com/remera.jpg"
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
GET/api/v1/fitting/status/[jobId]

En integraciones complejas de larga duración asíncronas, este endpoint permite consultar el estado actual de un trabajo de procesamiento usando el `jobId` provisto en la petición inicial.

GET/api/v1/usage

Consulta las estadísticas de uso y el estado de la API Key, indicando el plan contratado, las peticiones consumidas del mes en curso y el límite asignado.

3. Límites y Cabeceras (Rate Limiting)

Cada respuesta devuelta por el servidor contiene metadatos relativos al consumo en sus encabezados HTTP (Headers) para permitirte controlar el nivel de llamadas:

  • X-RateLimit-Limit: El número total de peticiones asignadas mensualmente según tu plan.
  • X-RateLimit-Remaining: El número de solicitudes que te quedan disponibles en el mes.

Si consumes tu cupo mensual, los siguientes llamados REST devolverán un código de respuesta HTTP 429 Too Many Requests hasta el primer día del mes siguiente, momento en que los contadores son automáticamente reiniciados a cero.

4. Códigos de Estado y Errores

La API utiliza códigos estándar de estado HTTP para indicar el éxito o fracaso de las llamadas:

StatusSignificadoCausa Común
200 OKÉxitoEl procesamiento de la prenda fue exitoso y se devuelve la imagen temporal de resultado.
400 Bad RequestSolicitud InválidaFaltan parámetros obligatorios (`userPhoto`, `garments`), o se enviaron más de 5 prendas.
401 UnauthorizedNo AutorizadoEl encabezado de autorización falta, no tiene formato Bearer, o la clave API es inválida o inactiva.
429 Too Many RequestsLímite SuperadoEl cliente consumió todas las peticiones mensuales de su plan.
500 Internal ErrorError de ServidorError inesperado en los procesadores del servidor. El error se reporta de forma interna en logs.