Skip to content

List campaign calls

GEThttps://api.voice-agent.gowajee.ai/api/campaign/:id/calls

Returns 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.

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.

curl "https://api.voice-agent.gowajee.ai/api/campaign/eac2489c-672c-455e-ab8c-4e0ecd18d7dc/calls?page=1" \
-H "X-API-Key: $GOWAJEE_API_KEY"
{
"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 }
}
]
}
}
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.

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.