Jobs de exportação de relatórios
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 exportação de relatórios
Liste e baixe arquivos async gerados a partir de Relatórios, presets ou da ação Gerar relatório.
GET
/
report-export-jobs
Jobs de exportação de relatórios
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 Gerar em Relatórios, um preset ou a ação de automation Gerar relatório (send_report) enfileira um job de exportação e grava o arquivo em object storage. Use estes endpoints para listar Downloads e baixar de novo com sessão autenticada (não é um link público permanente).
| Method | Path | Use |
|---|---|---|
GET | /report-export-jobs | Listar jobs de relatórios (filtro presetId, templateCode, status) |
GET | /report-export-jobs/{kind}/{jobId}/download | Download autenticado |
kind é um de: entities, transactions, investigations, alerts, documents (ficha da entidade em PDF e relatórios de métricas).
A retenção do arquivo é informada por job em fileExpiresAt. O valor null
significa que o arquivo não expira. Novas exportações de entidades e transações usam
null; os demais tipos mantêm o período de retenção configurado. Esse campo é
independente de linkExpiresAt, que indica apenas quando expira o link assinado
enviado por e-mail.
Authentication and tenant
string
required
Bearer YOUR_API_KEY — ver Authentication.string
required
UUID da organização production ou 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 — apenas jobs desse preset de relatório.
string
Código de template opcional (por exemplo
alerts_by_rules).string
Status opcional (
queued, running, completed, completed_email_failed, failed).integer
Tamanho da página (1–100, default 50).
integer
Offset de paginação (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 | Corpo do arquivo |
404 | Job não encontrado no tenant |
409 | Job ainda não pronto |
410 | Arquivo removido |
Was this page helpful?