Cómo empezar
Todas las llamadas van por HTTPS a esta dirección:
https://pbcxolfixmhkoxhxylnb.supabase.co/functions/v1/partner-api
Autenticación
Cada petición debe incluir la llave en el header X-API-Key.
La llave se les entrega por separado, no aparece en este documento.
X-API-Key: kz_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
La llave identifica a Lezat y define a qué puede acceder. Si en algún momento creen que se expuso, avísennos y la reemplazamos: revocar y emitir una nueva toma un minuto.
Formato
Las respuestas son JSON. Las fechas van como AAAA-MM-DD y los
precios en pesos colombianos, sin decimales.
Consultar disponibilidad
Devuelve las suites que se pueden vender en esas fechas, con su precio y un enlace de reserva listo para enviar. Consulta el estado real del sistema en el momento de la llamada.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
checkin · |
fecha | Día de entrada. Obligatorio. |
checkout · |
fecha | Día de salida. Obligatorio, y posterior a la entrada. |
sede |
texto |
calle-100 o usaquen. Si se omite, devuelve
las dos sedes.
|
huespedes |
entero | Número de personas. Si se envía, se excluyen las suites que no las admiten. |
Ejemplo
curl "https://pbcxolfixmhkoxhxylnb.supabase.co/functions/v1/partner-api/disponibilidad\
?checkin=2026-09-15&checkout=2026-09-17&sede=calle-100&huespedes=2" \
-H "X-API-Key: SU_LLAVE"
Respuesta
{
"consulta": {
"checkin": "2026-09-15",
"checkout": "2026-09-17",
"noches": 2,
"sede": "Calle 100",
"huespedes": 2
},
"moneda": "COP",
"suites": [
{
"id": "9d3e6dd5-7b4e-4bfa-b5fa-022b771123b1",
"nombre": "Suite Star",
"sede": "Calle 100",
"descripcion": "Ideal para negocios y familias...",
"capacidad_maxima": 4,
"unidades_libres": 3,
"disponible": true,
"precio_noche_desde": 218403,
"precio_total": 436806,
"tiene_oferta": false,
"foto": "https://.../calle100-suite-star.jpeg",
"enlace_reserva": "https://reservas.kazalivingbog.com/?sede=calle-100&checkin=..."
}
]
}
| Campo | Significado |
|---|---|
unidades_libres | Cuántas suites de ese tipo quedan disponibles. |
disponible | false cuando está agotada. Las agotadas se devuelven igual, al final de la lista. |
precio_noche_desde | La noche más económica del rango. Puede variar entre noches si hay una oferta parcial. |
precio_total | El total de la estancia. Es el número que conviene decirle al cliente. |
foto | URL pública de la imagen, entre 200 y 340 KB. |
enlace_reserva | Enlace que abre esa suite con las fechas puestas. Sirve cuando aún no tienen los datos del cliente. |
Crear el enlace con los datos del huésped
Cuando ya tienen los datos del cliente, este endpoint los recibe y devuelve un enlace personalizado. El cliente solo tiene que revisar, confirmar y pagar.
Los datos personales no viajan en la URL. Un enlace queda en el historial del navegador y se reenvía por WhatsApp, así que poner la cédula o el teléfono ahí los expondría. En su lugar el enlace lleva un código que los representa, se canjea una sola vez y vence.
Cuerpo
| Campo | Tipo | Descripción |
|---|---|---|
checkin · | fecha | Día de entrada. |
checkout · | fecha | Día de salida. |
huesped.nombre · | texto | Único dato obligatorio del huésped. |
suite_id | texto | El id que devolvió la consulta de disponibilidad. Si se envía, el enlace abre esa suite directamente. |
sede | texto | calle-100 o usaquen. Se deduce sola si mandan suite_id. |
huespedes | entero | Número de personas. |
huesped.tipo_documento | texto | CC, CE, PA o NIT. |
huesped.documento | texto | Número de documento. |
huesped.email | texto | Correo del huésped. |
huesped.telefono | texto | Teléfono del huésped. |
huesped.nacionalidad | texto | Ej. Colombiana. |
Los campos marcados con · son obligatorios. Entre más datos envíen, menos tiene que llenar el cliente.
Ejemplo
curl -X POST "https://pbcxolfixmhkoxhxylnb.supabase.co/functions/v1/partner-api/pre-reserva" \
-H "X-API-Key: SU_LLAVE" \
-H "Content-Type: application/json" \
-d '{
"checkin": "2026-09-15",
"checkout": "2026-09-17",
"suite_id": "9d3e6dd5-7b4e-4bfa-b5fa-022b771123b1",
"huespedes": 3,
"huesped": {
"nombre": "María Restrepo",
"tipo_documento": "CC",
"documento": "1020304050",
"email": "maria@ejemplo.com",
"telefono": "3001234567",
"nacionalidad": "Colombiana"
}
}'
Respuesta
{
"codigo": "c77ea832ec9246879594f2c1141c91fc",
"enlace": "https://reservas.kazalivingbog.com/?pre=c77ea832...&suite=9d3e6dd5...",
"expira_at": "2026-09-01T15:30:00.000Z",
"vigencia_horas": 2,
"aviso": "El enlace vence en 2 horas..."
}
El campo enlace es lo que se le manda al cliente por el chat.
Cómo funciona el enlace
Al abrirlo, el cliente encuentra el formulario de reserva con todo puesto:
- Las fechas y el número de personas que cotizaron.
- La suite que eligieron, ya abierta, si enviaron
suite_id. - Sus datos personales, si los enviaron.
Solo le queda revisar y pagar. El pago se procesa con PayU dentro de nuestra plataforma, y al confirmarse la reserva entra automáticamente al sistema de Kaza Living y el huésped recibe su correo de confirmación.
Si no envían suite_id, el enlace muestra las suites disponibles
para esas fechas y el cliente escoge. Es útil cuando todavía está comparando.
Qué pasa si el enlace vence
El enlace tiene 2 horas de vigencia y sirve una sola vez. No es una restricción arbitraria: entre que ustedes cotizan y el cliente paga pueden pasar horas, y en ese tiempo la suite puede venderse por otro canal.
Después de las 2 horas, o si ya se usó, al abrirlo el cliente ve un aviso que le explica que sus datos no quedaron cargados y puede reservar igual llenando el formulario. No se queda sin entender qué pasó.
Lo que conviene que maneje el bot. Si el cliente vuelve después de un rato diciendo que el enlace no le funcionó, lo natural es volver a consultar disponibilidad y generarle uno nuevo. Es una sola llamada más y evita que se pierda la reserva.
También vale la pena que el bot no prometa una suite como asegurada: hasta que no se paga, no está reservada. La disponibilidad se revalida en el momento del pago, así que si la suite se vendió antes, el sistema lo bloquea en vez de generar una sobreventa.
Errores
Los errores llegan con el código HTTP correspondiente y un cuerpo con el detalle:
{ "error": "Se requieren 'checkin' y 'checkout' en formato AAAA-MM-DD" }
| Código | Qué significa |
|---|---|
400 | Falta un dato o llegó mal. El mensaje dice cuál. |
401 | Falta la llave o no es válida. |
403 | La llave es válida pero no tiene permiso para esa operación. |
404 | La ruta no existe. Revisar la dirección. |
500 | Error de nuestro lado. Si se repite, avísennos con la hora aproximada: registramos cada petición y podemos rastrearla. |
Notas
Precios
Los valores que devuelve la API son los que ve el cliente en la plataforma. Incluyen IVA cuando aplica: el alojamiento está exento para huéspedes extranjeros y para estadías de un mes o más.
Fotos
Cada suite trae una foto en foto. Hoy hay una por tipo de suite;
si necesitan más para el chat, podemos agregarlas.
Pruebas
Pueden probar directamente contra esta dirección. Consultar disponibilidad no modifica nada, y una pre-reserva solo guarda los datos para el enlace: no bloquea inventario ni crea una reserva. La reserva se crea únicamente cuando el cliente paga.
Dudas
Cualquier cosa que necesiten y no esté acá, escríbannos. Si el bot requiere un dato adicional en la respuesta, se puede agregar.