> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/api-rest/midapi-v2/biometric-services/face-liveness.md).

# Face Liveness

Servicio que determina si la selfie corresponde a una persona presente en el momento de la captura.

### Endpoint

```
POST /biometric/face/liveness
```

### Headers

| Nombre            | Tipo   | Requerido   | Descripción                                                                                                                                                         |
| ----------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Authorization** | string | **Sí**      | Token de consumer en formato `Bearer <token>`. Ver [Autenticación](/api-rest/midapi-v2/autenticacion.md).                                                           |
| **consumer-id**   | string | **Sí**      | Identificador del consumer.                                                                                                                                         |
| **operation-id**  | string | Condicional | Identificador de la operación a la que pertenecen los assets referenciados. Requerido cuando `source` es `FILE_KEY`. Ver [Storage](/api-rest/midapi-v2/storage.md). |

### Cuerpo de la solicitud

**Content-Type:** `application/json`

#### Parámetros

| Parámetro | Tipo   | Requerido | Descripción                                                                                                                                                      |
| --------- | ------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `source`  | string | **Sí**    | Modo en que se aportan los assets: `FILE_KEY` para claves de assets almacenados, `FILE` para contenido en Base64. Ver [Storage](/api-rest/midapi-v2/storage.md). |
| `image`   | string | **Sí**    | Selfie: clave del asset `TOKEN_BEST_IMAGE` o su contenido en Base64.                                                                                             |

#### Ejemplo de solicitud

```json
{
  "source": "FILE_KEY",
  "image": "0192a3f4-7b21-7c44-9e1a-3f5b8c2d1e04/TOKEN_BEST_IMAGE"
}
```

### Respuestas

#### `200` Éxito

#### Parámetros de respuesta

| Parámetro        | Tipo   | Descripción                                                   |
| ---------------- | ------ | ------------------------------------------------------------- |
| `consumerId`     | string | Identificador del consumer que realizó la llamada.            |
| `transactionId`  | string | Identificador de la transacción.                              |
| `timestamp`      | string | Marca de tiempo de la respuesta en formato **ISO 8601**.      |
| `message`        | string | Campo descriptivo del resultado de la ejecución del servicio. |
| `livenessResult` | string | Resultado de la prueba de vida: `LIVE`, `NO_LIVE` o `ERROR`.  |

#### Ejemplo de respuesta

```json
{
  "consumerId": "consumer-web",
  "transactionId": "a29cbe15-2b68-495f-b7eb-be985b21c486",
  "timestamp": "2026-06-26T12:00:05.000Z",
  "message": "Service executed ok",
  "livenessResult": "LIVE"
}
```

#### Otras respuestas

| Código | Descripción                                                                                                                                                                                                                                                                                                                                         |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | Campo obligatorio ausente o valor no admitido; falta la cabecera `operation-id` habiendo referencias; o una clave no tiene la forma `{operationId}/{CONTEXTO}` o declara un contexto que el hueco no admite.                                                                                                                                        |
| `403`  | El consumer no está aprovisionado con el servicio `LIVENESS`.                                                                                                                                                                                                                                                                                       |
| `404`  | La operación declarada en `operation-id` no existe o pertenece a otro consumer.                                                                                                                                                                                                                                                                     |
| `409`  | Un asset referenciado contiene un contenido ya procesado en otra operación.                                                                                                                                                                                                                                                                         |
| `410`  | La operación declarada en `operation-id` ha caducado.                                                                                                                                                                                                                                                                                               |
| `422`  | Una clave nombra una operación distinta de la declarada en `operation-id`, o el contexto no tiene ningún asset almacenado.                                                                                                                                                                                                                          |
| `429`  | El consumer ha superado su límite de tasa de peticiones, o un asset referenciado ha agotado su presupuesto de invocaciones en este endpoint. En el primer caso la respuesta incluye `Retry-After`, `X-RateLimit-Limit` y `X-RateLimit-Burst`, y esperar resuelve; en el segundo no. El servicio subyacente no se invoca y la llamada no se factura. |

El cuerpo de una respuesta de error tiene la forma descrita en [Middleware API v2](/api-rest/midapi-v2.md#respuestas-de-error).
