> 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/daf/iniciar-validacion.md).

# Iniciar validación

Inicia una validación DAF enviando las `fileKeys` de los assets previamente [subidos al almacenamiento](/api-rest/midapi-v2/daf/subida-de-assets.md). DAF responde de inmediato con un `transactionId`. El resultado se obtiene mediante [polling](/api-rest/midapi-v2/daf/consultar-estado.md).

{% hint style="info" %}
El diagnóstico final (`APPROVED` / `DECLINED`), el motivo de rechazo (`rejectionReason`) y las señales de verificación individuales (`diagnostics[]`) se detallan en la [respuesta de resultado](/api-rest/midapi-v2/daf/respuesta-de-resultado.md), que incluye el **catálogo completo de códigos de razón** (general y granular).
{% endhint %}

### Endpoint

```
POST /v2/daf/validate
```

### 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 | **Sí**    | Identificador de la operación/sesión de negocio.                                                           |

### Cuerpo de la solicitud

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

Cada asset se referencia mediante una clave de rol fija (`document_front`, `document_back`, `face`), junto con su `type` de storage y su `fileKey`:

#### Parámetros

| Parámetro                | Tipo   | Requerido | Descripción                             |
| ------------------------ | ------ | --------- | --------------------------------------- |
| `document_front`         | object | **Sí**    | Asset del anverso del documento.        |
| `document_front.type`    | string | **Sí**    | Debe ser `TOKEN_FRONT_DOCUMENT`.        |
| `document_front.fileKey` | string | **Sí**    | `fileKey` devuelta por `POST /storage`. |
| `document_back`          | object | No        | Asset del reverso del documento.        |
| `document_back.type`     | string | No        | Debe ser `TOKEN_BACK_DOCUMENT`.         |
| `document_back.fileKey`  | string | No        | `fileKey` devuelta por `POST /storage`. |
| `face`                   | object | No        | Asset de la selfie del titular.         |
| `face.type`              | string | No        | Debe ser `TOKEN_FACE_IMAGE`.            |
| `face.fileKey`           | string | No        | `fileKey` devuelta por `POST /storage`. |

#### Ejemplo de solicitud

```json
{
  "document_front": {
    "type": "TOKEN_FRONT_DOCUMENT",
    "fileKey": "consumerX/op-123"
  },
  "document_back": {
    "type": "TOKEN_BACK_DOCUMENT",
    "fileKey": "consumerX/op-123"
  },
  "face": {
    "type": "TOKEN_FACE_IMAGE",
    "fileKey": "consumerX/op-123"
  }
}
```

### Validaciones de entrada

* `document_front` es obligatorio, con `type = TOKEN_FRONT_DOCUMENT` y una `fileKey` resoluble.
* Si se incluyen `document_back` o `face`, su `type` debe coincidir exactamente con el esperado.
* `consumer-id` y `operation-id` no pueden estar vacíos.
* Si la solicitud es inválida (bad request), se rechaza con un error `4xx` y no se crea la transacción. Otros fallos al iniciar el procesamiento crean la transacción con `status = ERROR`.

### Respuestas

#### `202` Accepted

#### Parámetros de respuesta

| Parámetro       | Tipo   | Descripción                                                            |
| --------------- | ------ | ---------------------------------------------------------------------- |
| `transactionId` | string | Identificador único de la transacción DAF.                             |
| `status`        | string | `PROCESSED` (aceptada correctamente) o `ERROR` (no se pudo iniciar).   |
| `timestamp`     | string | Marca de tiempo de creación de la transacción en formato **ISO 8601**. |

#### Ejemplo de respuesta

```json
{
  "transactionId": "1c7d...e9",
  "status": "PROCESSED",
  "timestamp": "2026-06-26T12:00:00.000Z"
}
```

#### `400` Bad Request

La solicitud no supera las validaciones de entrada (asset obligatorio ausente, `type` no coincidente, cabecera vacía). No se crea la transacción.
