List campaign calls
GET
https://api.voice-agent.gowajee.ai/api/campaign/:id/callsReturns every call attempt in a campaign, 100 per page, including calls not dialled yet (SCHEDULED). A recipient
called three times has three entries. Use this to reconcile results you may have missed from the
webhook.
Parameters
Section titled “Parameters”| Name | In | Type | Default | Description |
|---|---|---|---|---|
id |
path | string | The campaign ID. | |
page |
query | integer | 1 |
The page number, starting at 1. The page size is fixed at 100. |
Order: most recently updated first. EXPIRED calls, and calls whose data was deleted by the retention policy,
come after all the others, whatever their updatedAt.
Request
Section titled “Request”curl "https://api.voice-agent.gowajee.ai/api/campaign/eac2489c-672c-455e-ab8c-4e0ecd18d7dc/calls?page=1" \ -H "X-API-Key: $GOWAJEE_API_KEY"const res = await fetch( `https://api.voice-agent.gowajee.ai/api/campaign/${campaignId}/calls?page=1`, { headers: { 'X-API-Key': process.env.GOWAJEE_API_KEY } },);const { data } = await res.json();data = requests.get( f"https://api.voice-agent.gowajee.ai/api/campaign/{campaign_id}/calls", params={"page": 1}, headers={"X-API-Key": os.environ["GOWAJEE_API_KEY"]}, timeout=30,).json()["data"]Response
Section titled “Response”{ "success": true, "message": "Get Campaign calls successfully", "data": { "totalCalls": 1450, "totalPages": 15, "page": 1, "calls": [ { "id": "fc1c320d-d133-4d48-8118-5932d93149fd", "sessionId": "0f72ce05-5481-4bfe-bde4-6a675689822c", "callStatus": "COMPLETED", "agentStatus": "COMPLETED", "callStartedAt": "2026-10-01T02:11:58.472Z", "callEndedAt": "2026-10-01T02:13:58.592Z", "callDuration": "120.120", "callResult": { "version": "v2", "fixedAttr": { "callSummary": "ลูกค้ารับทราบยอดค้างชำระ และนัดชำระวันที่ 5 ตุลาคม", "funnel": { "funnelFlow": ["greeting", "inform_amount", "closing"], "value": "closing" } }, "postCallAnalyticsResult": { "promise_to_pay": { "type": "boolean", "required": true, "value": true } } }, "recipient": { "id": "5b1f0c9e-2d4a-4f6b-9a61-3c7e8d2f1a04", "tel": "0812345678", "customerName": "Somchai", "callAttempt": 1, "agentParams": { "customer_name": "Somchai", "amount_due": 1500 }, "campaignId": "eac2489c-672c-455e-ab8c-4e0ecd18d7dc", "organizationId": "8ee40f50-58de-4ae7-a55b-6bc83291b4be", "latestTerminatedAt": "2026-10-01T02:13:58.592Z", "personalDataPurgedAt": null, "createdAt": "2026-09-30T08:12:44.120Z", "updatedAt": "2026-10-01T02:13:59.001Z", "deletedAt": null }, "createdAt": "2026-10-01T00:00:00.000Z", "updatedAt": "2026-10-01T02:14:20.310Z", "dataExpired": { "audio": false, "personalData": false, "output": false } } ] }}{ "success": false, "statusCode": 404, "code": "CAMPAIGN_NOT_FOUND", "message": "Campaign not found", "errors": ["Campaign not found"]}{ "success": false, "statusCode": 400, "code": "VALIDATION_FAILED", "message": "page must be an integer of 1 or more", "errors": ["page must be an integer of 1 or more"]}| Field | Type | Description |
|---|---|---|
calls[].id |
string (UUID) | The call ID. |
calls[].sessionId |
string or null |
The same value as call.sessionId in the webhook. It is set once the call is dialled. |
calls[].callStatus |
string | See Call status. |
calls[].agentStatus |
string | See Agent status. |
calls[].callStartedAt |
string (UTC) or null |
When the conversation started. null if the call never connected. |
calls[].callEndedAt |
string (UTC) or null |
When the attempt ended. It is set for unanswered calls too. null while the call hasn’t ended, or if it was never dialled. |
calls[].callDuration |
numeric string or null |
Seconds with 3 decimals, as a string such as "120.120". Parse it with parseFloat. |
calls[].callResult |
object | The same shape as callResult in the webhook. It is {} when there is no result yet, never null. |
calls[].recipient |
object | The recipient this call belongs to. |
calls[].dataExpired |
object | See Data retention. |
The recording is not in this list. Get it per call with /record-url.
Errors
Section titled “Errors”The body is the usual error envelope.
| Status | code |
message |
Cause |
|---|---|---|---|
400 |
INVALID_ID |
id must be a valid UUID |
The id in the path isn’t a UUID. |
400 |
VALIDATION_FAILED |
page must be an integer of 1 or more |
page is 0, negative, a decimal, empty or not a number. Leave it out to get page 1. |
404 |
CAMPAIGN_NOT_FOUND |
Campaign not found |
Wrong id, or the campaign belongs to another organization. |