Skip to Content
Autenticación

Autenticación y API keys

La API usa API keys de empresa (service accounts, no ligadas a un usuario). Cada petición se autentica con la key como Bearer token:

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

Naturaleza de las keys

La empresa se resuelve siempre desde la key: nunca envías un companyId en la URL ni en el body.

AspectoDetalle
Formatokinmu_sk_live_<40+ chars> (producción) · kinmu_sk_test_<40+ chars> (sandbox).
VisibilidadSe muestran una sola vez al crearlas. Después solo verás el prefijo + los primeros caracteres.
EmisiónDesde el dashboard my.kinmu.app → Desarrolladores (solo global_admin / company_manager).
LímiteMáximo 10 keys activas por empresa.
ExpiraciónOpcional (90 / 180 / 365 días o sin expiración).

Scopes

Cada key lleva scopes explícitos (mínimo privilegio). Sin el scope requerido, el endpoint responde 403 invalid_scope.

ScopePermite
org:empleados:readLeer empleados.
org:empleados:writeAlta, actualización y baja de empleados.
org:fichajes:readLeer fichajes y work-summaries.
org:fichajes:writeRegistrar fichajes.
org:ausencias:readLeer ausencias.
org:ausencias:writeCrear, aprobar y rechazar ausencias.
org:saldos:readLeer saldos de vacaciones.
org:estructura:readLeer locations y units.
org:informes:readSolicitar y descargar informes.
webhooks:manageGestionar webhooks salientes.

GET /v1/organization no requiere un scope concreto: sirve para introspección y para validar la key. Los informes exigen además el scope de lectura de su dominio: p. ej. absences_export requiere org:ausencias:read.

Concede a cada integración solo los scopes que necesita.

Sandbox

Las keys kinmu_sk_test_ operan siempre sobre una empresa sandbox con datos sintéticos, aislada de tus datos reales. Ver la guía de Sandbox.

Rotación

Rotar una key = crear una nueva y revocar la antigua. Flujo sin downtime:

  1. Crea la nueva key con los mismos scopes.
  2. Despliega tu integración con la nueva key.
  3. Verifica que funciona (p. ej. un GET /v1/organization).
  4. Revoca la key antigua.

Revocación

La revocación es inmediata desde el dashboard: la key deja de funcionar en el siguiente request (401 unauthenticated). Revoca de inmediato cualquier key que sospeches comprometida y revisa su last_used_ip.

Buenas prácticas

  • Nunca publiques una key en código cliente, apps móviles, repositorios ni logs. Son credenciales de servidor.
  • Guárdalas en un gestor de secretos o variables de entorno.
  • Usa una key por integración para poder revocar de forma granular.
  • Aplica mínimo privilegio: solo los scopes imprescindibles.
  • Configura expiración y rota periódicamente.
  • En logs, nunca registres el header Authorization.

Errores de autenticación

HTTPcodeCausa
401unauthenticatedFalta la key, es inválida, revocada o expirada.
403invalid_scopeLa key no tiene el scope requerido (errors.required_scope).
403subscription_inactiveLa suscripción de la empresa está suspendida.
403addon_disabledEl addon Public API no está activo.

Consulta el formato completo de errores en Convenciones → Errores.

Last updated on