curl --request GET \
--url https://api.in.talqing.com/v1/observability \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.in.talqing.com/v1/observability"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.in.talqing.com/v1/observability', 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.in.talqing.com/v1/observability",
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.in.talqing.com/v1/observability"
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.in.talqing.com/v1/observability")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.in.talqing.com/v1/observability")
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{
"agents": [
{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_name": "<string>",
"average_cost_per_session": 123,
"average_e2e_latency_ms": 123,
"average_session_duration_seconds": 123,
"channel": "voice",
"completed_sessions": 123,
"completion_rate": 123,
"judged_sessions": 123,
"sessions": 123,
"success_rate": 123,
"successful_sessions": 123,
"total_cost": 123
}
],
"cost": {
"analysis_cost": 123,
"avatar_cost": 123,
"by_provider": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"cache_hit_ratio": 123,
"lines": [
{
"cost": 123,
"kind": "llm",
"model": "<string>",
"priority": true,
"provider": "<string>",
"purpose": "<string>",
"share": 123
}
],
"llm_cached_input_tokens": 123,
"llm_cost": 123,
"llm_input_tokens": 123,
"platform_fee": 123,
"priced_sessions": 123,
"priority_cost": 123,
"provider_cost": 123,
"realtime_cost": 123,
"stt_cost": 123,
"total_cost": 123,
"tts_cost": 123,
"unpriceable_reasons": [
{
"message": "<string>",
"sessions": 123
}
]
},
"endings": [
{
"bucket": "normal",
"close_reason": "<string>",
"failed_sessions": 123,
"sessions": 123
}
],
"latency": {
"basis": "per_turn",
"channels": [
"voice"
],
"distribution": [
{
"lower_ms": 123,
"sessions": 123,
"upper_ms": 123
}
],
"measured_sessions": 123,
"metrics": [
{
"average_ms": 123,
"metric": "llm_node_ttft",
"points": [
{
"average_ms": 123,
"bucket": "2023-11-07T05:31:56Z",
"sample_count": 123
}
],
"sample_count": 123
}
],
"slow_response_threshold_ms": 123,
"slow_sessions": 123
},
"range": {
"end_date": "2023-12-25",
"granularity": "day",
"start_date": "2023-12-25",
"timezone": "<string>"
},
"summary": {
"active_sessions": 123,
"average_e2e_latency_ms": 123,
"average_session_duration_seconds": 123,
"by_channel": [
{
"average_session_duration_seconds": 123,
"channel": "voice",
"sessions": 123,
"total_runtime_seconds": 123
}
],
"canceled_sessions": 123,
"completed_sessions": 123,
"completion_rate": 123,
"e2e_latency_samples": 123,
"failed_sessions": 123,
"pending_sessions": 123,
"platform_fee": 123,
"priced_sessions": 123,
"provider_cost": 123,
"total_cost": 123,
"total_runtime_seconds": 123,
"total_sessions": 123,
"unpriceable_sessions": 123
},
"timeline": [
{
"analysed_sessions": 123,
"bucket": "2023-11-07T05:31:56Z",
"cache_hit_ratio": 123,
"completed_sessions": 123,
"incomplete_sessions": 123,
"platform_fee": 123,
"provider_cost": 123,
"recorded_sessions": 123,
"talk_time_seconds": 123,
"total_cost": 123,
"total_sessions": 123,
"transferred_sessions": 123
}
],
"volume": {
"agent_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"analysis_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"close_reason_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"phone_number_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"recording_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"status_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"transfer_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"type_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
}
}
}{
"detail": {
"errors": [
"<string>"
],
"message": "<string>"
}
}{
"detail": {
"errors": [
"<string>"
],
"message": "<string>"
}
}{
"detail": {
"errors": [
"<string>"
],
"message": "<string>"
}
}Get Observability
Workspace analytics: volume, endings, recordings, response time and spend. One snapshot of a date range, up to 7 days.
summary is the range total, daily one row per day, and volume the same
days cut by dimension (agent, phone number, type, status, close reason,
recording, analysis, transfer) — each capped at eight series with the tail
rolled into Other. latency reports response time per model stage and
cost breaks the bill down by stage, provider and model.
Narrow it with agent_id and channel; timezone decides day boundaries.
Two traps. latency.basis is per_turn for voice and video and per_call
for text, so the two are never averaged into one number. And every rate is
over a subset — success_rate over judged_sessions, cost over
priced_sessions, latency over measured_sessions.
curl --request GET \
--url https://api.in.talqing.com/v1/observability \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.in.talqing.com/v1/observability"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.in.talqing.com/v1/observability', 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.in.talqing.com/v1/observability",
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.in.talqing.com/v1/observability"
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.in.talqing.com/v1/observability")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.in.talqing.com/v1/observability")
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{
"agents": [
{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_name": "<string>",
"average_cost_per_session": 123,
"average_e2e_latency_ms": 123,
"average_session_duration_seconds": 123,
"channel": "voice",
"completed_sessions": 123,
"completion_rate": 123,
"judged_sessions": 123,
"sessions": 123,
"success_rate": 123,
"successful_sessions": 123,
"total_cost": 123
}
],
"cost": {
"analysis_cost": 123,
"avatar_cost": 123,
"by_provider": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"cache_hit_ratio": 123,
"lines": [
{
"cost": 123,
"kind": "llm",
"model": "<string>",
"priority": true,
"provider": "<string>",
"purpose": "<string>",
"share": 123
}
],
"llm_cached_input_tokens": 123,
"llm_cost": 123,
"llm_input_tokens": 123,
"platform_fee": 123,
"priced_sessions": 123,
"priority_cost": 123,
"provider_cost": 123,
"realtime_cost": 123,
"stt_cost": 123,
"total_cost": 123,
"tts_cost": 123,
"unpriceable_reasons": [
{
"message": "<string>",
"sessions": 123
}
]
},
"endings": [
{
"bucket": "normal",
"close_reason": "<string>",
"failed_sessions": 123,
"sessions": 123
}
],
"latency": {
"basis": "per_turn",
"channels": [
"voice"
],
"distribution": [
{
"lower_ms": 123,
"sessions": 123,
"upper_ms": 123
}
],
"measured_sessions": 123,
"metrics": [
{
"average_ms": 123,
"metric": "llm_node_ttft",
"points": [
{
"average_ms": 123,
"bucket": "2023-11-07T05:31:56Z",
"sample_count": 123
}
],
"sample_count": 123
}
],
"slow_response_threshold_ms": 123,
"slow_sessions": 123
},
"range": {
"end_date": "2023-12-25",
"granularity": "day",
"start_date": "2023-12-25",
"timezone": "<string>"
},
"summary": {
"active_sessions": 123,
"average_e2e_latency_ms": 123,
"average_session_duration_seconds": 123,
"by_channel": [
{
"average_session_duration_seconds": 123,
"channel": "voice",
"sessions": 123,
"total_runtime_seconds": 123
}
],
"canceled_sessions": 123,
"completed_sessions": 123,
"completion_rate": 123,
"e2e_latency_samples": 123,
"failed_sessions": 123,
"pending_sessions": 123,
"platform_fee": 123,
"priced_sessions": 123,
"provider_cost": 123,
"total_cost": 123,
"total_runtime_seconds": 123,
"total_sessions": 123,
"unpriceable_sessions": 123
},
"timeline": [
{
"analysed_sessions": 123,
"bucket": "2023-11-07T05:31:56Z",
"cache_hit_ratio": 123,
"completed_sessions": 123,
"incomplete_sessions": 123,
"platform_fee": 123,
"provider_cost": 123,
"recorded_sessions": 123,
"talk_time_seconds": 123,
"total_cost": 123,
"total_sessions": 123,
"transferred_sessions": 123
}
],
"volume": {
"agent_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"analysis_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"close_reason_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"phone_number_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"recording_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"status_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"transfer_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
},
"type_data": {
"other_count": 123,
"series": [
{
"key": "<string>",
"label": "<string>",
"points": [
{
"bucket": "2023-11-07T05:31:56Z",
"value": 123
}
],
"total": 123
}
]
}
}
}{
"detail": {
"errors": [
"<string>"
],
"message": "<string>"
}
}{
"detail": {
"errors": [
"<string>"
],
"message": "<string>"
}
}{
"detail": {
"errors": [
"<string>"
],
"message": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
voice, video, text Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes