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

# Leer la respuesta

> Qué significa cada campo de la respuesta de /inference, cómo interpretar el diagnóstico y por qué los valores de confianza no son comparables entre sí.

Todo lo que sigue es **diagnóstico**. La decisión ya la tomó con `status` y `spoofing`; esta página sirve para entender qué pasó, poblar sus logs y abrir tickets con contexto.

## Campos de la respuesta

| Campo | Tipo | Para qué sirve |
| - | - | - |
| `spoofing` | boolean | **El veredicto.** `false` con `200` es la única aprobación. |
| `id` | string | Identificador único de la transacción. Registrelo siempre. |
| `code` | number | Espejo del código HTTP. |
| `message` | string | Texto legible del resultado. Útil en el log, no para decidir. |
| `info` | objeto \| string \| null | Su referencia y, cuando existe, el diagnóstico. Ver abajo. |
| `date` / `time` | string | Momento del análisis del lado del servicio. |
| `values` | objeto | Puntajes internos del modelo (`FAKE`, `REAL`). Diagnóstico. |
| `confidence` | number | Confianza del componente que respondió. Ver la advertencia de escalas. |
| `imageQuality` | objeto | Mapa **opcional** de indicadores de calidad. Ver abajo. |
| `benchmark` | number | Milisegundos que tardó el análisis. |
| `errorCode` / `errorMessage` | number / string | Detalle interno. Diagnóstico. |

<Warning>
  No construya lógica de negocio sobre `errorCode`, `values`, `confidence` ni `info`. No forman parte del contrato y su forma cambia entre versiones del servicio.
</Warning>

## `info`: tres formas, un solo lector

`info` es polimórfico. Puede llegar como objeto, como string o como `null`, y `null` aparece en dos lugares distintos: el `info` de nivel superior y el `info.info` anidado.

<CodeGroup>
  ```json Objeto (hay diagnóstico) theme={null}
  {
    "info": {
      "info": "onboarding-12345",
      "mode": "active",
      "service": "as-face",
      "user": "userName",
      "deepfake-filter": { "provider": "A", "detected": false, "confidence": 99 }
    }
  }
  ```

  ```json String (eco de lo enviado) theme={null}
  {
    "info": "onboarding-12345"
  }
  ```

  ```json null (no envió info) theme={null}
  {
    "info": null
  }
  ```
</CodeGroup>

```js theme={null}
function referencia(body) {
  const i = body?.info;
  return i == null             ? null
       : typeof i === "string" ? i
       : i.info ?? null;
}
```

<Warning>
  **Que `info` llegue como objeto no significa que la persona fue bloqueada.** En nuestro banco de pruebas, las 47 aprobaciones tenían `info` como objeto, con `deepfake-filter` y `detected: false` —es decir, el filtro corrió y no encontró nada—. Lo único que distingue aprobar de no aprobar es `spoofing`.
</Warning>

## `imageQuality` es opcional, y sus claves también

`imageQuality` es un mapa de claves opcionales: puede faltar entero y, cuando está, puede traer unas claves y no otras. Sobre 116 respuestas de prueba, 102 traían `face`, 10 traían `brightSpots` y las 4 respuestas `422 No Face Detected` no traían `imageQuality` en absoluto —coherente: sin rostro no hay nada que medir—.

```json theme={null}
"imageQuality": {
  "blurry": false,
  "underExposure": false,
  "overExposure": false,
  "borderDetected": false,
  "face": {
    "is_centered_x": true,
    "is_centered_y": true,
    "is_close_to_borders": false,
    "is_too_small": false,
    "is_too_large": false
  }
}
```

Lea cada nivel a la defensiva. `body.imageQuality?.face?.is_too_small` es correcto; `body.imageQuality.face.is_too_small` lanza excepción el día que llega un `422`.

## Qué componente respondió

Cuando `info` es un objeto, sus claves revelan qué detectó el servicio. Esta tabla es para leer un caso, no para decidir sobre él:

| Situación | Señales en `info` | `imageQuality` típico |
| - | - | - |
| Análisis limpio | `deepfake-filter` con `detected: false`, más `mode` | `face` |
| Marca de agua o texto sobreimpreso | `text` y `matches[]` | `brightSpots` |
| Alteración cromática («personas azules») | `blue-filter` | `brightSpots` |
| Deepfake detectado — proveedor A | `deepfake-filter` con `detected: true` | `brightSpots` |
| Deepfake o contenido generado por IA — proveedor B | `deepfake-filter` con `detected: true` | `brightSpots` |
| Fotocopia | Texto en `info` o `null` | `face` |
| Captura de pantalla | Texto en `info` o `null` | `face` |
| Borde de otra pantalla en el cuadro | `borderDetected: true` | `face` |

<Note>
  Nunca escriba lógica sobre el *valor* de `info.service`. Los nombres internos de servicio cambian. Si necesita saber si hubo diagnóstico, pregunte por su presencia, no por su contenido.
</Note>

## Los valores de confianza no son comparables

Este es el error de interpretación más frecuente. En la respuesta conviven varios números llamados «confianza» con escalas distintas, y **dos de ellos apuntan en direcciones opuestas**:

| Valor | Escala | Qué mide | Al detectar |
| - | - | - | - |
| `deepfake-filter.confidence` (proveedor A) | 0–100 | Probabilidad de que sea **auténtico** | Cae a `0` |
| `deepfake-filter.confidence` (proveedor B) | 0–1 | Probabilidad de que sea **falso** | Sube a `0.99` |
| `blue-filter.confidence` | 0–100 | Intensidad de la alteración cromática | — |
| `matches[].score` | 0–100 | Similitud del texto encontrado con la lista de referencia | — |

<Warning>
  Nunca compare, promedie ni aplique un umbral común a estos valores. Un `confidence: 0` puede significar «certeza absoluta de fraude» (proveedor A) y un `confidence: 0.99` también (proveedor B). Cualquier regla del tipo «si la confianza es mayor a X» produce decisiones invertidas según qué componente haya respondido.
</Warning>

<Card title="Errores" icon="triangle-exclamation" href="/vucs/antispoofing-facial/errores">
  Códigos de error, cómo distinguir los suyos de los del servicio y cuáles se reintentan.
</Card>


## Related topics

- [Leer la respuesta](/vucs/id-analysis/respuestas.md)
- [Interpretación de respuestas](/vucs/face-analysis/respuestas.md)
- [Integrar Antispoofing Facial](/vucs/antispoofing-facial/integracion.md)
- [Códigos de error y respuestas de la Identity Link API](/identity-link/errores.md)
- [Crear y gestionar enlaces de verificación](/identity-link/enlaces.md)


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