curl --request GET \
--url https://api.pruff.com/api/clients/datahub/response/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pruff.com/api/clients/datahub/response/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.pruff.com/api/clients/datahub/response/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pruff.com/api/clients/datahub/response/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/datahub/response/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pruff.com/api/clients/datahub/response/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/datahub/response/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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
}
}
}
}
}Obtener resultado de consultas de Datahub
Lee el resultado de una solicitud creada con POST /datahub/request. Solo puedes leer solicitudes de tu empresa.
Mientras falte alguna consulta, responde 200 con {"message": "Request not ready"}. Vuelve a llamar hasta que la respuesta cambie. Cuando todas las consultas terminaron (o agotaron su tiempo), responde 200 con el resultado agrupado en client y payers, y dentro de cada grupo, por RUT. Con ndf, un grupo solo aparece si pediste esa consulta para él.
Dentro de cada RUT hay una clave por consulta pedida. Para ndf, el valor es el resultado de la NDF, o el texto error (Pruff no pudo obtener o guardar el resultado de la NDF) o timeout (la consulta no terminó en 2 minutos). Ninguno de los dos textos significa que el RUT no esté en la NDF: vuelve a pedir la consulta.
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 el resultado puede seguir disponible hasta esa limpieza posterior al día 14. Pasado ese plazo, la respuesta es 404 con Datahub API request not found. Un RUT puede venir sin consultas ({}) si Pruff no pudo guardar o leer su resultado en ese momento: en ese caso vuelve a pedir la consulta. Un resultado correcto de la NDF se reutiliza durante al menos 24 horas para ese RUT, así que si pides la misma consulta de nuevo dentro de ese plazo recibes el mismo resultado, con su date original. Revisa date para saber cuándo se obtuvo.
curl --request GET \
--url https://api.pruff.com/api/clients/datahub/response/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pruff.com/api/clients/datahub/response/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.pruff.com/api/clients/datahub/response/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pruff.com/api/clients/datahub/response/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/datahub/response/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pruff.com/api/clients/datahub/response/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/datahub/response/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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
}
}
}
}
}Respuesta
Resultado de la solicitud, o aviso de que todavía no está listo. Si el body trae message, la solicitud sigue en curso.
- Option 1
- Option 2
Resultado de la solicitud, agrupado por tipo de RUT y, dentro de cada grupo, por RUT.