Get Call Logs
Retrieve call logs with filtering and pagination.
Endpoint
https://www.tabbly.io/dashboard/agents/endpoints/call-logs-v2
Get Call Logs
Fetches completed call history with transcripts, summaries, and recordings. In-progress calls and incomplete answered calls are excluded.
Endpoint
http
GET https://www.tabbly.io/dashboard/agents/endpoints/call-logs-v2Authentication
See Introduction. This is a GET endpoint. Send your API key using one of:
http
X-API-Key: YOUR_API_KEYOr as a query parameter:
http
GET /call-logs-v2?api_key=YOUR_API_KEY&organization_id=3282Pass organization_id as a query parameter — it must match the organization linked to your API key.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes* | Your API key (if not sent via X-API-Key header) |
organization_id |
string | Yes | Your organization ID |
date_from |
string | No | Start date filter (YYYY-MM-DD) |
date_to |
string | No | End date filter (YYYY-MM-DD) |
call_status |
string | No | Filter by exact status string, e.g. Call Answered, Not Answered, Voicemail |
campaign_id |
string | No | Filter by campaign ID |
use_agent_id |
string | No | Filter logs for a specific voice agent ID |
custom_identifiers |
string | No | Filter by the contact’s custom identifier string |
limit |
integer | No | Page size (default: 100) |
offset |
integer | No | Records to skip (default: 0) |
Example request
bash
curl -G "https://www.tabbly.io/dashboard/agents/endpoints/call-logs-v2" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "organization_id=3282" \
--data-urlencode "limit=50" \
--data-urlencode "offset=0"Response
Success (200)
json
{
"status": "success",
"message": "Call logs retrieved successfully",
"total_records": 150,
"filtered_records": 50,
"page_size": 50,
"page_offset": 0,
"data": [
{
"participant_identity": "camp-2904-4199969-c31493bea9",
"use_agent_id": "6355",
"called_to": "+912269858803",
"called_time": "2026-07-09 03:41:11",
"custom_identifiers": null,
"campaign_id": "2904",
"call_status": "Call Answered",
"call_duration": "16",
"start_time": "2026-07-09 03:41:11",
"end_time": "2026-07-09 03:41:27",
"call_transcript": "Transcript of the call...",
"call_summary": "Summary of the call...",
"call_sentiment": "7",
"call_json_output": "{\"summary\":\"...\",\"sentiment\":7}",
"call_recording_url": "https://tabblydatastorage.sfo3.cdn.digitaloceanspaces.com/merged-camp-2904-4199969-c31493bea9.mp3",
"total_call_cost": "0.020133333333333333",
"telco_pricing": "0.0092",
"agent_cost": 0,
"organization_id": "3282",
"call_direction": "outbound"
}
]
}| Field | Type | Description |
|---|---|---|
call_duration |
string | Duration in seconds |
call_sentiment |
string | Numeric sentiment score (e.g. "7"), not a text label |
custom_identifiers |
string | null | Custom identifier from contact; may be null |
agent_cost |
number | Agent cost for the call |
use_agent_id, campaign_id, organization_id |
string | Returned as strings |
Error responses
| HTTP status | When |
|---|---|
| 400 | Missing API key or organization_id, invalid date format |
| 401 | Invalid API key |
| 500 | Database connection failed |
Notes
- Results are sorted by ID descending (newest first).
- Only calls with a completed summary are returned (
details_added_cron = yesand non-emptycall_summary). call_recording_urlis built fromparticipant_identityusing the Tabbly CDN path shown above.call_directionisinboundoroutbound.