curl --request GET \
--url https://prod-api.ringg.ai/ca/api/v0/analytics/v4/latency-trend \
--header 'X-API-KEY: <api-key>'import requests
url = "https://prod-api.ringg.ai/ca/api/v0/analytics/v4/latency-trend"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://prod-api.ringg.ai/ca/api/v0/analytics/v4/latency-trend', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"by_bucket": [
{
"bucket": "2026-10-14",
"p50_ms": 883.4,
"p95_ms": 1074.7,
"scored": 30
},
{
"bucket": "2026-10-15",
"p50_ms": 910.2,
"p95_ms": 1180,
"scored": 41
}
]
}{
"message": "invalid channel(s): sms"
}{
"message": "Failed to fetch latency trend!"
}Get Latency Trend
Get median and 95th-percentile agent response latency over time, filtered by date, agent, version, campaign or channel, to spot latency regressions.
curl --request GET \
--url https://prod-api.ringg.ai/ca/api/v0/analytics/v4/latency-trend \
--header 'X-API-KEY: <api-key>'import requests
url = "https://prod-api.ringg.ai/ca/api/v0/analytics/v4/latency-trend"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://prod-api.ringg.ai/ca/api/v0/analytics/v4/latency-trend', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"by_bucket": [
{
"bucket": "2026-10-14",
"p50_ms": 883.4,
"p95_ms": 1074.7,
"scored": 30
},
{
"bucket": "2026-10-15",
"p50_ms": 910.2,
"p95_ms": 1180,
"scored": 41
}
]
}{
"message": "invalid channel(s): sms"
}{
"message": "Failed to fetch latency trend!"
}bucket on the X-axis and p50_ms and p95_ms on the Y-axis. Compare before and after a prompt, model or voice change to catch regressions.
Notes
scoredis the number of calls in the bucket with latency data. Buckets with few scored calls are noisy.- Bucket size follows the date range: hour, day, week (labelled with the Monday) or month (labelled with the 1st). Pass
tzto bucket in your timezone.
Errors
400: a filter is invalid, such as an unknownchannel, a malformed ID, orsub_workspace_idsent from a workspace that isn’t a primary workspace.401:X-API-KEYis missing or invalid.
Authorizations
Query Parameters
Start of the reporting window. Accepts YYYY-MM-DD or ISO-8601. Omit both dates for all time.
"2026-10-01"
End of the reporting window (inclusive). Accepts YYYY-MM-DD or ISO-8601.
"2026-10-15"
Filter by one or more agent IDs (comma-separated).
"00000000-0000-4000-8000-0000000000a1"
Filter by one or more agent version IDs (comma-separated).
"00000000-0000-4000-8000-0000000000d1"
Filter by one or more campaign (bulk list) IDs (comma-separated). Callback calls inherit the campaign of their parent call.
"00000000-0000-4000-8000-0000000000c1"
true returns only voicemail calls, false excludes them. Omit to include all calls.
false
Filter by call channel (comma-separated): inbound, outbound, webcall. Unknown values return 400.
"outbound"
Include callback-feature calls (call_category = CALLBACK) in the metrics. Defaults to false.
false
Primary workspaces only: limit the combined analytics to these Ringg Spaces. Repeat the parameter for multiple IDs. The primary workspace's own ID is accepted; any other workspace sending this parameter gets 400.
["00000000-0000-4000-8000-000000000101"]
IANA timezone used to bucket the time series (for example Asia/Kolkata). Bucket labels are returned in this timezone. Omitted or invalid values fall back to UTC.
"Asia/Kolkata"
Response
Latency trend retrieved successfully.
Show child attributes
Show child attributes
Was this page helpful?