Los Wisdoms son bases de datos que contienen información clave de tu empresa—conocimientos, productos y servicios—utilizada por liVO para responder a clientes con precisión, eliminando alucinaciones. Esta documentación detalla cómo gestionar Wisdoms mediante la API, subida de Excel, o la interfaz web. Solo los usuarios con permisos de administrador (gestores de la empresa asociada al Wisdom) pueden realizar estas acciones.
Actualiza Wisdoms programáticamente enviando datos JSON a través de una solicitud POST. Ideal para integraciones automáticas, actualizaciones masivas, o ajustes de inventario.
Endpoint: https://livo.cl/wisdom_api/<uuid>/
Método: POST
Autenticación: Requiere una clave API en el encabezado X-API-Key. Obtén o regenera la clave desde el panel de gestión de Wisdoms.
Modos de solicitud:
items para actualizar todos los elementos del Wisdom.stock_updates para modificar cantidades de productos por SKU.bump_processing: true para continuar el procesamiento de embeddings tras un timeout.Respuestas posibles:
{"status": "success", "message": string, "warnings": [string]?}{"status": "error", "message": string}{"status": "bump", "message": string, "bump_payload": {"bump_processing": true}} (indica que el procesamiento excede 28 segundos; reenviar con bump_processing: true).Actualiza todos los elementos del Wisdom con un nuevo conjunto de items.
Estructura de un item:
Inferencia de tipo:
price ni quantity.quantity (entero positivo).price pero no quantity, o quantity = "-1".Ejemplo de solicitud:
curl -X POST \
"https://livo.cl/wisdom_api/<uuid>/" \
-H "X-API-Key: tu-clave-api" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"title": "Política de Devolución",
"long_text": "Devoluciones en 30 días con recibo",
"category": "Políticas"
},
{
"title": "Silla de Oficina",
"sku": "SOF123",
"long_text": "Silla ergonómica con soporte lumbar",
"link": "https://tienda.com/silla",
"category": "Mobiliario",
"price": "50000",
"quantity": "10"
},
{
"title": "Consultoría SEO",
"sku": "SEO2023",
"long_text": "Optimización de tu sitio web en 3 meses",
"category": "Marketing",
"price": "200000",
"quantity": "-1"
}
]
}'
import requests
url = "https://livo.cl/wisdom_api/<uuid>/"
headers = {
"X-API-Key": "tu-clave-api",
"Content-Type": "application/json"
}
data = {
"items": [
{
"title": "Política de Devolución",
"long_text": "Devoluciones en 30 días con recibo",
"category": "Políticas"
},
{
"title": "Silla de Oficina",
"sku": "SOF123",
"long_text": "Silla ergonómica con soporte lumbar",
"link": "https://tienda.com/silla",
"category": "Mobiliario",
"price": "50000",
"quantity": "10"
},
{
"title": "Consultoría SEO",
"sku": "SEO2023",
"long_text": "Optimización de tu sitio web en 3 meses",
"category": "Marketing",
"price": "200000",
"quantity": "-1"
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
fetch("https://livo.cl/wisdom_api/<uuid>/", {
method: "POST",
headers: {
"X-API-Key": "tu-clave-api",
"Content-Type": "application/json"
},
body: JSON.stringify({
items: [
{
title: "Política de Devolución",
long_text: "Devoluciones en 30 días con recibo",
category: "Políticas"
},
{
title: "Silla de Oficina",
sku: "SOF123",
long_text: "Silla ergonómica con soporte lumbar",
link: "https://tienda.com/silla",
category: "Mobiliario",
price: "50000",
quantity: "10"
},
{
title: "Consultoría SEO",
sku: "SEO2023",
long_text: "Optimización de tu sitio web en 3 meses",
category: "Marketing",
price: "200000",
quantity: "-1"
}
]
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
curl -X POST \
"https://livo.cl/wisdom_api/<uuid>/" \
-H "X-API-Key: tu-clave-api" \
-H "Content-Type: application/json" \
-d '{
"stock_updates": [
{
"SKU": "SOF123",
"quantity": "15",
"type": "absolute"
},
{
"SKU": "SEO2023",
"quantity": "5",
"type": "additive"
}
]
}'
import requests
url = "https://livo.cl/wisdom_api/<uuid>/"
headers = {
"X-API-Key": "tu-clave-api",
"Content-Type": "application/json"
}
data = {
"stock_updates": [
{
"SKU": "SOF123",
"quantity": "15",
"type": "absolute"
},
{
"SKU": "SEO2023",
"quantity": "5",
"type": "additive"
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
fetch("https://livo.cl/wisdom_api/<uuid>/", {
method: "POST",
headers: {
"X-API-Key": "tu-clave-api",
"Content-Type": "application/json"
},
body: JSON.stringify({
stock_updates: [
{
SKU: "SOF123",
quantity: "15",
type: "absolute"
},
{
SKU: "SEO2023",
quantity: "5",
type: "additive"
}
]
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
curl -X POST \
"https://livo.cl/wisdom_api/<uuid>/" \
-H "X-API-Key: tu-clave-api" \
-H "Content-Type: application/json" \
-d '{"bump_processing": true}'
import requests
url = "https://livo.cl/wisdom_api/<uuid>/"
headers = {
"X-API-Key": "tu-clave-api",
"Content-Type": "application/json"
}
data = {"bump_processing": True}
response = requests.post(url, headers=headers, json=data)
print(response.json())
fetch("https://livo.cl/wisdom_api/<uuid>/", {
method: "POST",
headers: {
"X-API-Key": "tu-clave-api",
"Content-Type": "application/json"
},
body: JSON.stringify({bump_processing: true})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
Notas: Reemplaza <uuid> con el UUID de tu Wisdom y tu-clave-api con tu clave API. El campo title es obligatorio; sku es opcional pero recomendado para productos y servicios. Los tipos se infieren automáticamente. Los embeddings se regeneran tras la actualización.
Actualiza las cantidades de productos existentes mediante su SKU sin modificar otros campos ni regenerar embeddings.
Estructura de stock_updates:
Restricciones:
price y quantity positivo).SKU debe existir en el Wisdom.additive.Ejemplo de solicitud: Ver pestañas de código arriba (cURL Stock, Python Stock, JavaScript Stock).
Notas: Las actualizaciones de stock son rápidas, ya que no regeneran embeddings. Si un SKU no está en los embeddings, se emite una advertencia, pero la cantidad se actualiza en items.
Si el procesamiento de embeddings excede 28 segundos, la API devuelve un estado bump. Reenvía la solicitud con bump_processing: true para continuar.
Estructura de la solicitud:
true para reanudar el procesamiento de embeddings.Comportamiento:
items previamente guardados en el Wisdom.success si completa, bump si aún excede 28 segundos, o error si no hay items.Ejemplo de solicitud: Ver pestañas de código arriba (cURL Bump, Python Bump, JavaScript Bump).
Notas: Usa reintentos con retroceso exponencial (ej. 1s, 2s, 4s) hasta recibir success o error. Este modo asume que items ya está validado.
Actualiza Wisdoms subiendo un archivo Excel (.xlsx) desde el panel de control. Ideal para actualizaciones manuales o datos exportados de otros sistemas.
Pasos:
Estructura de la plantilla:
| Columna | Descripción | Obligatorio | Ejemplo |
|---|---|---|---|
| Title | Nombre del elemento (máx. 1000 caracteres) | Sí | "Silla de Oficina" |
| SKU | Código único para productos o servicios (máx. 100 caracteres) | No | "SOF123" |
| Long Text | Descripción detallada (máx. 12000 caracteres) | No | "Silla ergonómica con soporte lumbar" |
| Link | URL relevante (máx. 2000 caracteres) | No | "https://tienda.com/silla" |
| Category | Categoría para productos o servicios (máx. 500 caracteres) | No | "Mobiliario" |
| Price | Precio para productos o servicios (formato numérico) | Sí para servicios | "50000" |
| Quantity | Cantidad para productos (entero positivo) o "-1" para servicios | Sí para productos | "10" |
Inferencia de tipo:
Price ni Quantity.Quantity (entero positivo).Price pero no Quantity, o Quantity = "-1".Ejemplo de archivo Excel:
| Title | SKU | Long Text | Link | Category | Price | Quantity |
|---|---|---|---|---|---|---|
| Política de Devolución | Devoluciones en 30 días con recibo | Políticas | ||||
| Silla de Oficina | SOF123 | Silla ergonómica con soporte lumbar | https://tienda.com/silla | Mobiliario | 50000 | 10 |
| Consultoría SEO | SEO2023 | Optimización de tu sitio web en 3 meses | Marketing | 200000 | -1 |
Notas: Descarga la plantilla para garantizar el formato correcto. Usa valores numéricos válidos para Price y Quantity. El campo SKU es opcional pero recomendado para productos y servicios.
La clave API es necesaria para autenticar solicitudes a la API. Puedes obtenerla o regenerarla desde el panel de gestión de Wisdoms.
Pasos:
Notas:
La gestión de Wisdoms está restringida a usuarios con permisos de gestor, verificados contra la empresa asociada al Wisdom.
Requisitos:
login_required).contact_form.company.contact_form o empresa, se deniega el acceso.Acciones restringidas:
Notas: