Integraciones más comunes: cómo hacerlo
Patrones de integración más comunes entre el control de accesos LabKey y software de gestión, PMS, plataformas de reservas y de pago, con ejemplos reales ya en producción.
El esquema técnico es sencillo y robusto: puedes conectar tu software a la capa de API de tu instalación y gestionarla de forma autónoma.

La estructura de la API permite realizar operaciones simulando casi la totalidad de las funciones del panel de manage que incluimos con el KIT. Todas las llamadas deben estar activadas y provenir de una IP autorizada.
A continuación encontrarás la guía completa de todas las llamadas disponibles, organizadas por área funcional. La misma documentación también está disponible en formato interactivo en Postman: ¡haz clic aquí!.
Nota: también está disponible una versión reforzada del servicio de API (API PRO), que permite obtener los logs de las llamadas API y realizar la apertura remota — consulta la sección Api Pro o contáctanos para más información.
Para ejemplos prácticos de integración con sistemas de gestión, PMS, plataformas de reservas y de pago, consulta Integraciones más comunes: cómo hacerlo.
Todas las llamadas (excepto la comprobación de estado) requieren un token Bearer, obtenido mediante la llamada authorize y enviado como header en las solicitudes posteriores.
authorize.authorize: IP no autorizada o secret_key incorrecta (invalid_access), credenciales incorrectas (invalid_credentials), error genérico (could not create token).invalid_token). Los errores específicos se indican en el campo messages de la respuesta JSON.POST /api/v2/authorize — Obtener el tokenDevuelve el token Bearer que se debe usar en todas las llamadas posteriores.
email (email del operador), password (contraseña del operador), secret_key (asociada a la IP autorizada, se encuentra en el panel en la sección API / Setup)tokeninvalid_credentials (email o contraseña incorrectos), invalid_credentials2 (IP no autorizada o secret_key incorrecta), invalid_access1 (secret_key ausente)GET /api/v2/ — Test de estadoVerifica que el panel esté activo y funcionando (imprime Test). No requiere autenticación ni parámetros.
PUT /api/v2/adduser — Crear nuevo usuarioCrea un nuevo usuario en el panel.
name (nombre), surname (apellido)email, phone, prefix (prefijo internacional urlencoded, ej. +39 → %2b39), tags (array; cada coma se sustituye por un guion bajo), status (1 = habilitado, 0 = deshabilitado), fields (array de campos adicionales personalizados en el formato fields[id_campo]=valor)PUT /api/v2/updateuser — Modificar usuarioActualiza los datos de un usuario existente.
user_id, name, surnameemail, phone, prefix, tags, status (1 = habilitado, 0 = deshabilitado), fields (array de campos adicionales, mismo formato que AddUser)DELETE /api/v2/deleteuser — Eliminar usuarioElimina un usuario del panel.
user_idGET /api/v2/getusers — Lista de usuariosDevuelve los datos de todos los usuarios presentes en el panel, o de uno específico si se pasa el parámetro opcional.
user_id, tags (filtra los usuarios por tag), getGrantInfo (si es 1, incluye también los detalles de los accesos asociados)GET /api/v2/users/getStatus — Estado del usuarioDevuelve si un usuario está habilitado o deshabilitado.
user_idPOST /api/v2/users/changeStatus — Cambiar estado del usuario (aún no disponible)Si status = 1 el usuario queda habilitado para los accesos, si status = 0 queda deshabilitado.
user_id, status (1 = habilitado, 0 = deshabilitado)GET /api/v2/getGroup — Lista de gruposDevuelve los datos de todos los grupos presentes en el panel, o de uno o más específicos si se pasa el parámetro opcional.
group_id (puede ser un array)POST /api/v2/grantAccessGroup — Habilitar acceso a un grupoHabilita el acceso de uno o más usuarios a uno o más grupos indicados, creando la asociación usuario-grupo.
user_id (puede ser un array), group_id (puede ser un array)POST /api/v2/dropAccessGroup — Revocar acceso a un grupoRevoca los permisos de acceso de un usuario perteneciente a un grupo, eliminando la asociación usuario-grupo.
user_id (puede ser un array), group_id (puede ser un array)GET /api/v2/getcredits — Saldo de créditosDevuelve el saldo de créditos disponible.
GET /api/v2/getprices — Lista de preciosDevuelve la lista de precios para la recarga de créditos.
POST /api/v2/recharge — Recargar créditosEfectúa una recarga de crédito.
user_id, amount (ej. 10.50)GET /api/v2/getunusednfc — Llaves NFC libresDevuelve la lista de llaves NFC no asociadas a ningún usuario. No requiere parámetros.
GET /api/v2/getallnfc — Lista de llaves NFCDevuelve los datos relativos a todas las llaves NFC presentes en el panel, asociadas o no.
limit, offsetoffset usado sin limitPUT /api/v2/addkey — Insertar llave NFCInserta una nueva llave NFC.
nfc_key_code (código RFID leído con un lector estándar: se convertirá según el estándar LabKey — no usar un código tomado de un log de accesos), nfc_key_name (nombre que se asociará a la llave)force_hex (fuerza la conversión del código desde cadena hexadecimal; si se omite, la conversión se realiza automáticamente solo si el código contiene al menos una letra)PUT /api/v2/addkey2user — Asociar llave NFC a un usuarioAsocia una llave NFC a un usuario específico.
user_id, nfc_key_idDELETE /api/v2/deletekey — Eliminar llave NFCElimina una llave NFC.
nfc_key_code (código RFID convertido según el estándar LabKey, ej. 1234567890 → 210215073)nfc_key_code ausenteGET /api/v2/getnfcdetails — Detalles de llave NFCDevuelve los detalles relativos a una llave NFC.
nfc_key_code (código convertido según el estándar LabKey)POST /api/v2/editnfc — Modificar llave NFCModifica los detalles de una llave NFC.
nfc_key_code, namenfc_key_code no encontrado o ausente, name ausentePOST /api/v2/edittastierino — Modificar código de tecladoCambia el código de un teclado (pinpad).
old_pinpad_key_code (código antiguo a sustituir), new_pinpad_key_code (código nuevo)POST /api/v2/updatepinpad — Actualizar código de teclado por usuarioActualiza el código de teclado seleccionando el usuario.
user_id, new_pinpad_key_codePOST /api/v2/getqrcode — Generar código QRGenera un código QR para el usuario seleccionado, utilizable a partir del “messagge string”.
user_idimage (si es 1, devuelve la imagen del código QR codificada en base64), with_background (requiere image=1; si es 1, añade un fondo decorativo a la imagen)POST /api/v2/getfasturl — Generar Fast URLGenera la Fast URL para el usuario seleccionado, utilizable a partir del campo “fast_url”.
user_idGET /api/v2/getallpinpad — Lista de códigos de tecladoDevuelve todos los códigos de teclado y sus detalles.
limit, offsetlimit como offset, o dejarlos ambos vacíos; limit/offset deben ser enterosPOST /api/v2/getGrantInfo — Detalles de un accesoDevuelve los datos relativos al acceso especificado.
involved_associations (uno o más ID devueltos por la llamada grantaccess)involved_associations válidoinvolved_associations no encontradaPOST /api/v2/automategetGrantInfo — Detalles de acceso simplificadoLlamada de conveniencia para simplificar el uso de getGrantInfo.
user_id (puede ser un array), unique_name (puede ser un array — nombre de la LabKey seleccionada)GET /api/v2/getuservarcodetails — Detalles de accesos del usuarioDevuelve todos los detalles sobre los accesos asociados al usuario seleccionado.
user_idPOST /api/v2/grantaccess — Habilitar accesoHabilita el acceso de un usuario. Para configurar una combinación de varias tecnologías (NFC, teclado, código de barras) es posible invocar esta API varias veces cambiando la key_id.
user_id, key_id (ID de la llave de acceso asociada al usuario: usar nfc_key_id para NFC/Pocket, pinpad_key_id para teclado/código de barras), data (cadena JSON con los parámetros de cada acceso: intervalo de fechas datei/datef, horarios houri/hourf, días de la semana mo,tu,we,th,fr,sa,su, días festivos tv, command_device_id, id_rele, technology)check_overalapping, force_same_idrele_commanddeviceidPOST /api/v2/editaccess — Modificar accesoLlamada de conveniencia que ejecuta en secuencia dropaccess y grantaccess, devolviendo un nuevo involved_associations para el usuario. No es una operación atómica: si dropaccess finaliza correctamente pero grantaccess falla, las asociaciones quedan igualmente eliminadas.
involved_associations (puede ser un array), user_id, key_id, data (cadena JSON, mismo formato que GrantAccess)DELETE /api/v2/dropaccess — Revocar accesoRevoca los permisos de acceso.
involved_associations (código obtenido de la respuesta de grantaccess)POST /api/v2/isAccessible — Verificar accesibilidad de un accesoVerifica si un acceso es accesible en un intervalo de tiempo determinado.
unique_name, from_date (timestamp), to_date (timestamp), id_releGET /api/v2/antipassback/ — Detalles del contadorDevuelve los detalles sobre la gestión de contadores para el usuario y el acceso indicados. La respuesta es un array con el detalle de cada relé.
user_id, unique_nameis_active (1/0, contador activo o no), has_total/number_total (límite total de accesos), has_day/number_day (límite diario), has_week/number_week (límite semanal), has_month/number_month (límite mensual)POST /api/v2/antipassback/update_or_create — Configurar contadorCrea o actualiza la configuración del contador para uno o más relés.
user_id, data (cadena JSON con, para cada LabKey y relé, los campos is_active, has_total/number_total, has_day/number_day, has_week/number_week, has_month/number_month)is_active está configurado, solo se puede activar uno entre has_total, has_day, has_week o has_month — no es posible activarlos simultáneamente.GET /api/v2/getlabkeys — Lista de LabKeyDevuelve los detalles de las centralitas/LabKey.
unique_name, labkey_id, key_tipeGET /api/v2/getbuildings — Lista de instalacionesDevuelve la información sobre las instalaciones asociadas al panel.
structure_id, structure_name, referentGET /api/v2/getlogs — Log de accesosDevuelve los logs de los accesos.
from (fecha de inicio), to (fecha de fin), unique_name (nombre de la LabKey), labkey_id, user_id, limit (paginación), offset (paginación)POST /api/v2/sendemail — Enviar emailEnvía un email a un cliente, por ejemplo con los detalles de acceso.
user_id (destinatario), operator_email (remitente)message (mensaje personalizado; si se omite se envía un mensaje predeterminado), cc_emails (array de direcciones en copia), show_sender_name, send_permissions_list, send_fast_url, send_qr_codeAlerts — Notificaciones en tiempo realPermite recibir notificaciones automáticas hacia tu propio endpoint cada vez que se produce un evento (ej. un acceso). El webhook se configura desde el panel de Manage, en la sección Alert → Alert Standard.
user_id, full_name, id_log, key_code, result_boolean (acceso permitido o no), timestamp, is_log_offline, unique_name, labkey_id, tags, event_typeGestión de los campos personalizados que se pueden asociar a la ficha del usuario (ver también Inserción de nuevo usuario).
GET /api/v2/customfields — Lista de camposDevuelve la lista de campos adicionales con sus atributos.
limit, offsetGET /api/v2/customfields/{id_field} — Detalle de campoDevuelve los detalles de un campo adicional específico.
GET /api/v2/customfields/count — Conteo de camposDevuelve el número de campos adicionales guardados.
POST /api/v2/customfields/create — Crear campoCrea un nuevo campo adicional.
type_field (text o date), name_field (máx. 255 caracteres)order (numérico), is_required (1 = obligatorio al completar el usuario), can_disable_user (1 = sí; utilizable solo con type_field=date — el sistema deshabilita automáticamente al usuario a medianoche si la fecha introducida ya ha pasado)POST /api/v2/customfields/{id_field}/update — Modificar campoActualiza un campo adicional existente. Mismos parámetros que create.
GET /api/v2/customfieldsuser/{id_user}/ — Lista de campos por usuarioDevuelve todos los campos adicionales con valor para un usuario.
limit, offsetGET /api/v2/customfieldsuser/{id_user}/{id_field} — Valor de campo por usuarioDevuelve el valor de un campo adicional específico para el usuario indicado.
POST /api/v2/customfieldsuser/{id_user}/{id_field}/create — Establecer valor de campoCrea el valor de un campo adicional para el usuario.
value (máx. 255 caracteres)can_disable_user (0 = no, 1 = sí)POST /api/v2/customfieldsuser/{id_user}/{id_field}/update — Actualizar valor de campoActualiza el valor de un campo adicional para el usuario. Mismos parámetros que create.
Gestión de las plantillas predefinidas para los accesos recurrentes (ver también Plantillas).
GET /api/v2/templates/count — Conteo de plantillasDevuelve el número de plantillas guardadas.
GET /api/v2/templates/ — Lista de plantillasDevuelve la lista de plantillas.
limit, offsetGET /api/v2/templates/detail — Detalle de plantillaDevuelve el detalle de una plantilla específica.
template_idPOST /api/v2/templates/addAccessUser — Aplicar plantilla a usuarioAplica una plantilla de acceso a un usuario. Se puede usar de dos maneras: indicando tanto timestamp_start como timestamp_end (el sistema establece el inicio y el fin del acceso en esos valores), o indicando solo timestamp_start y dejando que el sistema calcule automáticamente el fin según la configuración de la plantilla.
user_id, template_idtimestamp_start (por defecto: ahora), timestamp_endGestión de festividades (ver también Festividades): durante los intervalos configurados, los accesos seleccionados se abren solo a los usuarios autorizados.
GET /api/v2/festivita — Lista de festividadesDevuelve todas las festividades, o una específica si se pasa el ID.
idGET /api/v2/festivita/count — Conteo de festividadesDevuelve el número de festividades configuradas.
idGET /api/v2/festivita/is_holiday — Verificar festividadVerifica si una fecha/hora específica cae dentro de un período festivo.
datetime (formato YYYY-MM-DD HH:MM:SS)unique_name, labkey_id, rele (array), user_idis_holiday (booleano)POST /api/v2/festivita/create — Crear festividadCrea una nueva festividad.
title, start_datetime (formato YYYY-MM-DD HH:MM:SS), end_datetime (formato YYYY-MM-DD HH:MM:SS)description, recurring (1 = recurrente cada año), notification_email, monday…sunday (1 = activa en ese día), varcos (array JSON de labkey_id/rele involucrados), user_ids (array de usuarios involucrados)POST /api/v2/festivita/update — Modificar festividadActualiza una festividad existente. Mismos parámetros opcionales que create.
idtitle, start_datetime, end_datetime, recurring, active (1 = habilitada, 0 = deshabilitada), notification_email, monday…sunday, varcos, user_idsDELETE /api/v2/festivita/delete — Eliminar festividadElimina una festividad.
idPatrones de integración más comunes entre el control de accesos LabKey y software de gestión, PMS, plataformas de reservas y de pago, con ejemplos reales ya en producción.