curl --request GET \
--url https://api.tupana.ai/v2/honorary/authorized-users/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.tupana.ai/v2/honorary/authorized-users/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.tupana.ai/v2/honorary/authorized-users/', 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.tupana.ai/v2/honorary/authorized-users/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <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.tupana.ai/v2/honorary/authorized-users/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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.tupana.ai/v2/honorary/authorized-users/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tupana.ai/v2/honorary/authorized-users/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"authorized_users": [
{
"rut": "12.345.678-9",
"nombre": "MARIA JOSEFA GONZALEZ LOPEZ",
"enrolled": false
}
],
"last_sync_status": "done",
"last_sync_error": "",
"last_synced_at": "2026-07-22T15:40:12.123456+00:00"
}{
"error": "Se requiere el parámetro master_entity_id"
}{
"error": "Usuario sin permisos para acceder a la entidad"
}{
"error": "No se encontró una credencial válida para la entidad"
}{
"error": "Error al obtener usuarios autorizadores"
}Listar usuarios autorizados
Obtiene la lista de usuarios autorizados para emitir boletas de honorarios, leída desde un caché local. Nunca consulta el SII en el momento del request — para refrescarla contra el SII, usa POST /honorary/master-entities//authorized-users/sync/. El master_entity_id se proporciona como query parameter.
curl --request GET \
--url https://api.tupana.ai/v2/honorary/authorized-users/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.tupana.ai/v2/honorary/authorized-users/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.tupana.ai/v2/honorary/authorized-users/', 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.tupana.ai/v2/honorary/authorized-users/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <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.tupana.ai/v2/honorary/authorized-users/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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.tupana.ai/v2/honorary/authorized-users/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tupana.ai/v2/honorary/authorized-users/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"authorized_users": [
{
"rut": "12.345.678-9",
"nombre": "MARIA JOSEFA GONZALEZ LOPEZ",
"enrolled": false
}
],
"last_sync_status": "done",
"last_sync_error": "",
"last_synced_at": "2026-07-22T15:40:12.123456+00:00"
}{
"error": "Se requiere el parámetro master_entity_id"
}{
"error": "Usuario sin permisos para acceder a la entidad"
}{
"error": "No se encontró una credencial válida para la entidad"
}{
"error": "Error al obtener usuarios autorizadores"
}Authorizations
API Key para autenticación. Debe proporcionarse en el header Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo 'Api-Key ' seguido de tu API key)
Query Parameters
ID de la entidad para la cual se consultan los autorizados. Debe proporcionarse como query parameter. ID de la entidad maestra
Response
Lista de usuarios autorizados obtenida exitosamente
Show child attributes
Show child attributes
Estado del último intento de sincronización con el SII. null si esta entidad nunca fue sincronizada.
queued, syncing, done, error, null "done"
Mensaje de error del último intento, solo presente si last_sync_status es 'error'
""
Fecha y hora (ISO 8601) en que terminó la última sincronización exitosa o fallida. null si nunca terminó ninguna (incluye el caso de una sincronización todavía en curso, cuando aún no hay ninguna completada).
"2026-07-22T15:40:12.123456+00:00"
