curl --request GET \
--url https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.duvo.ai/v2/organizations/{orgId}/insights/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 => "https://api.duvo.ai/v2/organizations/{orgId}/insights/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 := "https://api.duvo.ai/v2/organizations/{orgId}/insights/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("https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"teams": [
{
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_name": "<string>",
"is_deleted": true,
"member_count": 123,
"assignment_count": 123,
"scheduled_job_count": 123,
"total_jobs": 123,
"completed_jobs": 123,
"failed_jobs": 123,
"total_runs": 123,
"standard_runs": 123,
"preview_runs": 123
}
],
"start_date": "<string>",
"end_date": "<string>",
"truncated": true,
"total_teams": 123,
"org_member_count": 123
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Get Org Insights Metrics
Get org-level insights metrics (runs, assignments, schedules) broken down per team across the organization. Requires an organization Admin, Executive, or Owner role.
curl --request GET \
--url https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.duvo.ai/v2/organizations/{orgId}/insights/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 => "https://api.duvo.ai/v2/organizations/{orgId}/insights/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 := "https://api.duvo.ai/v2/organizations/{orgId}/insights/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("https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/organizations/{orgId}/insights/metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"teams": [
{
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_name": "<string>",
"is_deleted": true,
"member_count": 123,
"assignment_count": 123,
"scheduled_job_count": 123,
"total_jobs": 123,
"completed_jobs": 123,
"failed_jobs": 123,
"total_runs": 123,
"standard_runs": 123,
"preview_runs": 123
}
],
"start_date": "<string>",
"end_date": "<string>",
"truncated": true,
"total_teams": 123,
"org_member_count": 123
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication. Get your API key from the Duvo dashboard.
Path Parameters
The organization's unique identifier
Query Parameters
Start of the aggregation window (ISO 8601 datetime). Defaults to 7 days ago; clamped to at most 365 days ago.
End of the aggregation window (ISO 8601 datetime). Defaults to now; clamped to now.
Response
Default Response
Per-team metric breakdown
Show child attributes
Show child attributes
Effective window start after clamping (ISO 8601)
Effective window end after clamping (ISO 8601)
True when the org has more teams than the aggregation limit — the team list is partial
Actual team count on the org, even when truncated
Distinct organization members (not the sum of per-team memberships)
Was this page helpful?