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.