Marcar una dirección de correo electrónico como verificada por un administrador
POST /v1/users/{user_id}/emails/{email_id}:verify · permiso users:write
Marca la dirección como verificada bajo su autoridad. No se envía ningún código ni enlace al usuario, y el método de verificación se guarda como admin_api, por lo que no es prueba de que el usuario controle el buzón; prefiera :send-verification cuando usted mismo no haya verificado la dirección. Si la dirección ya está verificada no se escribe nada y se devuelve 200. Las copias no verificadas de la misma dirección en otras cuentas del entorno se eliminan. El cambio se registra en el registro de auditoría de gestión como user.email_verified con la clave de API como actor, y emite user.updated.
Solicitud
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
user_id |
path | sí | Id del usuario, con el prefijo usr_. |
email_id |
path | sí | Id de la fila de correo electrónico (UUID interno, en minúsculas y con guiones), tal como lo devuelve GET /v1/users/{user_id}/emails. |
La solicitud no lleva cuerpo (se acepta un cuerpo vacío o {}).
Respuesta
200 OK con la fila de correo electrónico actualizada. Sin el permiso users:read_pii, la dirección se enmascara (a***@e***.com).
{
"id": "0191f0a0-3333-7444-8555-666666666666",
"email": "ada@example.com",
"verified": true,
"primary": false,
"created_at": "2026-01-15T09:30:00Z"
}
Errores
Todos los errores son un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 400 | malformed_request, unknown_field |
El cuerpo no es JSON válido, o no está vacío ni es {}. |
| 404 | not_found |
El usuario o la fila de correo electrónico no existen en este entorno, el correo no pertenece a este usuario, o algún id tiene un formato incorrecto. |
| 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:write. |
| 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 -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/emails/0191f0a0-3333-7444-8555-666666666666:verify \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
Datos personales
Este endpoint trata 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.