Report export jobs
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_bodyReport export jobs
List and download async report files generated from Reporting, presets, or Generar reporte automations.
GET
/
report-export-jobs
Report export jobs
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
Every Generate run from Reporting, a preset, or the automation action Generar reporte (send_report) enqueues an export job and stores the file in object storage. Use these endpoints to list Descargables and re-download with an authenticated session (not a permanent public signed URL).
| Method | Path | Use |
|---|---|---|
GET | /report-export-jobs | List report-sourced jobs (filter by presetId, templateCode, status) |
GET | /report-export-jobs/{kind}/{jobId}/download | Authenticated file download |
kind is one of: entities, transactions, investigations, alerts, documents (entity PDF profile and metrics reports).
File retention is stored per job in fileExpiresAt. A null value means the file
does not expire. New entity and transaction exports use null; other export kinds
keep their configured retention period. This field is separate from linkExpiresAt,
which only expires the signed link sent by email.
Authentication and tenant
string
required
Bearer YOUR_API_KEY β see Authentication.string
required
Production or sandbox organization UUID β see Environments.
Permissions
| Endpoint | Granular permission |
|---|---|
GET list | reports:read |
GET download | reports:export |
List jobs
GET http://api.gu1.ai/report-export-jobs
string
Optional UUID β only jobs produced from that report preset.
string
Optional template code (for example
alerts_by_rules).string
Optional job status (
queued, running, completed, completed_email_failed, failed).integer
Page size (1β100, default 50).
integer
Offset for pagination (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. Status codes:
| Status | Meaning |
|---|---|
200 | File body |
404 | Job not found in the tenant |
409 | Job not ready |
410 | File removed |
Was this page helpful?