curl --request GET \
--url https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats \
--header 'Authorization: Bearer <token>'import requests
url = "https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats', 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://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats",
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://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats"
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://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats")
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{
"window": "1h",
"available": true,
"requests": 0,
"served_by_fallback": 0,
"fallback_rate": 0,
"exhausted": 0,
"by_provider": [
{
"provider_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"position": 123,
"served": 123,
"failed_attempts": 123
}
],
"reasons": [
{
"reason": "<string>",
"count": 123
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}How an agent's model requests were routed
The agent’s model requests over the window, from telemetry: how many
a fallback served, how many every provider failed (exhausted), per
provider connection the requests it served and its failed attempts
(position 0 = the primary, 1..3 = its fallback position now, null =
no longer in the route), and the failure classes the runtime moved on
for. available: false with zeros when telemetry cannot be read.
curl --request GET \
--url https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats \
--header 'Authorization: Bearer <token>'import requests
url = "https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats', 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://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats",
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://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats"
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://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://cp.xenovia.io/api/v1/agents/{agent_id}/routing-stats")
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{
"window": "1h",
"available": true,
"requests": 0,
"served_by_fallback": 0,
"fallback_rate": 0,
"exhausted": 0,
"by_provider": [
{
"provider_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"position": 123,
"served": 123,
"failed_attempts": 123
}
],
"reasons": [
{
"reason": "<string>",
"count": 123
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer token: an organization API key (ak_…) created under Settings → API Keys, or a dashboard user session token. Agent keys (xe_…) are not accepted here. Endpoints marked as user-only in their description reject organization keys with 403.
Path Parameters
Query Parameters
1h, 24h or 7d
1h, 24h, 7d Response
Successful Response
GET /agents/{agent_id}/routing-stats: an agent's model requests over
a window, from telemetry. available is false (and every number zero)
when the telemetry store cannot be read.
1h, 24h, 7d Show child attributes
Show child attributes
Show child attributes
Show child attributes