Skip to main content
GET
Get agents call history (grouped by agent)
Retrieve a summarized call history grouped by agent. The endpoint returns one row per agent with totals (calls, successful calls, duration) and representative phone numbers for the agent’s calls.

API Endpoint

GET /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.

Query Parameters / Request Body

This endpoint accepts parameters either as query parameters (GET) or as JSON in the request body (middleware maps req.data). Additional filters supported by the underlying summary/list endpoints may also be honored: sentiment, disposition, emotion, transcript, audio_url, etc. However this endpoint forces grouping by agent_id.

Available Filters (from code)

The controller and underlying 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: Notes:
  • The 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.
  • Some filters have slightly different column names between the summary and the per-call list endpoints (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.
  • For precise per-call data (transcripts, audio URLs, cost breakdown), use the per-call endpoint agentController.getAgentExecutionList and apply the same filters.

Example Request

Successful Response (200)

Top-level response follows the project’s standard wrapper in many endpoints. The important data structure (simplified) is shown below.

Response Fields

Error Responses

400 - Bad Request

Status Code: 400 Bad Request
Common error messages:
  • Invalid date range or parameters
  • fromdate / todate format invalid

401 - Authentication Error

Status Code: 401 Unauthorized

404 - Not Found

Status Code: 404 Not Found

500 - Server Error

Status Code: 500 Internal Server Error

Pagination

Results are paginated. Use page and limit to page through results. Pagination metadata is returned in the pagination object. For large datasets, prefer narrow date ranges (≤ 3 months).

Important Notes

  1. Grouping: This endpoint is implemented by calling getAgentExecutionSummary with group_by=agent_id, so responses are grouped by agent.
  2. Representative numbers: 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.
  3. Date ranges: Defaults to last 1 month if fromdate/todate are not provided. The code enforces a reasonable maximum range (~3 months) for performance.
  4. Pagination defaults: Values come from environment variables DEFAULT_PAGE and DEFAULT_PAGE_LIMIT if not provided.

Example: Use agent_id to fetch one agent’s summary

Example Requests (filters)

Below are cURL examples that demonstrate how to call the endpoint using the various filters supported by the code. You can use GET query parameters or POST JSON bodies (middleware maps req.data).

1) Get summary for a specific agent (GET)

2) Get summary for a specific agent (POST)

3) Filter by calling_number (partial match)

4) Filter by provider_number (exact match)

5) Filter by status (e.g., completed)

6) Filter for calls that have audio available

7) Filter for calls with transcript available

8) Filter by sentiment or emotion

9) Filter by disposition (comma-separated)

10) Filter by input_data partial match

11) Filter by cost_breakdown (partial match)

12) Duration range (per-call list; example for reference)

13) Combined filters (example)

14) POST example with multiple filters (combined)

Notes:
  • Use GET for simple queries and POST when your client prefers JSON bodies or needs to send complex filters.
  • Some filters (like 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).

Headers

token
string
required

API token for authentication

Query Parameters

page
integer
limit
integer
fromdate
string
todate
string
agent_id
integer
calling_number
string
provider_number
string
status
string

Response

Agents call history retrieved successfully

datalist
object[]
pagination
object
total_calls
integer
successful_calls
integer
total_duration
string