> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ¿Qué pasa a nivel de backend?

> Consulta el recorrido técnico de una sesión de Biometría Facial.

**1. Crea la sesión**

El nodo Biometría crea la sesión con el modo elegido. En `client` también envía la imagen de referencia.

**2. Abre el enlace**

La webview lee el modo desde el estado del flujo (`/flow-state`) y, como respaldo, desde `details.faceReferenceSource`.

**3. Valida la referencia**

En `government`, el usuario ingresa su cédula y código dactilar antes de la selfie. En `client`, la imagen ya fue entregada por el nodo.

**4. Realiza la prueba de vida**

La única captura del flujo es una selfie guiada con prueba de vida. La webview usa `biometricFlow = ['liveness']`.

**5. Compara los rostros**

El servicio selecciona la selfie aprobada y la foto de referencia y hace la comparación facial. El proveedor es AWS Rekognition; el navegador no puede sustituir ninguna de las dos imágenes.

**6. Entrega el resultado**

Jelou envía el webhook al flujo o al cliente y devuelve al usuario a WhatsApp o a `callbackUrl`.

## Estado de la referencia

El estado del flujo puede incluir esta información:

```json theme={null}
{
  "faceReference": {
    "source": "government",
    "skippedStages": ["document_check"],
    "hasReferenceImage": true,
    "govAttempts": { "used": 1, "max": 3, "approved": false, "exhausted": false }
  }
}
```

* `source` indica `government` o `client`.
* `skippedStages` confirma que no se ejecuta la etapa documental.
* `hasReferenceImage` aplica al modo **Foto provista en el flujo**.
* `govAttempts` aplica al modo **Foto del Registro Civil**.

## Sesión y webhook

Si el usuario cierra y vuelve a abrir el enlace mientras la sesión sigue vigente, continúa donde quedó y conserva los intentos usados.

Cuando expira, se muestra **Este enlace ya no está disponible** y se envía un webhook con `failure_step: "session"` y `failure_reason: "session_expired"`. Después de expirar hay que generar un enlace nuevo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.