Intégrations les plus courantes : comment faire
Patterns d’intégration les plus courants entre le contrôle d’accès LabKey et les logiciels de gestion, PMS, plateformes de réservation et de paiement, avec des exemples réels déjà en production.
Le schéma technique est simple et robuste : vous pouvez connecter vos logiciels à la couche API de votre installation et la piloter en toute autonomie.

La structure API permet d’effectuer des opérations qui simulent presque la totalité des fonctions du panneau de gestion fourni avec le KIT. Tous les appels doivent être activés et provenir d’une IP autorisée.
Vous trouverez ci-dessous le guide complet de tous les appels disponibles, organisés par domaine fonctionnel. La même documentation est également consultable en format interactif sur Postman : cliquez ici !.
Remarque : une version renforcée du service API est également disponible (API PRO), qui permet d’obtenir les journaux des appels API et d’effectuer la commande d’ouverture à distance — voir la section Api Pro ou contactez-nous pour en savoir plus.
Pour des exemples pratiques d’intégration avec des logiciels de gestion, PMS, plateformes de réservation et de paiement, consultez Intégrations les plus courantes : comment faire.
Tous les appels (à l’exception du test de statut) nécessitent un jeton Bearer, obtenu via l’appel authorize et transmis comme en-tête dans les requêtes suivantes.
authorize.authorize : IP non autorisée ou secret_key incorrecte (invalid_access), identifiants incorrects (invalid_credentials), erreur générique (could not create token).invalid_token). Les erreurs spécifiques éventuelles sont indiquées dans le champ messages de la réponse JSON.POST /api/v2/authorize — Obtenir le jetonRenvoie le jeton Bearer à utiliser pour tous les appels suivants.
email (email de l’opérateur), password (mot de passe de l’opérateur), secret_key (associée à l’IP autorisée, se trouve dans le panneau, section API / Setup)tokeninvalid_credentials (email ou mot de passe incorrects), invalid_credentials2 (IP non autorisée ou secret_key incorrecte), invalid_access1 (secret_key manquante)GET /api/v2/ — Test de statutVérifie que le panneau est actif et fonctionnel (affiche Test). Ne nécessite ni authentification ni paramètres.
PUT /api/v2/adduser — Créer un nouvel utilisateurCrée un nouvel utilisateur sur le panneau.
name (prénom), surname (nom)email, phone, prefix (préfixe national urlencodé, ex. +39 → %2b39), tags (tableau ; chaque virgule est remplacée par un underscore), status (1 = activé, 0 = désactivé), fields (tableau de champs personnalisés supplémentaires au format fields[id_champ]=valeur)PUT /api/v2/updateuser — Modifier un utilisateurMet à jour les données d’un utilisateur existant.
user_id, name, surnameemail, phone, prefix, tags, status (1 = activé, 0 = désactivé), fields (tableau de champs supplémentaires, même format que AddUser)DELETE /api/v2/deleteuser — Supprimer un utilisateurSupprime un utilisateur du panneau.
user_idGET /api/v2/getusers — Liste des utilisateursRenvoie les données de tous les utilisateurs présents sur le panneau, ou d’un utilisateur spécifique si le paramètre optionnel est transmis.
user_id, tags (filtre les utilisateurs par tag), getGrantInfo (si 1, inclut également les détails des accès associés)GET /api/v2/users/getStatus — Statut utilisateurRenvoie si un utilisateur est activé ou désactivé.
user_idPOST /api/v2/users/changeStatus — Changer le statut utilisateur (pas encore disponible)Si status = 1, l’utilisateur est autorisé à accéder, si status = 0 il est désactivé.
user_id, status (1 = activé, 0 = désactivé)GET /api/v2/getGroup — Liste des groupesRenvoie les données de tous les groupes présents sur le panneau, ou d’un ou plusieurs groupes spécifiques si le paramètre optionnel est transmis.
group_id (peut être un tableau)POST /api/v2/grantAccessGroup — Autoriser l’accès à un groupeAutorise l’accès d’un ou plusieurs utilisateurs à un ou plusieurs groupes indiqués, en créant l’association utilisateur-groupe.
user_id (peut être un tableau), group_id (peut être un tableau)POST /api/v2/dropAccessGroup — Révoquer l’accès à un groupeRévoque les permissions d’accès d’un utilisateur appartenant à un groupe, en supprimant l’association utilisateur-groupe.
user_id (peut être un tableau), group_id (peut être un tableau)GET /api/v2/getcredits — Solde des créditsRenvoie le solde de crédits disponible.
GET /api/v2/getprices — Grille tarifaireRenvoie la grille tarifaire pour la recharge de crédits.
POST /api/v2/recharge — Recharger des créditsEffectue une recharge de crédit.
user_id, amount (ex. 10.50)GET /api/v2/getunusednfc — Clés NFC libresRenvoie la liste des clés NFC non associées à aucun utilisateur. Aucun paramètre requis.
GET /api/v2/getallnfc — Liste des clés NFCRenvoie les données relatives à toutes les clés NFC présentes sur le panneau, associées ou non.
limit, offsetoffset utilisé sans limitPUT /api/v2/addkey — Insérer une clé NFCInsère une nouvelle clé NFC.
nfc_key_code (code RFID lu avec un lecteur standard : il sera converti selon le standard LabKey — ne pas utiliser un code issu d’un journal d’accès), nfc_key_name (nom à associer à la clé)force_hex (force la conversion du code depuis une chaîne hexadécimale ; si omis, la conversion s’effectue automatiquement uniquement si le code contient au moins une lettre)PUT /api/v2/addkey2user — Associer une clé NFC à un utilisateurAssocie une clé NFC à un utilisateur spécifique.
user_id, nfc_key_idDELETE /api/v2/deletekey — Supprimer une clé NFCSupprime une clé NFC.
nfc_key_code (code RFID converti selon le standard LabKey, ex. 1234567890 → 210215073)nfc_key_code manquantGET /api/v2/getnfcdetails — Détails d’une clé NFCRenvoie les détails relatifs à une clé NFC.
nfc_key_code (code converti selon le standard LabKey)POST /api/v2/editnfc — Modifier une clé NFCModifie les détails d’une clé NFC.
nfc_key_code, namenfc_key_code non trouvé ou manquant, name manquantPOST /api/v2/edittastierino — Modifier le code du clavierChange le code d’un clavier (pinpad).
old_pinpad_key_code (ancien code à remplacer), new_pinpad_key_code (nouveau code)POST /api/v2/updatepinpad — Mettre à jour le code du clavier pour un utilisateurMet à jour le code du clavier en sélectionnant l’utilisateur.
user_id, new_pinpad_key_codePOST /api/v2/getqrcode — Générer un QR CodeGénère un QR Code pour l’utilisateur sélectionné, utilisable à partir de la « message string ».
user_idimage (si 1, renvoie l’image du QR Code encodée en base64), with_background (nécessite image=1 ; si 1, ajoute un fond décoratif à l’image)POST /api/v2/getfasturl — Générer une Fast URLGénère la Fast URL pour l’utilisateur sélectionné, utilisable à partir du champ « fast_url ».
user_idGET /api/v2/getallpinpad — Liste des codes clavierRenvoie tous les codes clavier et leurs détails.
limit, offsetlimit et offset, ou les laisser tous les deux vides ; limit/offset doivent être des entiersPOST /api/v2/getGrantInfo — Détails d’un accèsRenvoie les données relatives à l’accès spécifié.
involved_associations (un ou plusieurs ID renvoyés par l’appel grantaccess)involved_associations valideinvolved_associations non trouvéePOST /api/v2/automategetGrantInfo — Détails d’accès simplifiésAppel de commodité pour simplifier l’utilisation de getGrantInfo.
user_id (peut être un tableau), unique_name (peut être un tableau — nom de la LabKey sélectionnée)GET /api/v2/getuservarcodetails — Détails des points d’accès utilisateurRenvoie tous les détails sur les points d’accès associés à l’utilisateur sélectionné.
user_idPOST /api/v2/grantaccess — Autoriser l’accèsAutorise l’accès d’un utilisateur. Pour configurer une combinaison de plusieurs technologies (NFC, clavier, code-barres), il est possible d’appeler cette API plusieurs fois en changeant la key_id.
user_id, key_id (ID de la clé d’accès associée à l’utilisateur : utiliser nfc_key_id pour NFC/Pocket, pinpad_key_id pour clavier/code-barres), data (chaîne JSON avec les paramètres de chaque point d’accès : plage de dates datei/datef, horaires houri/hourf, jours de la semaine mo,tu,we,th,fr,sa,su, jours fériés tv, command_device_id, id_rele, technology)check_overalapping, force_same_idrele_commanddeviceidPOST /api/v2/editaccess — Modifier un accèsAppel de commodité qui exécute en séquence dropaccess et grantaccess, en renvoyant un nouvel involved_associations pour l’utilisateur. Ce n’est pas une opération atomique : si dropaccess se termine correctement mais que grantaccess échoue, les associations sont malgré tout supprimées.
involved_associations (peut être un tableau), user_id, key_id, data (chaîne JSON, même format que GrantAccess)DELETE /api/v2/dropaccess — Révoquer un accèsRévoque les permissions d’accès.
involved_associations (code obtenu depuis la réponse de grantaccess)POST /api/v2/isAccessible — Vérifier l’accessibilité d’un point d’accèsVérifie si un point d’accès est accessible dans un intervalle de temps donné.
unique_name, from_date (timestamp), to_date (timestamp), id_releGET /api/v2/antipassback/ — Détails du compteurRenvoie les détails sur la gestion des compteurs pour l’utilisateur et le point d’accès indiqués. La réponse est un tableau avec le détail pour chaque relais.
user_id, unique_nameis_active (1/0, compteur actif ou non), has_total/number_total (limite totale d’accès), has_day/number_day (limite journalière), has_week/number_week (limite hebdomadaire), has_month/number_month (limite mensuelle)POST /api/v2/antipassback/update_or_create — Configurer le compteurCrée ou met à jour la configuration du compteur pour un ou plusieurs relais.
user_id, data (chaîne JSON avec, pour chaque LabKey et relais, les champs is_active, has_total/number_total, has_day/number_day, has_week/number_week, has_month/number_month)is_active est défini, on ne peut activer qu’un seul paramètre parmi has_total, has_day, has_week ou has_month — il n’est pas possible de les activer simultanément.GET /api/v2/getlabkeys — Liste des LabKeyRenvoie les détails des unités de contrôle/LabKey.
unique_name, labkey_id, key_tipeGET /api/v2/getbuildings — Liste des structuresRenvoie les informations sur les structures associées au panneau.
structure_id, structure_name, referentGET /api/v2/getlogs — Journal des accèsRenvoie les journaux des accès.
from (date de début), to (date de fin), unique_name (nom de la LabKey), labkey_id, user_id, limit (pagination), offset (pagination)POST /api/v2/sendemail — Envoyer un emailEnvoie un email à un client, par exemple avec les détails d’accès.
user_id (destinataire), operator_email (expéditeur)message (message personnalisé ; si omis, un message par défaut est envoyé), cc_emails (tableau d’adresses en copie), show_sender_name, send_permissions_list, send_fast_url, send_qr_codeAlerts — Notifications en temps réelPermet de recevoir des notifications automatiques vers votre propre endpoint chaque fois qu’un événement se produit (ex. un accès). Le webhook se configure depuis le panneau de Manage, dans la section Alert → Alert Standard.
user_id, full_name, id_log, key_code, result_boolean (accès autorisé ou non), timestamp, is_log_offline, unique_name, labkey_id, tags, event_typeGestion des champs personnalisés que l’on peut associer à la fiche utilisateur (voir aussi Ajout d’un nouvel utilisateur).
GET /api/v2/customfields — Liste des champsRenvoie la liste des champs supplémentaires avec leurs attributs.
limit, offsetGET /api/v2/customfields/{id_field} — Détail du champRenvoie les détails d’un champ supplémentaire spécifique.
GET /api/v2/customfields/count — Nombre de champsRenvoie le nombre de champs supplémentaires enregistrés.
POST /api/v2/customfields/create — Créer un champCrée un nouveau champ supplémentaire.
type_field (text ou date), name_field (max 255 caractères)order (numérique), is_required (1 = obligatoire lors de la saisie utilisateur), can_disable_user (1 = oui ; utilisable uniquement avec type_field=date — le système désactive automatiquement l’utilisateur à minuit si la date saisie est passée)POST /api/v2/customfields/{id_field}/update — Modifier un champMet à jour un champ supplémentaire existant. Mêmes paramètres que create.
GET /api/v2/customfieldsuser/{id_user}/ — Liste des champs par utilisateurRenvoie tous les champs supplémentaires renseignés pour un utilisateur.
limit, offsetGET /api/v2/customfieldsuser/{id_user}/{id_field} — Valeur d’un champ pour un utilisateurRenvoie la valeur d’un champ supplémentaire spécifique pour l’utilisateur indiqué.
POST /api/v2/customfieldsuser/{id_user}/{id_field}/create — Définir la valeur d’un champCrée la valeur d’un champ supplémentaire pour l’utilisateur.
value (max 255 caractères)can_disable_user (0 = non, 1 = oui)POST /api/v2/customfieldsuser/{id_user}/{id_field}/update — Mettre à jour la valeur d’un champMet à jour la valeur d’un champ supplémentaire pour l’utilisateur. Mêmes paramètres que create.
Gestion des modèles prédéfinis pour les accès récurrents (voir aussi Template).
GET /api/v2/templates/count — Nombre de modèlesRenvoie le nombre de modèles enregistrés.
GET /api/v2/templates/ — Liste des modèlesRenvoie la liste des modèles.
limit, offsetGET /api/v2/templates/detail — Détail d’un modèleRenvoie le détail d’un modèle spécifique.
template_idPOST /api/v2/templates/addAccessUser — Appliquer un modèle à un utilisateurApplique un modèle d’accès à un utilisateur. Cela peut se faire de deux façons : en indiquant à la fois timestamp_start et timestamp_end (le système règle le début et la fin de l’accès sur ces valeurs), ou en indiquant seulement timestamp_start et en laissant le système calculer automatiquement la fin selon les paramètres du modèle.
user_id, template_idtimestamp_start (par défaut : maintenant), timestamp_endGestion des jours fériés (voir aussi Jours fériés) : pendant les intervalles configurés, les points d’accès sélectionnés ne s’ouvrent qu’aux utilisateurs autorisés.
GET /api/v2/festivita — Liste des jours fériésRenvoie tous les jours fériés, ou un jour spécifique si l’ID est transmis.
idGET /api/v2/festivita/count — Nombre de jours fériésRenvoie le nombre de jours fériés configurés.
idGET /api/v2/festivita/is_holiday — Vérifier un jour fériéVérifie si une date/heure spécifique tombe dans une période de jour férié.
datetime (format YYYY-MM-DD HH:MM:SS)unique_name, labkey_id, rele (tableau), user_idis_holiday (booléen)POST /api/v2/festivita/create — Créer un jour fériéCrée un nouveau jour férié.
title, start_datetime (format YYYY-MM-DD HH:MM:SS), end_datetime (format YYYY-MM-DD HH:MM:SS)description, recurring (1 = récurrent chaque année), notification_email, monday…sunday (1 = actif ce jour), varcos (tableau JSON de labkey_id/rele concernés), user_ids (tableau d’utilisateurs concernés)POST /api/v2/festivita/update — Modifier un jour fériéMet à jour un jour férié existant. Mêmes paramètres optionnels que create.
idtitle, start_datetime, end_datetime, recurring, active (1 = activé, 0 = désactivé), notification_email, monday…sunday, varcos, user_idsDELETE /api/v2/festivita/delete — Supprimer un jour fériéSupprime un jour férié.
idPatterns d’intégration les plus courants entre le contrôle d’accès LabKey et les logiciels de gestion, PMS, plateformes de réservation et de paiement, avec des exemples réels déjà en production.