List call logs
curl --request GET \
--url https://prod-platform-core-api.20x.business/api/v1/call-logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://prod-platform-core-api.20x.business/api/v1/call-logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://prod-platform-core-api.20x.business/api/v1/call-logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Logs
List call logs
Paginated call logs with full filtering
GET
/
call-logs
List call logs
curl --request GET \
--url https://prod-platform-core-api.20x.business/api/v1/call-logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://prod-platform-core-api.20x.business/api/v1/call-logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://prod-platform-core-api.20x.business/api/v1/call-logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Returns your tenant’s call logs, enriched with AI and billing data. This is the
main reporting endpoint — every filter below can be combined.
Filters
string
Outcome —
active, answered, missed, busy, failedstring
Channel —
VOICE, CHAT, WHATSAPP, SMSstring
Only calls handled by this agent
string
Only calls from this campaign
string
Only calls with this contact
string
Only calls to/from this phone number
string
Telephony provider that carried the call
string
Call direction — inbound or outbound
string
Originating number
string
Destination number
string
Free-text search across agent name and from/to numbers
string
Only calls where the agent used this tool
string
has_analytics or no_analyticsstring
ISO-8601 start of range, inclusive
string
ISO-8601 end of range, inclusive
boolean
default:"false"
Collapse repeat attempts to the same number down to the most recent call.
Useful for exports where campaign retries create duplicate rows
integer
default:"1"
1-based page number
integer
default:"50"
Items per page, maximum 100
curl "https://prod-comms-engine-api.20x.business/api/v1/call-logs?status=answered&fromDate=2026-06-01T00:00:00Z&pageSize=25" \
-H "Authorization: Bearer $AGENTIC_OS_API_KEY"
requests.get(
"https://prod-comms-engine-api.20x.business/api/v1/call-logs",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"status": "answered", "fromDate": "2026-06-01T00:00:00Z", "pageSize": 25},
)
await fetch(
"https://prod-comms-engine-api.20x.business/api/v1/call-logs?status=answered&pageSize=25",
{ headers: { Authorization: `Bearer ${API_KEY}` } },
);
Response
{
"results": [
{
"sessionId": "770e8400-e29b-41d4-a716-446655440000",
"channel": "VOICE",
"status": "COMPLETED",
"agentName": "Support Agent",
"customerNumber": "+14155551234",
"durationSec": 92,
"totalCost": "0.0412",
"currency": "USD",
"recordingUrl": "https://…"
}
],
"count": 1,
"next": null,
"previous": null
}
Related endpoints
| Purpose | Endpoint |
|---|---|
| Full detail incl. transcript | GET /call-logs/{sessionId}/full |
| Aggregate counts and durations | GET /call-logs/summary |
| Export up to 500 enriched rows | GET /call-logs/export |
| Allowed filter values | GET /call-logs/filter-options |

