curl --request GET \
--url https://www.tryunleashx.com/api/v1/global/agents/call-history \
--header 'token: <token>'{
"datalist": [
{
"agent_id": 123,
"agent_name": "<string>",
"total_calls": "<string>",
"success_calls": "<string>",
"failed_calls": "<string>",
"total_duration": "<string>",
"call_from": "<string>",
"call_to": "<string>"
}
],
"pagination": {
"totalRecords": 123,
"totalPages": 123,
"currentPage": 123,
"limit": 123
},
"total_calls": 123,
"successful_calls": 123,
"total_duration": "<string>"
}curl --request GET \
--url https://www.tryunleashx.com/api/v1/global/agents/call-history \
--header 'token: <token>'{
"datalist": [
{
"agent_id": 123,
"agent_name": "<string>",
"total_calls": "<string>",
"success_calls": "<string>",
"failed_calls": "<string>",
"total_duration": "<string>",
"call_from": "<string>",
"call_to": "<string>"
}
],
"pagination": {
"totalRecords": 123,
"totalPages": 123,
"currentPage": 123,
"limit": 123
},
"total_calls": 123,
"successful_calls": 123,
"total_duration": "<string>"
}/api/v1/global/agents/call-history
Content-Type: application/json
Authentication: Required (API token validated by middleware apiauth.verifyToken). Provide token via header token or api_access_token.
req.data).
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Pagination page number. Defaults to env DEFAULT_PAGE. |
limit | integer | No | Number of items per page. Defaults to env DEFAULT_PAGE_LIMIT. |
fromdate | string | No | Start date for range (e.g. 2025-01-01 or datetime). Defaults to 1 month ago if omitted. |
todate | string | No | End date for range. Defaults to now if omitted. (Code enforces a reasonable max window, ~3 months.) |
agent_id | integer | No | Filter results to a specific agent. |
calling_number | string | No | Partial match filter for calling number. |
provider_number | string | No | Filter by provider number. |
status | string/number | No | Filter by call/execution status (e.g. completed, failed). |
sentiment, disposition, emotion, transcript, audio_url, etc. However this endpoint forces grouping by agent_id.
agentController support a set of filters you can pass as query parameters or in the request body. Below are the most useful filters observed in the implementation:
| Filter | Type | Description |
|---|---|---|
agent_id | integer | Filter results to a specific agent (AGENT_ID). |
calling_number | string | Partial-match filter against CALLING_NUMBER (uses SQL LIKE). |
provider_number | string | Exact match against PROVIDER_NUMBER. |
status | string/integer | Filters by execution STATUS in summary (and CALL_STATUS in per-call list endpoints). Common values: completed, failed, running (depends on your workspace data). |
fromdate / todate | string | Date or datetime range. Controller defaults to last 1 month when omitted; code enforces a maximum reasonable window (~3 months). |
page | integer | Pagination page. |
limit | integer | Page size / limit. |
audio_url | string | Pass available to return calls with an audio file (FILE_PATH is not null), or any other value to look for missing files. |
transcript | string | Pass available to return calls with TRANSCRIPT present, or unavailable for missing transcripts. |
sentiment | string | Filter by OVERALL_SENTIMENT recorded in the execution (if voice analysis ran). |
disposition | string | Comma-separated dispositions; controller splits and applies IN filter on DISPOSITION. |
emotion | string | Filter by DETECTED_EMOTION. |
input_data | string | Partial-match (LIKE) against INPUT_DATA. |
cost_breakdown | string | Partial-match (LIKE) against COST_BREAKDOWN or inside RETURN_DATA. |
duration | string | For per-call list: expects a range like min-max to filter TOTAL_DURATION. (Used in getAgentExecutionList.) |
getCallHistory endpoint specifically calls the summary function with group_by = 'agent_id', so grouping is enforced even if other group_by values exist in the summary helper.STATUS vs CALL_STATUS); prefer using status for the summary endpoint and CALL_STATUS when calling the per-call list directly if you need exact behavior.disposition accepts comma-separated values and will be converted into an IN filter in SQL.agentController.getAgentExecutionList and apply the same filters.curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?page=1&limit=10&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN" \
-H "Content-Type: application/json"
data structure (simplified) is shown below.
{
"datalist": [
{
"agent_id": 123,
"agent_name": "Support Agent A",
"total_calls": "12",
"success_calls": "10",
"failed_calls": "2",
"total_duration": "3h:12m:5s",
"call_from": "+14045551234",
"call_to": "+919876543210"
},
{
"agent_id": 456,
"agent_name": "Sales Agent B",
"total_calls": "8",
"success_calls": "7",
"failed_calls": "1",
"total_duration": "1h:45m:0s",
"call_from": "+14045559876",
"call_to": "+919112223334"
}
],
"pagination": {
"totalRecords": 2,
"totalPages": 1,
"currentPage": 1,
"limit": 10
},
"total_calls": 20,
"successful_calls": 17,
"total_duration": "4h:57m:5s"
}
| Field | Type | Description | |
|---|---|---|---|
datalist | array | Array of agent summary objects (one per agent). | |
datalist[].agent_id | integer | Agent ID (group value). | |
datalist[].agent_name | string | Agent display name (if available). | |
datalist[].total_calls | number | string | Total calls for that agent in the range. |
datalist[].success_calls | number | string | Successful (completed) calls count. |
datalist[].failed_calls | number | string | Failed calls count. |
datalist[].total_duration | string | Formatted duration for that agent: Xh:Ym:Zs. | |
datalist[].call_from | string | null | Representative provider number (one sample per agent). |
datalist[].call_to | string | null | Representative calling number (one sample per agent). |
pagination | object | Pagination info: totalRecords, totalPages, currentPage, limit. | |
total_calls | integer | Overall total calls across returned agent groups. | |
successful_calls | integer | Overall successful calls across returned agent groups. | |
total_duration | string | Overall duration formatted Xh:Ym:Zs. |
400 Bad Request
{
"error": true,
"code": 400,
"message": "Invalid date range or parameters",
"data": {}
}
Invalid date range or parametersfromdate / todate format invalid401 Unauthorized
{
"error": true,
"code": 401,
"message": "Invalid Auth Key or Session Expired",
"data": {}
}
404 Not Found
{
"error": true,
"code": 404,
"message": "No call history found for the given filters",
"data": {}
}
500 Internal Server Error
{
"error": true,
"code": 500,
"message": "Internal server error",
"data": {}
}
page and limit to page through results. Pagination metadata is returned in the pagination object. For large datasets, prefer narrow date ranges (≤ 3 months).
getAgentExecutionSummary with group_by=agent_id, so responses are grouped by agent.call_from and call_to are taken from one representative execution (latest with non-null numbers) per agent — use getAgentExecutionList for full per-call records.fromdate/todate are not provided. The code enforces a reasonable maximum range (~3 months) for performance.DEFAULT_PAGE and DEFAULT_PAGE_LIMIT if not provided.curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?agent_id=123&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN"
req.data).
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?agent_id=123&fromdate=2025-01-01&todate=2025-01-31&page=1&limit=10" \
-H "token: YOUR_API_TOKEN"
curl -X POST "https://www.tryunleashx.com/api/v1/global/agents/call-history" \
-H "Content-Type: application/json" \
-H "token: YOUR_API_TOKEN" \
-d '{ "agent_id": 123, "fromdate": "2025-01-01", "todate": "2025-01-31", "page": 1, "limit": 10 }'
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?calling_number=91234&page=1&limit=10" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?provider_number=+14045551234&page=1" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?status=completed&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?audio_url=available&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?transcript=available&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?sentiment=positive&emotion=happy&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?disposition=resolved,followup&fromdate=2025-01-01&todate=2025-01-31" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?input_data=order&page=1" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?cost_breakdown=google_tts&page=1" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?duration=30-300&page=1" \
-H "token: YOUR_API_TOKEN"
curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?agent_id=123&calling_number=91234&status=completed&fromdate=2025-01-01&todate=2025-01-31&page=1&limit=20" \
-H "token: YOUR_API_TOKEN"
curl -X POST "https://www.tryunleashx.com/api/v1/global/agents/call-history" \
-H "Content-Type: application/json" \
-H "token: YOUR_API_TOKEN" \
-d '{
"agent_id": 123,
"calling_number": "91234",
"status": "completed",
"fromdate": "2025-01-01",
"todate": "2025-01-31",
"page": 1,
"limit": 20
}'
duration) are more relevant to the per-call list endpoint; the summary groups by agent but accepts the filter (the underlying query logic differs slightly)./api/v1/global/agents/get — Get agent metadata and configuration./api/v1/global/agents/call — Initiate an agent call.agentController.getAgentExecutionList — Use this endpoint for row-level per-call details (call-level list, transcripts, audio URLs).API token for authentication
Was this page helpful?