REST · ¿Qué cambió y cuándo?
Cambios e historial
Cada cambio de razón social, giro, domicilio o casilla, con cómo era antes y cómo quedó, por RUT o por publicación. Los ejemplos de abajo son la petición y la respuesta real de cada operación, no una aproximación.
Lo que descuenta cada operación es lo mismo por REST, SOAP, GraphQL y MCP —pagas por el dato, no por el protocolo—; la tabla completa está en Empezar.
GET /v1/rut/{rut}/historial
Historial de un RUT
Qué cambió de ESTE RUT en el padrón y cuándo, del cambio más reciente al más antiguo: razón social, clasificación, giros, domicilios y casilla, cada uno con cómo era antes y cómo quedó. Personas con giro incluidas —por su RUT y solo así—, y también el RUT que ya salió del padrón: tiene historial y no ficha. La lista vacía también es respuesta: no cambió.
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
rut | string | El RUT que consultaste, normalizado: con guion y sin puntos. |
rut_formateado | string | El mismo RUT listo para mostrar: con puntos y guion. |
es_empresa | boolean | true si el RUT es de una empresa y false si es de una persona. Sirve para decidir qué pedirle a quien se está registrando. |
cambios | array | Los cambios del RUT, del más reciente al más antiguo. Vacía si no cambió desde historial_desde: eso también es respuesta. |
historial_desde | string | Desde cuándo hay historial que contar. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. null mientras ninguna publicación del SII se haya comparado con otra. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Padrón del SII, comparado publicación a publicación por Datario»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
publicado | string | De cuándo son las nóminas vigentes del padrón. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. La publicación en que apareció cada cambio va dentro del cambio. |
consultado_en | string | Cuándo se respondió esta llamada. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. |
Dentro de cambios
| Campo | Tipo | Qué es |
|---|---|---|
publicado | string | La publicación del SII en que apareció el cambio. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. Es la fecha con la que se pagina y se filtra. |
aspecto | string | Qué parte de la ficha cambió: contribuyente, domicilios, actividades, casilla. contribuyente es la razón social, la clasificación de sociedad, el inicio de actividades y el término de giro; los otros tres, sus listas y la casilla. |
tipo | string | alta, baja, cambio: apareció, desapareció o cambió. Un RUT que sale del padrón es una baja de contribuyente. |
campos | array | En un cambio de contribuyente, qué campos difieren entre antes y despues (razon_social, cod_subtipo, inicio_actividades, termino_giro). null en los demás: un alta o una baja no tienen qué comparar, y los otros aspectos son listas. |
antes | object|array | Cómo era, con la forma que ese aspecto tiene en la ficha: un objeto para contribuyente y casilla, la lista completa para domicilios y actividades. null en un alta. |
despues | object|array | Cómo quedó, con la misma forma. null en una baja. |
Cuándo responde cada cosa
- 200 El RUT está en el padrón o tuvo cambios. Descuenta una consulta, también con la lista vacía: «no cambió» es información. Descuenta una consulta.
- 401 No mandaste el header, o no empieza con dtr_. No descuenta.
- 401 La key viajó bien pero ya no sirve: la revocaste o la rotaste. No descuenta.
- 422 El dígito verificador no corresponde al cuerpo. No se cobra: no hubo consulta. No descuenta.
- 422 No tiene forma de RUT: cuerpo fuera de 7-8 dígitos, o los ocho caracteres sin guion, que son ambiguos. No descuenta.
- 503 El padrón todavía no tiene datos que responder. Es excepcional: reintenta más tarde y, si sigue, mira el estado del servicio. No descuenta.
-
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. No descuenta. - 402 Se agotaron las consultas del plan y no hay saldo de recargas. Las consultas se detienen hasta que renueven. No descuenta.
- 402 Se agotaron las consultas del plan, hay saldo de recargas, y el interruptor «usar mi saldo automáticamente» está apagado. Nada se cobra. No descuenta.
- 404 RUT con dígito verificador correcto que no está en el padrón y nunca tuvo cambios. Descuenta una consulta: buscarlo fue el trabajo. Descuenta una consulta.
curl -s -i -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/rut/61.704.000-K/historial
import requests
r = requests.get(
"https://api.datario.cl/v1/rut/61.704.000-K/historial",
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
if r.status_code != 200:
raise SystemExit(f"{cuerpo['error']}: {cuerpo['detail']}")
print(cuerpo["rut_formateado"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/rut/61.704.000-K/historial",
{ headers: { "Authorization": "Bearer dtr_TU_KEY" } },
);
const cuerpo = await r.json();
if (!r.ok) {
if (r.status === 429) {
const s = r.headers.get("Retry-After");
throw new Error(`Reintenta en ${s} s`);
}
throw new Error(`${cuerpo.error}: ${cuerpo.detail}`);
}
console.log(cuerpo.rut_formateado);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/rut/61.704.000-K/historial"
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer dtr_TU_KEY"],
]);
$cuerpo = json_decode(curl_exec($ch), true);
$estado = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($estado !== 200) {
throw new Exception(
$cuerpo["error"] . ": " . $cuerpo["detail"]
);
}
echo $cuerpo["rut_formateado"];
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var r = await http.GetAsync(
"https://api.datario.cl/v1/rut/61.704.000-K/historial");
var raiz = JsonDocument.Parse(
await r.Content.ReadAsStringAsync()).RootElement;
if (!r.IsSuccessStatusCode)
{
throw new Exception(
raiz.GetProperty("error").GetString() + ": " +
raiz.GetProperty("detail").GetString());
}
Console.WriteLine(
raiz.GetProperty("rut_formateado").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/rut/61.704.000-K/historial"))
.header("Authorization", "Bearer dtr_TU_KEY")
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
if (r.statusCode() != 200) {
// El cuerpo trae siempre {error, detail}.
throw new IOException(r.body());
}
System.out.println(r.body());
req, _ := http.NewRequest("GET",
"https://api.datario.cl/v1/rut/61.704.000-K/historial", nil)
req.Header.Set("Authorization", "Bearer dtr_TU_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
var e struct {
Error string `json:"error"`
Detail string `json:"detail"`
}
json.NewDecoder(res.Body).Decode(&e)
log.Fatalf("%s: %s", e.Error, e.Detail)
}
var cuerpo map[string]any
json.NewDecoder(res.Body).Decode(&cuerpo)
fmt.Println(cuerpo["rut_formateado"])
uri = URI("https://api.datario.cl/v1/rut/61.704.000-K/historial")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer dtr_TU_KEY"
res = Net::HTTP.start(
uri.host, uri.port, use_ssl: uri.scheme == "https"
) { |h| h.request(req) }
cuerpo = JSON.parse(res.body)
unless res.code == "200"
raise "#{cuerpo['error']}: #{cuerpo['detail']}"
end
puts cuerpo["rut_formateado"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/rut/61.704.000-K/historial" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
$url ; cURL options:
"-H \"Authorization: Bearer dtr_TU_KEY\"" ]
Set Variable [ $e ; Value: JSONGetElement ( $r ; "error" ) ]
If [ not IsEmpty ( $e ) ]
Show Custom Dialog [ $e & ": " &
JSONGetElement ( $r ; "detail" ) ]
Exit Script [ Text Result: $e ]
End If
Show Custom Dialog [
JSONGetElement ( $r ; "rut_formateado" ) ]
Respuestas
{
"rut": "61704000-K",
"rut_formateado": "61.704.000-K",
"es_empresa": true,
"cambios": [],
"historial_desde": null,
"fuente": "Padrón del SII, comparado publicación a publicación por Datario",
"publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
{
"error": "api_key_invalida",
"detail": "Falta la API key: envíala en el header Authorization: Bearer dtr_…."
}
{
"error": "api_key_invalida",
"detail": "La API key no existe o fue revocada."
}
{
"error": "rut_invalido",
"detail": "El RUT no es válido: revisa el dígito verificador."
}
{
"error": "rut_invalido",
"detail": "Eso no parece un RUT: son 7 u 8 dígitos más el verificador."
}
{
"error": "padron_no_disponible",
"detail": "El padrón aún no está cargado; intenta más tarde. Estado del servicio: https://status.datario.cl"
}
{
"error": "limite_de_velocidad",
"detail": "Superaste las consultas por minuto de tu plan: X-RateLimit-Limit dice cuántas y Retry-After cuánto esperar."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset Retry-After
{
"error": "sin_saldo",
"detail": "Se acabaron las consultas de tu plan y no te queda saldo. Renuevan el día que tu plan cumple el mes (X-Plan-Reset); para seguir ahora, recarga saldo (no vence) en https://datario.cl/panel/packs, o contrata el plan de ese mismo volumen en https://datario.cl/panel/planes, que sale más barato por consulta"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "saldo_protegido",
"detail": "Las consultas del plan no alcanzan y tu saldo está protegido (pediste no gastarlo automáticamente): actívalo en https://datario.cl/panel/configuracion/avisos o renueva tu plan"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "rut_no_registrado",
"detail": "El SII no registra datos para 12345678-5."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
GET /v1/cambios
Cambios del padrón
Todos los cambios de las personas jurídicas entre dos días, en el orden en que el SII los publicó: para actualizar tu base con lo que cambió, no con el padrón entero. Como se paga por cambio devuelto, desde es obligatorio. Con filtros por tipo, aspecto, campo, comuna, región o giro; cada página se lee hasta donde tu plan y tu saldo alcanzan.
Parámetros
| Parámetro | Tipo | Qué es |
|---|---|---|
desde | string | Obligatorio. El primer día, inclusive, en hora de Chile. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. |
hasta | string | El último día, inclusive. Por defecto hoy. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. |
tipo | string | Solo un tipo: alta, baja, cambio. |
aspecto | string | Solo una parte de la ficha: contribuyente, domicilios, actividades, casilla. |
campo | string | Solo los cambios de contribuyente en que ese campo difiere: razon_social, cod_subtipo, inicio_actividades, termino_giro. |
comuna | string | Solo RUT con casa matriz o sucursal en esa comuna hoy, tal como la escribe el SII. |
region | string | Solo RUT con domicilio en esa región hoy. |
actividad | integer | Solo RUT con ese giro hoy (el codigo de las actividades). |
limite | integer | Cambios por página: 1 a 100. Por defecto 100. Si tu plan y tu saldo no alcanzan para tantos, la página trae lo que alcanza y hay_mas dice que sigue. |
pagina | string | El pagina_siguiente de la respuesta anterior. Lleva los filtros adentro: o no los repites, o los repites todos iguales. |
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
cambios | array | La página de cambios, del más antiguo al más reciente. Vacía si nada cambió en esos días: eso también es respuesta, y descuenta una. |
hay_mas | boolean | true si quedan más cambios por pedir. |
pagina_siguiente | string | Pásalo tal cual en pagina para pedir la siguiente. null cuando no hay más. Lleva los filtros adentro: no los repitas distintos. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Padrón del SII, comparado publicación a publicación por Datario»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
publicado | string | De cuándo son las nóminas vigentes del padrón. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. La publicación en que apareció cada cambio va dentro del cambio. |
consultado_en | string | Cuándo se respondió esta llamada. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. |
Dentro de cambios
| Campo | Tipo | Qué es |
|---|---|---|
rut | string | El RUT que cambió, normalizado. Pide su ficha o su historial con él. |
rut_formateado | string | El mismo RUT listo para mostrar. |
razon_social | string | Su nombre legal hoy según el padrón; en una baja, el que tenía. |
publicado | string | La publicación del SII en que apareció el cambio. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. Es la fecha con la que se pagina y se filtra. |
aspecto | string | Qué parte de la ficha cambió: contribuyente, domicilios, actividades, casilla. contribuyente es la razón social, la clasificación de sociedad, el inicio de actividades y el término de giro; los otros tres, sus listas y la casilla. |
tipo | string | alta, baja, cambio: apareció, desapareció o cambió. Un RUT que sale del padrón es una baja de contribuyente. |
campos | array | En un cambio de contribuyente, qué campos difieren entre antes y despues (razon_social, cod_subtipo, inicio_actividades, termino_giro). null en los demás: un alta o una baja no tienen qué comparar, y los otros aspectos son listas. |
antes | object|array | Cómo era, con la forma que ese aspecto tiene en la ficha: un objeto para contribuyente y casilla, la lista completa para domicilios y actividades. null en un alta. |
despues | object|array | Cómo quedó, con la misma forma. null en una baja. |
Cuándo responde cada cosa
- 200 Hay página que devolver — también la vacía, que descuenta una. Con cambios, descuenta uno por cada uno. Descuenta una consulta.
- 401 No mandaste el header, o no empieza con dtr_. No descuenta.
- 401 La key viajó bien pero ya no sirve: la revocaste o la rotaste. No descuenta.
-
422
Faltó
desde. Cada cambio devuelto descuenta una consulta, y sin un día de partida una página podría traer meses. No se cobra. No descuenta. -
422
hastano es un día ISO. No se cobra. No descuenta. - 422 Los dos días están al revés. No se cobra. No descuenta.
-
422
tipono es una de las tres palabras de la tabla. No se cobra. No descuenta. -
422
aspectono es una de las cuatro partes de la ficha. No se cobra. No descuenta. -
422
campono es un campo decontribuyente. No se cobra. No descuenta. -
422
campovino con otro aspecto: solocontribuyentetiene campos que comparar. No se cobra. No descuenta. -
422
El giro se filtra por su código (el mismo
codigode las actividades), no por texto. No descuenta. -
422
limitequedó fuera del rango publicado. No se cobra: no hubo lectura. No descuenta. - 422 El token de página llegó adulterado o incompleto. Se pide de nuevo desde la primera. No descuenta.
-
422
Con
pagina, los filtros van DENTRO del token. Idénticos se aceptan; distintos no. No descuenta. - 503 El padrón todavía no tiene datos que responder. Es excepcional: reintenta más tarde y, si sigue, mira el estado del servicio. No descuenta.
-
503
La enumeración tardó más que su techo de tiempo: pasa con muchos días y un filtro por comuna o giro sobre una publicación grande. No se cobra. Acota
desdeyhasta, o pide menos por página. No descuenta. -
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. No descuenta. - 402 Se agotaron las consultas del plan y no hay saldo de recargas. Las consultas se detienen hasta que renueven. No descuenta.
- 402 Se agotaron las consultas del plan, hay saldo de recargas, y el interruptor «usar mi saldo automáticamente» está apagado. Nada se cobra. No descuenta.
curl -s -i -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/cambios?desde=2026-08-01
import requests
r = requests.get(
"https://api.datario.cl/v1/cambios?desde=2026-08-01",
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
if r.status_code != 200:
raise SystemExit(f"{cuerpo['error']}: {cuerpo['detail']}")
print(cuerpo["hay_mas"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/cambios?desde=2026-08-01",
{ headers: { "Authorization": "Bearer dtr_TU_KEY" } },
);
const cuerpo = await r.json();
if (!r.ok) {
if (r.status === 429) {
const s = r.headers.get("Retry-After");
throw new Error(`Reintenta en ${s} s`);
}
throw new Error(`${cuerpo.error}: ${cuerpo.detail}`);
}
console.log(cuerpo.hay_mas);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/cambios?desde=2026-08-01"
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer dtr_TU_KEY"],
]);
$cuerpo = json_decode(curl_exec($ch), true);
$estado = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($estado !== 200) {
throw new Exception(
$cuerpo["error"] . ": " . $cuerpo["detail"]
);
}
echo $cuerpo["hay_mas"];
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var r = await http.GetAsync(
"https://api.datario.cl/v1/cambios?desde=2026-08-01");
var raiz = JsonDocument.Parse(
await r.Content.ReadAsStringAsync()).RootElement;
if (!r.IsSuccessStatusCode)
{
throw new Exception(
raiz.GetProperty("error").GetString() + ": " +
raiz.GetProperty("detail").GetString());
}
Console.WriteLine(
raiz.GetProperty("hay_mas").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/cambios?desde=2026-08-01"))
.header("Authorization", "Bearer dtr_TU_KEY")
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
if (r.statusCode() != 200) {
// El cuerpo trae siempre {error, detail}.
throw new IOException(r.body());
}
System.out.println(r.body());
req, _ := http.NewRequest("GET",
"https://api.datario.cl/v1/cambios?desde=2026-08-01", nil)
req.Header.Set("Authorization", "Bearer dtr_TU_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
var e struct {
Error string `json:"error"`
Detail string `json:"detail"`
}
json.NewDecoder(res.Body).Decode(&e)
log.Fatalf("%s: %s", e.Error, e.Detail)
}
var cuerpo map[string]any
json.NewDecoder(res.Body).Decode(&cuerpo)
fmt.Println(cuerpo["hay_mas"])
uri = URI("https://api.datario.cl/v1/cambios?desde=2026-08-01")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer dtr_TU_KEY"
res = Net::HTTP.start(
uri.host, uri.port, use_ssl: uri.scheme == "https"
) { |h| h.request(req) }
cuerpo = JSON.parse(res.body)
unless res.code == "200"
raise "#{cuerpo['error']}: #{cuerpo['detail']}"
end
puts cuerpo["hay_mas"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/cambios?desde=2026-08-01" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
$url ; cURL options:
"-H \"Authorization: Bearer dtr_TU_KEY\"" ]
Set Variable [ $e ; Value: JSONGetElement ( $r ; "error" ) ]
If [ not IsEmpty ( $e ) ]
Show Custom Dialog [ $e & ": " &
JSONGetElement ( $r ; "detail" ) ]
Exit Script [ Text Result: $e ]
End If
Show Custom Dialog [
JSONGetElement ( $r ; "hay_mas" ) ]
Respuestas
{
"cambios": [],
"hay_mas": false,
"pagina_siguiente": null,
"fuente": "Padrón del SII, comparado publicación a publicación por Datario",
"publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
{
"error": "api_key_invalida",
"detail": "Falta la API key: envíala en el header Authorization: Bearer dtr_…."
}
{
"error": "api_key_invalida",
"detail": "La API key no existe o fue revocada."
}
{
"error": "parametros_invalidos",
"detail": "Indica desde: el día desde el que quieres los cambios (YYYY-MM-DD)."
}
{
"error": "parametros_invalidos",
"detail": "hasta debe ser un día en formato YYYY-MM-DD."
}
{
"error": "parametros_invalidos",
"detail": "hasta no puede ser anterior a desde."
}
{
"error": "parametros_invalidos",
"detail": "tipo debe ser alta, baja o cambio."
}
{
"error": "parametros_invalidos",
"detail": "aspecto debe ser contribuyente, domicilios, actividades o casilla."
}
{
"error": "parametros_invalidos",
"detail": "campo debe ser razon_social, cod_subtipo, inicio_actividades o termino_giro."
}
{
"error": "parametros_invalidos",
"detail": "campo solo aplica al aspecto contribuyente."
}
{
"error": "parametros_invalidos",
"detail": "actividad debe ser el código numérico del giro."
}
{
"error": "parametros_invalidos",
"detail": "limite debe ser un entero entre 1 y 100."
}
{
"error": "parametros_invalidos",
"detail": "pagina no es válida: pide la primera página sin ese parámetro."
}
{
"error": "parametros_invalidos",
"detail": "pagina ya lleva los filtros: no los repitas distintos."
}
{
"error": "padron_no_disponible",
"detail": "El padrón aún no está cargado; intenta más tarde. Estado del servicio: https://status.datario.cl"
}
{
"error": "lectura_expirada",
"detail": "La lectura tardó demasiado: acota los días o agrega un filtro de aspecto, tipo, comuna o región. Si sigue fallando, mira https://status.datario.cl"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "limite_de_velocidad",
"detail": "Superaste las consultas por minuto de tu plan: X-RateLimit-Limit dice cuántas y Retry-After cuánto esperar."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset Retry-After
{
"error": "sin_saldo",
"detail": "Se acabaron las consultas de tu plan y no te queda saldo. Renuevan el día que tu plan cumple el mes (X-Plan-Reset); para seguir ahora, recarga saldo (no vence) en https://datario.cl/panel/packs, o contrata el plan de ese mismo volumen en https://datario.cl/panel/planes, que sale más barato por consulta"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "saldo_protegido",
"detail": "Las consultas del plan no alcanzan y tu saldo está protegido (pediste no gastarlo automáticamente): actívalo en https://datario.cl/panel/configuracion/avisos o renueva tu plan"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
Probar en la consola Este producto por SOAP Este producto por GraphQL Este producto por MCP Qué es Cambios e historial