curl --request GET \
--url https://api.tupana.ai/v2/sync-requests/{id}/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.tupana.ai/v2/sync-requests/{id}/"
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/sync-requests/{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.tupana.ai/v2/sync-requests/{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 => [
"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/sync-requests/{id}/"
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/sync-requests/{id}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tupana.ai/v2/sync-requests/{id}/")
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{
"id": "syre_5b6c7d8e9f0a1",
"master_entity_id": "ment_4829301923847",
"requested_types": [
"ISSUED_DOCS",
"RECEIVED_DOCS"
],
"status": "completed",
"webhook_url": "https://miapp.cl/webhooks/tupana-sync",
"results": {
"ISSUED_DOCS": {
"success": true,
"new_documents": 3
},
"RECEIVED_DOCS": {
"success": true,
"new_documents": 0
}
},
"completed_at": "2026-07-20T14:34:12Z",
"created_at": "2026-07-20T14:30:00Z"
}{
"detail": "No tienes acceso a esta entidad."
}{
"detail": "No encontrado."
}Detalle de una solicitud de sincronización
Devuelve el estado actual de una solicitud de sincronización. Úsalo para hacer polling después del POST /sync-requests: cuando status pase a completed (o failed), el campo results trae el resultado por cada tipo de scrape ejecutado.
curl --request GET \
--url https://api.tupana.ai/v2/sync-requests/{id}/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.tupana.ai/v2/sync-requests/{id}/"
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/sync-requests/{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.tupana.ai/v2/sync-requests/{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 => [
"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/sync-requests/{id}/"
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/sync-requests/{id}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tupana.ai/v2/sync-requests/{id}/")
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{
"id": "syre_5b6c7d8e9f0a1",
"master_entity_id": "ment_4829301923847",
"requested_types": [
"ISSUED_DOCS",
"RECEIVED_DOCS"
],
"status": "completed",
"webhook_url": "https://miapp.cl/webhooks/tupana-sync",
"results": {
"ISSUED_DOCS": {
"success": true,
"new_documents": 3
},
"RECEIVED_DOCS": {
"success": true,
"new_documents": 0
}
},
"completed_at": "2026-07-20T14:34:12Z",
"created_at": "2026-07-20T14:30:00Z"
}{
"detail": "No tienes acceso a esta entidad."
}{
"detail": "No encontrado."
}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)
Path Parameters
ID de la solicitud de sincronización (campo id de la respuesta del POST).
1042
Response
Detalle de la solicitud, con resultados por tipo si ya terminó
Solicitud de sincronización a demanda (recurso asíncrono)
ID de la solicitud public ID (ment_...).
"ment_4829301923847"
ID entero de la entidad sincronizada public ID (ment_...).
"ment_4829301923847"
Tipos de scrape pedidos. Lista vacía = todos los tipos habilitados para la entidad.
ISSUED_DOCS, RECEIVED_DOCS, RECEIVED_HONORARY_BILLS, THIRD_PARTY_HONORARY, EMITTED_HONORARY_BILLS, PURCHASE_BOOK, SALE_BOOK, BOOK_SUMMARY ["ISSUED_DOCS", "RECEIVED_DOCS"]
Estado de la solicitud: pending (creada, en cola), processing (scrapes corriendo), completed (todos los tipos terminaron OK), failed (al menos un tipo falló).
pending, processing, completed, failed "pending"
URL registrada para notificar al completar. String vacío si no se registró webhook.
"https://miapp.cl/webhooks/tupana-sync"
Resultado por tipo de scrape al terminar. Las claves son los scrape_type ejecutados y cada valor es un objeto con success (boolean) más contadores como new_documents, o error si falló. Objeto vacío mientras la solicitud está pending/processing.
Show child attributes
Show child attributes
{
"ISSUED_DOCS": { "success": true, "new_documents": 3 },
"RECEIVED_DOCS": { "success": true, "new_documents": 0 }
}
Fecha/hora en que terminó de procesarse. null mientras está pending/processing.
"2026-07-20T14:34:12Z"
Fecha/hora de creación de la solicitud
"2026-07-20T14:30:00Z"
