API pública — Introducción y primeros pasos
Accede a los datos de tu cuenta de Buky desde herramientas externas mediante la API de solo lectura: autenticación por token, paginación y filtrado incluidos
La API pública de Buky te permite consultar los datos de tu cuenta (reservas, pagos, facturas, clientes) desde herramientas externas como Zapier, n8n, data warehouses, agentes de IA o dashboards propios. Es una API de solo lectura que devuelve datos en formato JSON.
Antes de empezar
- Necesitas un token de API activo. Si aún no tienes uno, consulta la guía Conectar Buky con herramientas externas (API Tokens).
- Tu token tiene el prefijo
bk_y solo se muestra una vez al crearlo. Guárdalo en un lugar seguro.
URL base
Todas las peticiones van contra:
https://app.bukyapp.com/api/Autenticación
Incluye tu token en cada petición de una de estas dos formas:
Opción 1 — Header Authorization (recomendado):
curl https://app.bukyapp.com/api/orders \
-H "Authorization: bk_tu_token_aqui"Opción 2 — Query string:
curl "https://app.bukyapp.com/api/orders?token=bk_tu_token_aqui"Si el token es inválido, está revocado o ha expirado, recibirás un error 401.
Limitaciones generales
| Aspecto | Detalle |
|---|---|
| Modo | Solo lectura. No se pueden crear, modificar ni eliminar registros. |
| Scope | Cada token está vinculado a una cuenta (customer). Solo puedes ver datos de tu propia cuenta. |
| Paginación por defecto | 100 resultados por página. |
| Tope absoluto | 500 resultados por página como máximo. |
Paginación
Las listas devuelven resultados paginados. Usa los parámetros limit y page:
curl "https://app.bukyapp.com/api/orders?limit=50&page=2" \
-H "Authorization: bk_tu_token"La respuesta incluye headers con la información de paginación:
| Header | Descripción |
|---|---|
X-Count | Número total de registros que coinciden con tu consulta. |
X-Page-Count | Número total de páginas disponibles. |
Si no envías limit ni page, recibirás los primeros 100 resultados.
Filtrado
Puedes filtrar resultados con el parámetro filter. El formato es un objeto JSON con sintaxis estilo MongoDB, codificado como URL:
# Reservas con estado "confirmed"
curl "https://app.bukyapp.com/api/orders?filter=%7B%22status%22%3A%22confirmed%22%7D" \
-H "Authorization: bk_tu_token"El JSON sin codificar del ejemplo anterior es:
{"status": "confirmed"}Operadores comunes que puedes usar dentro del filtro:
| Operador | Uso | Ejemplo |
|---|---|---|
| Igualdad | {"campo": "valor"} | {"status": "confirmed"} |
| Mayor/menor que | {"campo": {"$gte": valor}} | {"createdAt": {"$gte": "2026-01-01"}} |
| Contiene (regex) | {"campo": {"$regex": "texto"}} | {"client.name": {"$regex": "García"}} |
| En una lista | {"campo": {"$in": [...]}} | {"status": {"$in": ["confirmed", "pending"]}} |
Selección de campos
Para recibir solo los campos que necesitas, usa el parámetro fields:
curl "https://app.bukyapp.com/api/orders?fields=%7B%22client%22%3A1%2C%22total%22%3A1%7D" \
-H "Authorization: bk_tu_token"JSON sin codificar: {"client": 1, "total": 1}
Usa 1 para incluir un campo o 0 para excluirlo.
Ordenación
Usa el parámetro sort con un objeto JSON:
# Ordenar por fecha de creación ascendente
curl "https://app.bukyapp.com/api/orders?sort=%7B%22createdAt%22%3A1%7D" \
-H "Authorization: bk_tu_token"1= ascendente-1= descendente
Por defecto, los resultados se ordenan por fecha de creación descendente ({"createdAt": -1}).
Expandir relaciones (populate)
Algunos campos son referencias a otros objetos (por ejemplo, el cliente de una reserva). Para obtener el objeto completo en vez de solo su ID, usa populate:
curl "https://app.bukyapp.com/api/orders?populate=client" \
-H "Authorization: bk_tu_token"Puedes expandir varios campos separándolos por comas: ?populate=client,products.
Ejemplo completo
Obtener las 20 reservas más recientes con estado "confirmed", mostrando solo cliente y total, expandiendo los datos del cliente:
curl "https://app.bukyapp.com/api/orders?limit=20&page=1&filter=%7B%22status%22%3A%22confirmed%22%7D&fields=%7B%22client%22%3A1%2C%22total%22%3A1%2C%22createdAt%22%3A1%7D&populate=client&sort=%7B%22createdAt%22%3A-1%7D" \
-H "Authorization: bk_tu_token"Recursos disponibles
| Recurso | Endpoint | Descripción |
|---|---|---|
| Reservas | GET /api/orders | Listado de reservas con productos, pagos y datos del cliente. |
| Pagos | GET /api/payments | Listado de pagos recibidos. |
| Facturas | GET /api/invoices | Listado de facturas emitidas. |
| Clientes | GET /api/orders (campo client) | Los datos de cliente se consultan a través de las reservas. |
Cada recurso acepta los mismos parámetros de filtrado, paginación, campos y ordenación descritos arriba.
Errores comunes
| Código | Significado | Qué hacer |
|---|---|---|
401 | Token inválido, revocado o expirado. | Verifica que el token es correcto y sigue activo en Configuración > API Tokens. |
403 | Acceso denegado. | El token no tiene permisos para este recurso o la función no está habilitada en tu cuenta. |
404 | Recurso no encontrado. | Verifica que el ID existe y pertenece a tu cuenta. |
Preguntas frecuentes
¿Puedo crear o modificar reservas desde la API?
No. La API pública es de solo lectura. Puedes consultar datos pero no modificarlos.
¿Cuántas peticiones puedo hacer?
No hay un límite estricto de rate-limiting, pero te recomendamos no superar las 60 peticiones por minuto para un uso razonable.
¿Los filtros son case-sensitive?
Sí. Si usas $regex, puedes añadir "$options": "i" para búsquedas sin distinguir mayúsculas: {"client.name": {"$regex": "garcía", "$options": "i"}}.
¿Cómo obtengo un token?
Desde el panel de Buky, ve a Configuración > API Tokens. Consulta la guía Conectar Buky con herramientas externas (API Tokens) para el paso a paso.
