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.
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.
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"
]
})
})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.
⚠️ Las claves API deben resguardarse en el backend de tu servidor y nunca exponerse en código cliente front-end expuesto en navegadores.
/api/v1/fitting/try-onEste endpoint envía la foto del usuario y las imágenes de las prendas a procesar de forma inmediata.
Parámetros del Body (JSON)
| Campo | Tipo | Descripción |
|---|---|---|
| userPhoto | String | URL pública de la foto del usuario o cadena en formato Base64. Requerido. |
| garments | Array [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())/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.
/api/v1/usageConsulta 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:
| Status | Significado | Causa Común |
|---|---|---|
| 200 OK | Éxito | El procesamiento de la prenda fue exitoso y se devuelve la imagen temporal de resultado. |
| 400 Bad Request | Solicitud Inválida | Faltan parámetros obligatorios (`userPhoto`, `garments`), o se enviaron más de 5 prendas. |
| 401 Unauthorized | No Autorizado | El encabezado de autorización falta, no tiene formato Bearer, o la clave API es inválida o inactiva. |
| 429 Too Many Requests | Límite Superado | El cliente consumió todas las peticiones mensuales de su plan. |
| 500 Internal Error | Error de Servidor | Error inesperado en los procesadores del servidor. El error se reporta de forma interna en logs. |