Jobs de exportación de reportes
curl --request GET \
--url http://api.gu1.ai/report-export-jobs \
--header 'Authorization: <authorization>' \
--header 'X-Organization-ID: <x-organization-id>'import requests
url = "http://api.gu1.ai/report-export-jobs"
headers = {
"Authorization": "<authorization>",
"X-Organization-ID": "<x-organization-id>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: '<authorization>', 'X-Organization-ID': '<x-organization-id>'}
};
fetch('http://api.gu1.ai/report-export-jobs', 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 => "http://api.gu1.ai/report-export-jobs",
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: <authorization>",
"X-Organization-ID: <x-organization-id>"
],
]);
$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 := "http://api.gu1.ai/report-export-jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("X-Organization-ID", "<x-organization-id>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://api.gu1.ai/report-export-jobs")
.header("Authorization", "<authorization>")
.header("X-Organization-ID", "<x-organization-id>")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/report-export-jobs")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
request["X-Organization-ID"] = '<x-organization-id>'
response = http.request(request)
puts response.read_bodyJobs de exportación de reportes
Listá y descargá archivos async generados desde Reportería, presets o la acción Generar reporte.
GET
/
report-export-jobs
Jobs de exportación de reportes
curl --request GET \
--url http://api.gu1.ai/report-export-jobs \
--header 'Authorization: <authorization>' \
--header 'X-Organization-ID: <x-organization-id>'import requests
url = "http://api.gu1.ai/report-export-jobs"
headers = {
"Authorization": "<authorization>",
"X-Organization-ID": "<x-organization-id>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: '<authorization>', 'X-Organization-ID': '<x-organization-id>'}
};
fetch('http://api.gu1.ai/report-export-jobs', 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 => "http://api.gu1.ai/report-export-jobs",
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: <authorization>",
"X-Organization-ID: <x-organization-id>"
],
]);
$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 := "http://api.gu1.ai/report-export-jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("X-Organization-ID", "<x-organization-id>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://api.gu1.ai/report-export-jobs")
.header("Authorization", "<authorization>")
.header("X-Organization-ID", "<x-organization-id>")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/report-export-jobs")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
request["X-Organization-ID"] = '<x-organization-id>'
response = http.request(request)
puts response.read_bodyOverview
Cada Generar desde Reportería, un preset o la acción de automation Generar reporte (send_report) encola un job de exportación y guarda el archivo en object storage. Usá estos endpoints para listar Descargables y volver a bajar el archivo con sesión autenticada (no es un link público permanente).
| Method | Path | Use |
|---|---|---|
GET | /report-export-jobs | Listar jobs de reportes (filtro presetId, templateCode, status) |
GET | /report-export-jobs/{kind}/{jobId}/download | Descarga autenticada |
kind es uno de: entities, transactions, investigations, alerts, documents (ficha de entidad en PDF y reportes de métricas).
La retención del archivo se informa por job en fileExpiresAt. Un valor null
significa que el archivo no caduca. Las exportaciones nuevas de entidades y
transacciones usan null; los demás tipos mantienen su período de retención
configurado. Este campo es independiente de linkExpiresAt, que solo marca cuándo
vence el enlace firmado enviado por correo.
Authentication and tenant
string
required
Bearer YOUR_API_KEY — ver Authentication.string
required
UUID de organización production o sandbox — ver Environments.
Permissions
| Endpoint | Granular permission |
|---|---|
GET list | reports:read |
GET download | reports:export |
List jobs
GET http://api.gu1.ai/report-export-jobs
string
UUID opcional — solo jobs de ese preset de reporte.
string
Código de plantilla opcional (por ejemplo
alerts_by_rules).string
Estado opcional (
queued, running, completed, completed_email_failed, failed).integer
Tamaño de página (1–100, default 50).
integer
Offset de paginación (default 0).
Response
{
"success": true,
"jobs": [
{
"id": "…",
"kind": "alerts",
"status": "completed",
"outputFilename": "alerts-by-rules-2026-08-06.xlsx",
"fileExpiresAt": "2026-08-07T12:00:00.000Z",
"linkExpiresAt": "2026-08-07T12:00:00.000Z",
"downloadAvailable": true,
"reportSource": "preset",
"reportPresetId": "…",
"reportTemplateCode": "alerts_by_rules",
"createdAt": "2026-08-06T12:00:00.000Z"
}
],
"total": 1,
"limit": 50,
"offset": 0
}
Download a job file
GET http://api.gu1.ai/report-export-jobs/{kind}/{jobId}/download
Content-Disposition: attachment. Códigos:
| Status | Meaning |
|---|---|
200 | Cuerpo del archivo |
404 | Job no encontrado en el tenant |
409 | Job aún no listo |
410 | Archivo eliminado |
Was this page helpful?