Skip to Content
Authentification

Authentification et clés d’API

L’API utilise des clés d’API d’entreprise (des comptes de service, non liés à un utilisateur). Chaque requête s’authentifie avec la clé en Bearer token :

curl https://api.kinmu.app/v1/organization \ -H "Authorization: Bearer kinmu_sk_live_xxxxxxxx"

Nature des clés

L’entreprise est toujours résolue à partir de la clé : vous n’envoyez jamais de companyId dans l’URL ni dans le body.

AspectDétail
Formatkinmu_sk_live_<40+ chars> (production) · kinmu_sk_test_<40+ chars> (sandbox).
VisibilitéLes clés ne sont affichées qu’une seule fois, à la création. Ensuite, seuls le préfixe et les premiers caractères restent visibles.
ÉmissionDepuis le dashboard my.kinmu.app → Développeurs (réservé à global_admin / company_manager).
Limite10 clés actives maximum par entreprise.
ExpirationOptionnelle (90 / 180 / 365 jours ou sans expiration).

Scopes

Chaque clé porte des scopes explicites (moindre privilège). Sans le scope requis, l’endpoint répond 403 invalid_scope.

ScopePermet
org:empleados:readLire les salariés.
org:empleados:writeCréer, mettre à jour et gérer le départ des salariés.
org:fichajes:readLire les pointages et les work-summaries.
org:fichajes:writeEnregistrer des pointages.
org:ausencias:readLire les absences.
org:ausencias:writeCréer, approuver et refuser des absences.
org:saldos:readLire les soldes de congés.
org:estructura:readLire les locations et les units.
org:informes:readDemander et télécharger des rapports.
webhooks:manageGérer les webhooks sortants.

GET /v1/organization ne requiert aucun scope particulier : il sert à l’introspection et à la validation de la clé. Les rapports exigent en plus le scope de lecture de leur domaine : p. ex. absences_export requiert org:ausencias:read.

N’accordez à chaque intégration que les scopes dont elle a besoin.

Sandbox

Les clés kinmu_sk_test_ opèrent toujours sur une entreprise sandbox avec des données synthétiques, isolée de vos données réelles. Voir le guide Sandbox.

Rotation

Faire tourner une clé revient à en créer une nouvelle et révoquer l’ancienne. Flux sans interruption de service :

  1. Créez la nouvelle clé avec les mêmes scopes.
  2. Déployez votre intégration avec la nouvelle clé.
  3. Vérifiez qu’elle fonctionne (p. ex. un GET /v1/organization).
  4. Révoquez l’ancienne clé.

Révocation

La révocation est immédiate depuis le dashboard : la clé cesse de fonctionner dès la requête suivante (401 unauthenticated). Révoquez sans attendre toute clé que vous soupçonnez compromise et vérifiez son last_used_ip.

Bonnes pratiques

  • Ne publiez jamais une clé dans du code client, une app mobile, un dépôt ou des logs. Ce sont des identifiants de serveur.
  • Stockez-les dans un gestionnaire de secrets ou des variables d’environnement.
  • Utilisez une clé par intégration pour pouvoir révoquer de façon granulaire.
  • Appliquez le moindre privilège : uniquement les scopes indispensables.
  • Configurez une expiration et effectuez des rotations régulières.
  • Dans vos logs, n’enregistrez jamais le header Authorization.

Erreurs d’authentification

HTTPcodeCause
401unauthenticatedClé absente, invalide, révoquée ou expirée.
403invalid_scopeLa clé n’a pas le scope requis (errors.required_scope).
403subscription_inactiveL’abonnement de l’entreprise est suspendu.
403addon_disabledL’addon Public API n’est pas actif.

Le format complet des erreurs est décrit dans Conventions → Erreurs.

Last updated on