curl --request GET \
--url https://app.thinnest.ai/api/v1/calls/summary \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/calls/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/calls/summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"days": 7,
"timezone": "Asia/Kolkata",
"grain": "day",
"calls": 230,
"inbound": 140,
"outbound": 90,
"answered": 198,
"missed": 26,
"failed": 6,
"seconds": 41820,
"debitMicro": 1394000000,
"surfaces": {
"phone": 210,
"web": 14,
"whatsapp": 6
},
"series": [
{
"bucket": "2026-10-06T00:00:00",
"inbound": 22,
"outbound": 15,
"answered": 33,
"missed": 4,
"minutes": 118.4
}
]
}{
"error": "`days` must be a whole number from 1 to 90."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Workspace not found."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Get Calls Summary
Call totals for the last days — calls, inbound, outbound, answered, missed, failed, seconds, what they cost, by surface — and a series by hour (days=1) or by day, bucketed in your workspace’s time zone. The dashboard’s calls figures. Any key may call this, a read-only key included.
curl --request GET \
--url https://app.thinnest.ai/api/v1/calls/summary \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/calls/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/calls/summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"days": 7,
"timezone": "Asia/Kolkata",
"grain": "day",
"calls": 230,
"inbound": 140,
"outbound": 90,
"answered": 198,
"missed": 26,
"failed": 6,
"seconds": 41820,
"debitMicro": 1394000000,
"surfaces": {
"phone": 210,
"web": 14,
"whatsapp": 6
},
"series": [
{
"bucket": "2026-10-06T00:00:00",
"inbound": 22,
"outbound": 15,
"answered": 33,
"missed": 4,
"minutes": 118.4
}
]
}{
"error": "`days` must be a whole number from 1 to 90."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Workspace not found."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}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"
Query Parameters
The rolling window.
1 <= x <= 90Response
Call totals.
The window asked for.
Your workspace's time zone, which buckets are in.
hour when days is 1, else day.
hour, day All calls.
Inbound calls.
Outbound calls.
Calls that connected.
Calls that never connected and were missed or completed unanswered.
Calls that never connected and failed.
Total call seconds.
What the calls cost you (a white-label client's at its reseller's price). Integer micro-units of currency: 1000000 is one rupee or one dollar.
Calls by surface.
Show child attributes
Show child attributes
One bucket per hour or day, in your time zone.
Show child attributes
Show child attributes