Iniciar la recuperación de cuenta de un usuario

POST /v1/users/{user_id}:start-recovery · permiso user-credentials:write

Envía un enlace de recuperación (válido durante 24 horas) al correo principal del usuario sin período de espera; es la vía del modo de recuperación admin_only. La solicitud se abre directamente como ready, y una solicitud de recuperación abierta se reemplaza en la misma transacción (superseded). El enlace nunca se devuelve. El cuerpo opcional solo selecciona el idioma del correo. Envíe un encabezado Idempotency-Key para que los reintentos sean seguros.

Solicitud

Parámetro En Obligatorio Descripción
user_id path sí Id del usuario, con el prefijo usr_.

Cuerpo opcional:

Campo Tipo Obligatorio Descripción
locale string no Etiqueta de idioma BCP 47 del correo, por ejemplo tr o pt-BR. Por defecto, el idioma del usuario o el del entorno.

Respuesta

200 OK. request_id identifica la solicitud de recuperación (prefijo arq_); superseded indica si se reemplazó una solicitud abierta.

{
  "request_id": "arq_0a1b2c3d4e5f6g7h8j9k0m1n2p",
  "expires_at": "2026-01-16T09:30:00Z",
  "superseded": false
}

Errores

Cada error es 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 tiene un campo desconocido.
409 conflict La recuperación de cuenta está disabled en la configuración del entorno, o el usuario no tiene correo principal.
415 unsupported_media_type Se envió un cuerpo sin Content-Type: application/json.
422 validation_failed locale no es una etiqueta de idioma BCP 47 válida, o un campo tiene un tipo incorrecto.
404 not_found El usuario no existe en este entorno (o el id tiene un formato incorrecto).
401 unauthenticated La clave de API falta, no es válida o fue revocada.
403 insufficient_permissions La clave no tiene el permiso user-credentials: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:start-recovery \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"locale": "en"}'