curl --request GET \
--url https://api.tryfuse.ai/api/v1/business/analytics/dialer \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.tryfuse.ai/api/v1/business/analytics/dialer"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.tryfuse.ai/api/v1/business/analytics/dialer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"range": "30d",
"campaigns": {
"trend": {
"totals": {
"dialed": 57,
"callsMade": 68,
"answered": 21,
"connected": 12,
"connectedPositive": 4,
"connectedNeutral": 5,
"connectedNegative": 2,
"connectedFollowUp": 3,
"voicemailDropped": 9,
"busy": 4,
"noAnswer": 18,
"badWrongNumber": 2,
"dialable": 240
},
"series": [
{
"date": "Jul 27",
"isoDate": "2026-07-27",
"dialed": 30,
"answered": 11,
"connected": 7,
"connectedPositive": 2,
"connectedFollowUp": 2
},
{
"date": "Aug 3",
"isoDate": "2026-08-03",
"dialed": 29,
"answered": 10,
"connected": 5,
"connectedPositive": 2,
"connectedFollowUp": 1
}
]
}
},
"powerDialer": {
"trend": {
"totals": {
"dialed": 84,
"callsMade": 103,
"answered": 33,
"connected": 19,
"connectedPositive": 6,
"connectedNeutral": 8,
"connectedNegative": 3,
"connectedFollowUp": 4,
"voicemailDropped": 14,
"busy": 6,
"noAnswer": 27,
"badWrongNumber": 3,
"dialable": 240
},
"series": [
{
"date": "Jul 27",
"isoDate": "2026-07-27",
"dialed": 44,
"answered": 17,
"connected": 11,
"connectedPositive": 3,
"connectedFollowUp": 3
},
{
"date": "Aug 3",
"isoDate": "2026-08-03",
"dialed": 42,
"answered": 16,
"connected": 8,
"connectedPositive": 3,
"connectedFollowUp": 1
}
]
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Dialer analytics roll-up
The dialer insights tab in one response: campaigns covers campaign-driven outbound dials (campaigns the token owner can see) and powerDialer covers every outbound dial the owner’s team placed (campaign plus ad hoc); inbound calls are excluded from every metric. Each panel is . totals counts each contact once across the whole window with the full outcome breakdown, plus callsMade (raw call records) and dialable (distinct contacts enrolled in the campaign target lists — the campaign portion only); voicemailDropped counts contacts with at least one call whose voicemailDroppedAt timestamp is set. series carries one zero-filled point per bucket with the five charted contact counts, where dialed is the denominator for the other four. Do not sum the series for headline figures — a contact worked in two buckets counts once in totals but once per bucket in series. Granularity is daily for 7d and weekly for 30d and 90d; each point’s date is its bucket’s start date as a display label (‘Jan 1’) with the same date as YYYY-MM-DD in isoDate. Each panel is computed independently and is null when its aggregation fails. Rate limit: 20 requests per minute, 1000 per day.
Errors:
422VALIDATION_FAILED—rangewas sent and is not one of 7d, 30d or 90d.429RATE_LIMITED— Per-user quota for this endpoint family exceeded (20 per minute, 1000 per day); retry after the Retry-After / RateLimit-Reset seconds.
Requires one of the following token scopes: analytics.
curl --request GET \
--url https://api.tryfuse.ai/api/v1/business/analytics/dialer \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.tryfuse.ai/api/v1/business/analytics/dialer"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.tryfuse.ai/api/v1/business/analytics/dialer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"range": "30d",
"campaigns": {
"trend": {
"totals": {
"dialed": 57,
"callsMade": 68,
"answered": 21,
"connected": 12,
"connectedPositive": 4,
"connectedNeutral": 5,
"connectedNegative": 2,
"connectedFollowUp": 3,
"voicemailDropped": 9,
"busy": 4,
"noAnswer": 18,
"badWrongNumber": 2,
"dialable": 240
},
"series": [
{
"date": "Jul 27",
"isoDate": "2026-07-27",
"dialed": 30,
"answered": 11,
"connected": 7,
"connectedPositive": 2,
"connectedFollowUp": 2
},
{
"date": "Aug 3",
"isoDate": "2026-08-03",
"dialed": 29,
"answered": 10,
"connected": 5,
"connectedPositive": 2,
"connectedFollowUp": 1
}
]
}
},
"powerDialer": {
"trend": {
"totals": {
"dialed": 84,
"callsMade": 103,
"answered": 33,
"connected": 19,
"connectedPositive": 6,
"connectedNeutral": 8,
"connectedNegative": 3,
"connectedFollowUp": 4,
"voicemailDropped": 14,
"busy": 6,
"noAnswer": 27,
"badWrongNumber": 3,
"dialable": 240
},
"series": [
{
"date": "Jul 27",
"isoDate": "2026-07-27",
"dialed": 44,
"answered": 17,
"connected": 11,
"connectedPositive": 3,
"connectedFollowUp": 3
},
{
"date": "Aug 3",
"isoDate": "2026-08-03",
"dialed": 42,
"answered": 16,
"connected": 8,
"connectedPositive": 3,
"connectedFollowUp": 1
}
]
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Authorizations
Your API token (af_…) as the Basic-auth username, with an empty password.
Query Parameters
Rolling window ending now: 7d, 30d (default) or 90d, i.e. the roll-up covers the last 7, 30 or 90 days; time-series bucket sizes (daily, weekly, monthly) are chosen from the window length.
7d, 30d, 90d IANA timezone name (e.g. Europe/Kyiv, America/New_York) whose calendar days the time series is bucketed by: each bucket's isoDate / date is a local day, week, month or quarter in this zone. Offsets such as +03:00 are rejected. Default: UTC.
64