Listar las sesiones de un usuario

GET /v1/users/{user_id}/sessions · permiso sessions:read

Lista las sesiones del usuario en una sola página, primero las vistas más recientemente, con un máximo de 1,000. La lista no tiene limit, after, before ni order, y list_metadata siempre tiene valor null. Por defecto solo se devuelven las sesiones activas; con include_inactive=true también se devuelven las sesiones expiradas y revocadas (que aún estén dentro del período de retención). La dirección IP completa se muestra y cada consulta se registra en el registro de auditoría de administración. Las cookies, los tokens y las huellas digitales del dispositivo nunca se devuelven.

Ámbito de organización

Indique org_id para construir una vista de diagnóstico de miembros para un administrador de la organización. La clave también necesita entonces el permiso organizations:read; sin él, la solicitud falla con 403 insufficient_permissions antes de leer nada. Si el usuario no es miembro de esa organización (no tiene una membresía invited, active o suspended), la solicitud falla con 404 not_found, la misma respuesta que para un usuario desconocido. Si el usuario es miembro, solo se devuelven las sesiones abiertas bajo la política de esa organización (sesiones cuyo org_id es esa organización); las sesiones del usuario en el contexto de otra organización, o fuera de cualquier organización, nunca se devuelven. ip_address y user_agent son null en esta vista. Sin org_id, la respuesta no cambia.

Solicitud

Parámetro En Obligatorio Descripción
user_id ruta sí ID del usuario, con el prefijo usr_.
include_inactive consulta no true para devolver también las sesiones expiradas y revocadas. Por defecto es false.
org_id consulta no ID de la organización, con el prefijo org_. Limita la vista a esa organización; consulte Ámbito de organización. Requiere organizations:read.

Respuesta

200 OK. Los campos vacíos son null.

{
  "data": [
    {
      "id": "ses_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "user_id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "status": "active",
      "login_host": "login.example.com",
      "auth_time": "2026-02-01T08:00:00Z",
      "acr": "mfa",
      "amr": ["pwd", "otp"],
      "created_at": "2026-02-01T08:00:00Z",
      "last_seen_at": "2026-02-01T09:15:00Z",
      "idle_expires_at": "2026-02-08T09:15:00Z",
      "absolute_expires_at": "2026-03-03T08:00:00Z",
      "org_id": null,
      "ip_address": "203.0.113.10",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0)",
      "revoked_at": null,
      "revoke_reason": null
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}

status: active, expired, revoked · acr: 1fa, mfa, phr · org_id: la organización de la sesión, si la tiene.

Errores

Cada error es un cuerpo application/problem+json con un code estable.

HTTP code Cuándo
422 validation_failed include_inactive no es true ni false.
404 not_found El usuario no existe en este entorno (o el ID está mal formado), o se indica org_id y el usuario no es miembro de esa organización.
401 unauthenticated La clave de API falta, no es válida o fue revocada.
403 insufficient_permissions La clave no tiene el permiso sessions:read, o se indica org_id y la clave no tiene organizations:read.
429 rate_limited Se superó el límite de frecuencia; respete Retry-After.
503 service_unavailable Una dependencia no está disponible temporalmente; reintente más tarde.

Ejemplo

curl "https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/sessions?include_inactive=true" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"

CLI: keenauth users sessions list usr_0a1b2c3d4e5f6g7h8j9k0m1n2p --include-inactive

Datos personales

Este endpoint contiene datos personales: sesiones. Datos personales en las API de KeenAuth describe qué se almacena, cuánto tiempo se conserva y cómo se elimina. No envíe categorías especiales de datos personales (salud, datos biométricos, religión, opiniones políticas, orientación sexual) en ningún campo.