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

# Consultar la NDF

> Revisa si un cliente o sus deudores están en la nómina de difícil fiscalización (NDF) del SII.

La consulta de la NDF es asíncrona: primero pides la consulta y recibes un `requestId`, y después lees el resultado con ese id hasta que esté listo.

## 1. Pedir la consulta

Referencia completa: [Solicitar consultas de Datahub](https://docs.pruff.com/api/datahub/solicitar-consultas.md).

```bash theme={null}
curl -X POST https://api.pruff.com/api/clients/datahub/request \
  -H "x-api-key: <tu-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "client": "11111111-1",
    "payers": ["22222222-2"],
    "clientRequests": ["ndf"],
    "payersRequests": ["ndf"]
  }'
```

| Campo | Descripción |
| - | - |
| `client` | RUT del cliente, sin puntos y con guion. |
| `payers` | RUTs de los deudores, sin puntos y con guion. Máximo 100. |
| `clientRequests` | Consultas para el cliente. Para la NDF, `["ndf"]`. |
| `payersRequests` | Consultas para los deudores. Para la NDF, `["ndf"]`. |

Envía al menos `client` o `payers`, cada uno con su lista de consultas.

Respuesta `200`:

```json theme={null}
{ "requestId": "<id>" }
```

| Error | Respuesta |
| - | - |
| RUT inválido, o sin `client` ni `payers` | `400 { "message": "Invalid input" }` |
| Más de 100 `payers` | `400 { "message": "Too many payers" }` |

Este endpoint comparte su cuota con los endpoints de Mercado Público: 300 solicitudes por hora por empresa.

## 2. Leer el resultado

Referencia completa: [Obtener resultado de consultas de Datahub](https://docs.pruff.com/api/datahub/obtener-resultado-de-consultas.md).

```bash theme={null}
curl https://api.pruff.com/api/clients/datahub/response/<requestId> \
  -H "x-api-key: <tu-api-key>"
```

Mientras falte alguna consulta, la respuesta es `200 { "message": "Request not ready" }`. Vuelve a consultar hasta que cambie. Si el `requestId` no existe, es de otra empresa o ya venció, la respuesta es `404 { "message": "Datahub API request not found" }`.

Si recibes `404 { "message": "No consults found" }` justo después de crear la solicitud, vuelve a consultar en unos segundos. Si persiste, la solicitud no creó ninguna consulta (por ejemplo, porque no enviaste las listas de consultas).

Cuando todas las consultas terminan, el resultado viene agrupado en `client` y `payers`, y dentro de cada grupo, por RUT:

```json theme={null}
{
  "client": {
    "11111111-1": {
      "ndf": {
        "clienteDificilFiscalizacion": {
          "name": "EMPRESA EJEMPLO SPA",
          "rut": "11111111-1",
          "date": "10/08/2026 12:00",
          "status": "Se encuentra en la NDF",
          "inNdf": true
        }
      }
    }
  },
  "payers": {
    "22222222-2": {
      "ndf": {
        "clienteDificilFiscalizacion": {
          "name": "DEUDOR EJEMPLO LTDA",
          "rut": "22222222-2",
          "date": "10/08/2026 12:00",
          "status": "No se encuentra en la NDF",
          "inNdf": false
        }
      }
    }
  }
}
```

* `inNdf` es `true` si el RUT está en la NDF y `false` si no está.
* `date` es la fecha que informa el SII.

Puedes leer el resultado durante 14 días desde que creaste la solicitud. Pruff elimina las solicitudes antiguas una vez al día (a las 00:00 UTC), así que puede seguir disponible hasta esa limpieza posterior al día 14. Pasado ese plazo, la respuesta es `404 { "message": "Datahub API request not found" }`. Si un RUT llega sin consultas (`{}`), Pruff no pudo guardar o leer su resultado en ese momento: vuelve a pedir la consulta.

## Cuando no hay resultado de la NDF

`ndf` puede venir como texto en vez de objeto:

| Valor | Significado |
| - | - |
| `"error"` | Pruff no pudo obtener o guardar el resultado de la NDF. |
| `"timeout"` | La consulta no terminó en 2 minutos. |

Ninguno de los dos significa que el RUT no esté en la NDF. Vuelve a pedir la consulta.

> [!NOTE]
>
> Un resultado correcto se reutiliza durante al menos 24 horas para ese RUT. Si pides la consulta de nuevo dentro de ese plazo, recibes el mismo resultado, con su `date` original. Revisa `date` para saber cuándo se obtuvo.


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