Enviar un código de verificación
POST /fapi/v1/verifications · llamado desde el host de inicio de sesión del entorno
Envía un mensaje con un código de 6 dígitos y un enlace de verificación a una de las direcciones de correo electrónico no verificadas del usuario autenticado, y devuelve el identificador del intento de código. El usuario introduce el código con Introducir un código de verificación, o abre el enlace. Ambos son válidos durante 10 minutos. Un nuevo mensaje reemplaza la verificación abierta de la dirección: el código y el enlace de un mensaje anterior dejan de funcionar. No es necesario volver a autenticarse, porque solo el buzón de la dirección recibe el código. Requiere la cookie __Host-idp_session del usuario autenticado; si la cookie falta, ha caducado o ha sido revocada, devuelve 401 unauthenticated. Una aplicación de primera parte en otro origen puede enviar, en su lugar, su token de acceso a la API Front (Authorization: DPoP <token> con una prueba DPoP; consulte Token de acceso a la API Front).
Solicitud
Encabezados:
| Encabezado | Obligatorio | Descripción |
|---|---|---|
Idp-Client |
sí | Identificador del SDK. |
Origin |
sí | Debe ser exactamente https://<sign-in host>. |
Content-Type |
sí | application/json. |
Cuerpo:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
email_id |
string (UUID) | sí | El id de la dirección, de Listar direcciones de correo electrónico. |
Respuesta
202 Accepted:
| Campo | Tipo | Descripción |
|---|---|---|
id |
string (UUID) | El identificador del intento de código, que se usa en la ruta :attempt. No es un secreto. |
expires_at |
string (RFC 3339) | Momento en que el código y el enlace dejan de funcionar. |
{"id": "0190a5c4-1b2c-7d3e-8f40-5162738400ff", "expires_at": "2026-10-12T10:10:00Z"}
Errores
| Estado | Código | Cuándo |
|---|---|---|
| 400 | malformed_request |
El cuerpo no es JSON válido. |
| 400 | unknown_field |
El cuerpo tiene un campo distinto de email_id. |
| 401 | unauthenticated |
No hay una cookie de sesión válida. |
| 403 | origin_not_allowed |
Origin falta o es incorrecto. |
| 404 | not_found |
email_id no es una de las direcciones del usuario. |
| 409 | conflict |
La dirección ya está verificada. |
| 413 | payload_too_large |
El cuerpo es demasiado grande. |
| 415 | unsupported_media_type |
Content-Type no es application/json. |
| 422 | validation_failed |
Falta email_id. |
| 429 | verification_rate_limited |
Se enviaron 5 mensajes de verificación a esta dirección en la última hora, incluido el enviado al añadirla; vuelva a intentarlo más tarde. |
Ejemplo
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"}'
Datos personales
Este endpoint contiene datos personales: perfil del usuario final. 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.