Lister les authentificateurs d'un utilisateur
GET /v1/users/{user_id}/authenticators · autorisation users:read
Liste les authentificateurs (clés d'accès, TOTP, SMS, e-mail et facteurs push) d'un utilisateur sur une seule page, y compris ceux révoqués au cours des 90 derniers jours, triés par date de création. Le nombre d'authentificateurs par utilisateur est borné : la liste n'accepte donc ni limit, ni after, ni before, ni order, et list_metadata vaut toujours null. Seules les métadonnées sont renvoyées : jamais les clés publiques, les identifiants de credential, les secrets TOTP ni les codes de récupération.
Périmètre de l'organisation
Transmettez org_id pour construire une vue de diagnostic d'un membre à l'intention d'un administrateur d'organisation. La clé doit alors aussi disposer de l'autorisation organizations:read ; sans elle, la requête échoue avec 403 insufficient_permissions avant toute lecture. Si l'utilisateur n'est pas membre de cette organisation (aucune adhésion invited, active ou suspended), la requête échoue avec 404 not_found, la même réponse que pour un utilisateur inconnu. Si l'utilisateur est membre, seuls la catégorie de chaque authentificateur et l'état d'inscription à l'authentification multifacteur sont affichés : seuls les authentificateurs actifs sont listés, label, last_used_at, revoked_at, revoked_by et revoke_reason valent null, et synced vaut false, car les détails de l'appareil de la personne en dehors de l'organisation ne la concernent pas. L'authentification multifacteur est active lorsqu'un authentificateur actif a le role second_factor ou both. Sans org_id, la réponse est inchangée.
Requête
| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
user_id |
chemin | oui | Identifiant de l'utilisateur, préfixé usr_. |
org_id |
requête | non | Identifiant de l'organisation, préfixé org_. Limite la vue à cette organisation ; voir Périmètre de l'organisation. Requiert organizations:read. |
Réponse
200 OK. data contient les authentificateurs triés par date de création ; list_metadata vaut toujours null car la liste n'est pas paginée. Les champs vides valent null.
Lorsque la clé ne dispose pas de l'autorisation users:read_pii, label est réduit aux initiales (A. L.).
{
"data": [
{
"id": "cred_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"type": "webauthn",
"role": "both",
"label": "Laptop",
"status": "active",
"synced": true,
"created_at": "2026-01-15T09:30:00Z",
"last_used_at": "2026-02-01T08:00:00Z",
"revoked_at": null,
"revoked_by": null,
"revoke_reason": null
}
],
"list_metadata": {
"before": null,
"after": null
}
}
type : webauthn, totp, sms, email, push · role : first_factor, second_factor, both · status : pending, active, revoked, clone_suspected
Erreurs
Chaque erreur est un corps application/problem+json accompagné d'un code stable.
| HTTP | code |
Quand |
|---|---|---|
| 404 | not_found |
L'utilisateur n'existe pas dans cet environnement (ou l'identifiant est mal formé), ou org_id est fourni et l'utilisateur n'est pas membre de cette organisation. |
| 401 | unauthenticated |
La clé d'API est absente, invalide ou révoquée. |
| 403 | insufficient_permissions |
La clé ne dispose pas de l'autorisation users:read, ou org_id est fourni et la clé ne dispose pas de organizations:read. |
| 429 | rate_limited |
La limite de débit a été dépassée ; respectez Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez plus tard. |
Exemple
curl https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/authenticators \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
Données personnelles
Cet endpoint traite des données personnelles : des identifiants d'authentification. Données personnelles dans les API KeenAuth décrit les données stockées, leur durée de conservation et leur mode de suppression. N'envoyez pas de catégories particulières de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.