> 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/consultar-estado.md).

# Consultar estado (polling)

Consulta el estado de una transacción DAF hasta obtener un estado terminal. Mientras la transacción no ha finalizado, la respuesta contiene únicamente el identificador y el estado. Al alcanzar un estado terminal con diagnóstico, incluye además la [respuesta de resultado](/api-rest/midapi-v2/daf/respuesta-de-resultado.md) completa.

### Endpoint

```
GET /v2/daf/{transactionId}
```

### 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.                                                           |

### Parámetros de ruta

| Parámetro       | Tipo   | Requerido | Descripción                                                        |
| --------------- | ------ | --------- | ------------------------------------------------------------------ |
| `transactionId` | string | **Sí**    | Identificador de transacción devuelto por `POST /v2/daf/validate`. |

### Respuestas

#### `200` Éxito (transacción en curso)

```json
{
  "transactionId": "1c7d...e9",
  "status": "IN_PROGRESS"
}
```

#### `200` Éxito (transacción terminal)

Cuando la transacción alcanza un estado terminal con diagnóstico (`COMPLETED`), la respuesta incluye además el diagnóstico completo. Ver [Respuesta de resultado](/api-rest/midapi-v2/daf/respuesta-de-resultado.md).

### Estados de la transacción

| Estado        | Significado                                                              | ¿Terminal? |
| ------------- | ------------------------------------------------------------------------ | ---------- |
| `PROCESSED`   | La transacción fue creada y aceptada para procesamiento.                 | No         |
| `ERROR`       | No se pudo crear/iniciar la transacción (fallo en la solicitud inicial). | Sí         |
| `IN_PROGRESS` | La validación está en curso.                                             | No         |
| `COMPLETED`   | Hay un diagnóstico disponible (`APPROVED` o `DECLINED`).                 | Sí         |
| `FAILED`      | Fallo irrecuperable durante el procesamiento. Incluye `failureReason`.   | Sí         |

{% hint style="info" %}
El estado terminal `COMPLETED` es único para cualquier resultado con diagnóstico: el consumer no puede saber ni necesita saber qué validaciones concretas se ejecutaron internamente. Ante `ERROR` o `FAILED`, no habrá `diagnostic` ni `ocr` en la respuesta. El estado `FAILED` sí incluye `failureReason` y `timestamp`.
{% endhint %}

### failureReason

Cuando `status = FAILED`, el campo `failureReason` describe la causa del fallo con un mensaje **genérico y estable**. El detalle técnico interno no se expone; estos son los valores posibles:

| failureReason                             | Significado / acción recomendada                                                                                                                                                                                                    |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Validation could not be completed`       | Fallo transitorio del procesamiento (p. ej. un servicio de análisis no respondió a tiempo o devolvió un error). Es seguro **reintentar** iniciando una nueva transacción con los mismos assets; si persiste, contactar con soporte. |
| `Internal processing error`               | Error inesperado durante el procesamiento. Reintentar más tarde; si persiste, contactar con soporte.                                                                                                                                |
| `Asset not found in storage: <fileKey>`   | No se pudo resolver uno de los assets referenciados. Verificar que las `fileKeys` existen y se subieron correctamente antes de reintentar.                                                                                          |
| `Invalid <front\|back\|face> asset token` | El asset indicado no es un token de captura válido. Volver a capturar/subir ese asset y reiniciar el proceso.                                                                                                                       |

{% hint style="info" %}
`failureReason` es deliberadamente **genérico**: distintas causas internas (incluidos los timeouts del análisis) se agregan en `Validation could not be completed`. El detalle concreto queda en los registros internos del servicio; si necesitas diagnosticar un caso, compárte­lo con soporte junto al `transactionId`.
{% endhint %}
