curl --request GET \
--url https://app.thinnest.ai/api/v1/agents/{id}/analytics \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/agents/{id}/analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/agents/{id}/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"days": 30,
"totals": {
"conversations": 412,
"customers": 368,
"messages": 3104,
"agent_replies": 1530,
"leads": 57,
"escalated": 12,
"resolved": 140,
"human_handled": 9,
"searches": 820,
"unanswered": 64
},
"daily": [
{
"day": "2026-10-06",
"conversations": 18,
"replies": 71,
"leads": 3
}
],
"hourly": [
{
"hour": 9,
"conversations": 41
}
],
"channels": [
{
"kind": "whatsapp",
"conversations": 260
},
{
"kind": "web",
"conversations": 152
}
],
"knowledgeGaps": [
{
"query": "do you deliver on sunday",
"asked": 7,
"last_asked": "2026-10-05T08:12:00+00:00",
"best_similarity": 0.41
}
],
"topQuestions": [
{
"query": "where is my order",
"asked": 96,
"answered": 94,
"last_asked": "2026-10-05T10:02:00+00:00"
}
],
"derived": {
"neededAPerson": 21,
"answerRate": 0.922
}
}Get Agent Analytics
What the agent’s Analytics page shows: totals, conversations/replies/leads per day, conversations by hour and by channel, the questions it could not answer and the questions asked most. Windows are rolling days; hours and days are UTC. resolved and escalated count conversations by their current status. Any key may call this, a read-only key included.
curl --request GET \
--url https://app.thinnest.ai/api/v1/agents/{id}/analytics \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/agents/{id}/analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/agents/{id}/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"days": 30,
"totals": {
"conversations": 412,
"customers": 368,
"messages": 3104,
"agent_replies": 1530,
"leads": 57,
"escalated": 12,
"resolved": 140,
"human_handled": 9,
"searches": 820,
"unanswered": 64
},
"daily": [
{
"day": "2026-10-06",
"conversations": 18,
"replies": 71,
"leads": 3
}
],
"hourly": [
{
"hour": 9,
"conversations": 41
}
],
"channels": [
{
"kind": "whatsapp",
"conversations": 260
},
{
"kind": "web",
"conversations": 152
}
],
"knowledgeGaps": [
{
"query": "do you deliver on sunday",
"asked": 7,
"last_asked": "2026-10-05T08:12:00+00:00",
"best_similarity": 0.41
}
],
"topQuestions": [
{
"query": "where is my order",
"asked": 96,
"answered": 94,
"last_asked": "2026-10-05T10:02:00+00:00"
}
],
"derived": {
"neededAPerson": 21,
"answerRate": 0.922
}
}Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace.
"org_3fKq9TzQ1mN8vB2xR7cLpA"
Path Parameters
The agent's id.
Query Parameters
The rolling window.
1 <= x <= 90Caps knowledgeGaps and topQuestions.
1 <= x <= 100Response
Agent analytics.
The window asked for.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Questions the agent searched its knowledge for and found nothing — at most rows.
Show child attributes
Show child attributes
Questions asked most — at most rows.
Show child attributes
Show child attributes
Show child attributes
Show child attributes