Envoyer un code de vérification

POST /fapi/v1/verifications · appelé depuis l'hôte de connexion de l'environnement

Envoie un message contenant un code à 6 chiffres et un lien de vérification à l'une des adresses e-mail non vérifiées de l'utilisateur authentifié, et renvoie l'identifiant de la tentative de code. L'utilisateur saisit le code avec Saisissez un code de vérification, ou ouvre le lien. Les deux sont valables pendant 10 minutes. Un nouveau message remplace la vérification en cours de l'adresse : le code et le lien d'un message précédent cessent de fonctionner. Aucune réauthentification n'est nécessaire, car seule la boîte de messagerie de l'adresse reçoit le code. Nécessite le cookie __Host-idp_session de l'utilisateur authentifié ; si le cookie est absent, expiré ou révoqué, renvoie 401 unauthenticated. Une application de première partie sur une autre origine peut à la place envoyer son jeton d'accès à l'API front (Authorization: DPoP <token> avec une preuve DPoP ; voir Jeton d'accès à l'API front).

Requête

En-têtes :

En-tête Obligatoire Description
Idp-Client oui Identifiant du SDK.
Origin oui Doit être exactement https://<hôte de connexion>.
Content-Type oui application/json.

Corps :

Champ Type Obligatoire Description
email_id string (UUID) oui L'id de l'adresse, issu de Lister les adresses e-mail.

Réponse

202 Accepted :

Champ Type Description
id string (UUID) L'identifiant de la tentative de code, utilisé dans le chemin :attempt. Ce n'est pas un secret.
expires_at string (RFC 3339) Moment où le code et le lien cessent de fonctionner.
{"id": "0190a5c4-1b2c-7d3e-8f40-5162738400ff", "expires_at": "2026-10-12T10:10:00Z"}

Erreurs

Statut Code Quand
400 malformed_request Le corps n'est pas un JSON valide.
400 unknown_field Le corps contient un champ autre que email_id.
401 unauthenticated Aucun cookie de session valide.
403 origin_not_allowed Origin est absent ou incorrect.
404 not_found email_id ne correspond à aucune des adresses de l'utilisateur.
409 conflict L'adresse est déjà vérifiée.
413 payload_too_large Le corps est trop volumineux.
415 unsupported_media_type Content-Type n'est pas application/json.
422 validation_failed email_id est absent.
429 verification_rate_limited 5 messages de vérification ont été envoyés à cette adresse au cours de la dernière heure, y compris celui envoyé lors de son ajout ; réessayez plus tard.

Exemple

curl -X POST https://example.keenauth.app/fapi/v1/verifications \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"email_id": "0190a5c4-1b2c-7d3e-8f40-516273849abc"}'

Données personnelles

Cet endpoint traite des données personnelles : profil de l'utilisateur final. Données personnelles dans les API KeenAuth décrit les données stockées, leur durée de conservation et leur mode de suppression. Ne transmettez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.