Listar usuarios

GET /v1/users · permiso users:read

Lista los usuarios del entorno con paginación por cursor, del más reciente al más antiguo de forma predeterminada. Aquí solo se aceptan filtros que no contienen datos personales. Para buscar usuarios por dirección de correo electrónico, número de teléfono o nombre de usuario, use Buscar usuarios.

Solicitud

Parámetro En Obligatorio Descripción
limit query no Tamaño de página, de 1 a 100. Predeterminado 20.
after query no Cursor opaco de list_metadata.after. Es excluyente con before.
before query no Cursor opaco de list_metadata.before. Es excluyente con after.
order query no asc o desc según la fecha de creación. Predeterminado desc.
status query no active, blocked o pending_deletion.
external_id query no Coincidencia exacta con su propio identificador.
created_after query no Hora RFC 3339; usuarios creados después de ella.
created_before query no Hora RFC 3339; usuarios creados antes de ella.

Un cursor solo es válido con los mismos filtros y el mismo orden para los que se emitió; de lo contrario, la solicitud falla con invalid_cursor.

Respuesta

200 OK. data contiene los usuarios de la página; list_metadata.before y list_metadata.after son cursores para la página anterior y la siguiente (null cuando no existe). No se devuelve el recuento total.

Los datos personales se enmascaran cuando la clave no tiene el permiso users:read_pii: email pasa a ser a***@e***.com, phone_number conserva solo sus últimos 2 dígitos (+**********67), name, given_name, family_name, middle_name y nickname pasan a ser iniciales (A. L.), username conserva solo su primer carácter (a***), birthdate pasa a ser ****-**-** y address pasa a ser {"redacted": true}. user_metadata y app_metadata no se enmascaran.

{
  "data": [ {
    "id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
    "kind": "regular",
    "status": "active",
    "external_id": null,
    "username": null,
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "email_verified": true,
    "phone_number": null,
    "phone_verified": false,
    "user_metadata": {},
    "app_metadata": {},
    "created_via": "admin_api",
    "created_at": "2026-01-15T09:30:00Z",
    "updated_at": "2026-01-15T09:30:00Z",
    "last_sign_in_at": null,
    "deletion_requested_at": null,
    "deletion_due_at": null
  } ],
  "list_metadata": { "before": null, "after": "<opaque cursor>" }
}

Errores

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

HTTP code Cuándo
400 invalid_cursor El cursor está mal formado, se ha manipulado o se emitió para otros filtros.
422 validation_failed Un parámetro de consulta no es válido (limit fuera de rango, marca de tiempo incorrecta, parámetro repetido).
401 unauthenticated La clave de API falta, no es válida o ha sido revocada.
403 insufficient_permissions La clave no tiene el permiso users: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?limit=20&status=active" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"

Datos personales

Este endpoint contiene datos personales: perfil del usuario final. Datos personales en las API de KeenAuth describe qué se almacena, durante 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.