Métricas custom por CUIT
curl --request GET \
--url http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics \
--header 'Authorization: Bearer <token>'import requests
url = "http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics', 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/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics",
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: Bearer <token>"
],
]);
$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/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyReferência API
Métricas custom por CUIT
Métricas incrementais CBU e CVU para um CUIT Argentina com lookback calendário 1–180 (ou preset window) — cobrança por request quando precificado.
GET
/
integration-services
/
ar_gueno_holder_intelligence_service
/
cuits
/
:cuit
/
metrics
Métricas custom por CUIT
curl --request GET \
--url http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics \
--header 'Authorization: Bearer <token>'import requests
url = "http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics', 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/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics",
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: Bearer <token>"
],
]);
$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/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyOverview
Retorna métricas densificadas de um lookback calendário: deltas, % de mudança, aceleração (quando há histórico suficiente) e completeness. Uma request cobrável por chamada bem-sucedida quando precificado. Informelookback (inteiro 1–180) ou um preset window (w_1d … w_180d). Se ambos forem enviados, lookback prevalece.
Janela
janela = [date − (lookback − 1) … date] // dias de calendário inclusive
lookback=4&date=2026-07-14 → 2026-07-11 … 2026-07-14. O date está incluído.
Dias quietos podem não persistir upstream; em HTTP 200 a série já vem densa (forward-fill: totais anteriores + delta diário 0). Série plana com delta 0 = sem movimento, não “sem dado”. Avalie limiares só se complete === true.
Query
Pelo menos um delookback ou window é obrigatório.
integer
Dias calendário (1–180). Opcional se houver
window.string
Preset de lookback → dias:
window | Dias |
|---|---|
w_1d | 1 |
w_3d | 3 |
w_7d | 7 |
w_14d | 14 |
w_21d | 21 |
w_30d | 30 |
w_90d | 90 |
w_180d | 180 |
string
Opcional. Fim inclusive (
YYYY-MM-DD).Sucesso (HTTP 200)
Aliases de estoque:cbuCount,cvuCount,totalAccounts— último dia densificado (windowEnd/referenceDate)cbuCountAtStart,cvuCountAtStart— primeiro dia densificado (windowStart)
data.metrics: deltas por canal e totais (totalDelta = CBU+CVU, totalPctChange sobre estoque total no início — null se start total = 0), aceleração só se accelerationAvailable. Também totalAccountsStart / totalAccountsEnd. daily[] (quando presente) tem exatamente lookbackDays linhas densas.
Como ler: não trate null em % nem HTTP 422 como “mudança 0”. Faça gate com data.complete === true.
Janela incompleta (HTTP 422)
Não foi possível densificar pelo menos um dia (falta piso, dia nãocomplete no corpus, ou sem estado incremental). Não aplicar limiares — é “dado não pronto”, não score 0.
error.code | Significado |
|---|---|
INCOMPLETE_WINDOW | Pelo menos um dia não densificável |
NO_INCREMENTAL_STATE | Sem histórico incremental / daily vazio |
Outros erros
| HTTP | error.code |
|---|---|
| 400 | LOOKBACK_REQUIRED, INVALID_LOOKBACK, INVALID_WINDOW, INVALID_DATE |
| 404 | CUIT_NOT_FOUND |
| 402 | INSUFFICIENT_BALANCE |
| 503 | SERVICE_UNAVAILABLE |
Exemplo
curl -s \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://api.gu1.ai/api/integration-services/ar_gueno_holder_intelligence_service/cuits/20384648798/metrics?window=w_7d"
{
"success": true,
"data": {
"integrationCode": "ar_gueno_holder_intelligence_service",
"cuit": "20384648798",
"complete": true,
"referenceDate": "2026-06-24",
"lookbackDays": 7,
"windowStart": "2026-06-18",
"windowEnd": "2026-06-24",
"cbuCount": 3,
"cvuCount": 2,
"totalAccounts": 5,
"cbuCountAtStart": 2,
"cvuCountAtStart": 1,
"metrics": {
"cbuTotalStart": 2,
"cbuTotalEnd": 3,
"cvuTotalStart": 1,
"cvuTotalEnd": 2,
"totalAccountsStart": 3,
"totalAccountsEnd": 5,
"cbuDelta": 1,
"cvuDelta": 1,
"totalDelta": 2,
"cbuPctChange": 50.0,
"cvuPctChange": 100.0,
"totalPctChange": 66.66666666666666,
"daysWithChanges": 2,
"cbuDailyDeltaVariance": 0.1,
"cvuDailyDeltaVariance": 0.05,
"cbuAcceleration": 0.5,
"cvuAcceleration": 0.3,
"totalAcceleration": 0.8,
"accelerationAvailable": true
}
}
}
Regras
UseholderIntelligenceLookbackDays na condição. Não é necessário adicionar metrics.complete == true: uma janela incompleta expõe as métricas como null, e o motor as avalia como non-match. Para aceleração, adicione metrics.acceleration_available == true. Em regras transacionais, data padrão: transactedAt (calendário AR).
Campos de totais: services.holder_intelligence.metrics.total_delta, total_pct_change, total_acceleration. Ver Condições de regras.Was this page helpful?