Call logs
List your calls and read each call's summary and transcript.
A call log records one call that ran: its timing, status, summary and transcript. Call logs are read-only. To get a call's audio, pass its call_id as call_log_id to recordings.
| Endpoint | Request |
|---|---|
| List call logs | GET/v1/call-logs |
| Get a call log | GET/v1/call-logs/{id} |
The call log object
Most fields are in snake_case. agentName, contactPhoneNumber, directCallId, hasTranscript and transcriptId are in camelCase.
Attributes
call_idstringrequiredcall.id.provider_call_idstring | nullnull. Quote it when you ask about a call.directCallIdstringcontactPhoneNumberstringconversation_idstring | nullnull.agent_idstring | nullagentNamestringdurationinteger | nullstatusstring | nullended and failed mean it has finished.ended_reasonstring | nullcustomer-ended-call. See Ended reasons.start_timestring | nullnull when unknown.end_timestring | nullsummarystring | nulloutcome_summarystring | nullsummary when there is no analysis.key_pointsstring[] | nullnext_stepsstring[] | nullnull.ai_summary_generated_atstring | nullupdated_at when the call has an analysis. null when it doesn't.log_typestringrequiredAI Call.hasTranscriptbooleanrequiredtranscriptIdstring | nullrecording_urlnullrequirednull. Use recordings instead.stereo_recording_urlnullrequirednull. Use recordings instead.created_atstringrequiredupdated_atstringrequiredEnded reasons
ended_reason is descriptive text, and the set of values can change. A reason that would name a specific voice or phone company uses the word provider instead, such as provider-failed-to-connect-call.
List call logs
/v1/call-logsread keyReturns your call logs, most recent call first. This route uses page and limit, not offset.
Query parameters
pageintegerdefault 1limitintegerdefault 50agent_idstringdirectCallIdstringcallId from POST /v1/calls.statusstringstart_datestringend_datestringSend dates as a full ISO 8601 time with a timezone, such as 2026-10-31T12:00:00Z. A date with no time means the start of that UTC day. A value the database can't read returns 400.
A page past the last result returns an empty list with the real total and totalPages.
Errors
| Status | When |
|---|---|
400 | A paging value, an ID or a date is invalid. details.issues names the field. |
curl "https://backend.synthesys.app/api/v1/call-logs?limit=10&start_date=2026-10-01T00:00:00Z" \
-H "SYNTH_API_KEY: YOUR_API_KEY"{
"success": true,
"data": [
{
"call_id": "1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
"provider_call_id": "2e4f6a8c-1b3d-4f5a-9c7e-0d2b4f6a8c1e",
"directCallId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"contactPhoneNumber": "+12025550123",
"conversation_id": null,
"agent_id": "6f1d2a34-8b7c-4e21-9a10-3c5d7e9f1b20",
"agentName": "Sales Agent",
"duration": 184,
"status": "ended",
"ended_reason": "customer-ended-call",
"start_time": "2026-10-31T14:02:16.000Z",
"end_time": "2026-10-31T14:05:20.000Z",
"summary": "Jane confirmed her order and asked for a follow-up email.",
"outcome_summary": "Jane confirmed her order and asked for a follow-up email.",
"key_points": ["order confirmation", "follow-up email"],
"next_steps": null,
"ai_summary_generated_at": "2026-10-31T14:05:31.000Z",
"log_type": "AI Call",
"hasTranscript": true,
"transcriptId": "7e6d5c4b-3a29-4180-9f7e-6d5c4b3a2918",
"recording_url": null,
"stereo_recording_url": null,
"created_at": "2026-10-31T14:02:13.000Z",
"updated_at": "2026-10-31T14:05:31.000Z"
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 10,
"totalPages": 1
}
}Get a call log
/v1/call-logs/{id}read keyReturns one call log with its transcript. data has three keys.
Path parameters
idstringrequiredcall_id.Response data
callLogobjectrequiredtranscriptTextobject[]role of user or assistant and a message. Empty when there is no transcript.messagesobject[]transcriptText has content.Each item in messages
idstringrequiredcall_transcript_idstringrequiredmessage_orderintegerrequiredrolestringrequiredmessage_textstring | nulltimestampstring | nullend_timestampstring | nullduration_msinteger | nullseconds_from_startnumber | nullcreated_atstringrequiredupdated_atstringrequiredcreated_at.Errors
| Status | When |
|---|---|
400 | The ID isn't a valid UUID. |
404 | No call log with this ID exists on your account. error is Call log not found. |
curl https://backend.synthesys.app/api/v1/call-logs/1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d \
-H "SYNTH_API_KEY: YOUR_API_KEY"{
"success": true,
"data": {
"callLog": {
"call_id": "1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
"provider_call_id": "2e4f6a8c-1b3d-4f5a-9c7e-0d2b4f6a8c1e",
"directCallId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"contactPhoneNumber": "+12025550123",
"conversation_id": null,
"agent_id": "6f1d2a34-8b7c-4e21-9a10-3c5d7e9f1b20",
"agentName": "Sales Agent",
"duration": 184,
"status": "ended",
"ended_reason": "customer-ended-call",
"start_time": "2026-10-31T14:02:16.000Z",
"end_time": "2026-10-31T14:05:20.000Z",
"summary": "Jane confirmed her order and asked for a follow-up email.",
"outcome_summary": "Jane confirmed her order and asked for a follow-up email.",
"key_points": ["order confirmation", "follow-up email"],
"next_steps": null,
"ai_summary_generated_at": "2026-10-31T14:05:31.000Z",
"log_type": "AI Call",
"hasTranscript": true,
"transcriptId": "7e6d5c4b-3a29-4180-9f7e-6d5c4b3a2918",
"recording_url": null,
"stereo_recording_url": null,
"created_at": "2026-10-31T14:02:13.000Z",
"updated_at": "2026-10-31T14:05:31.000Z"
},
"transcriptText": [
{ "role": "assistant", "message": "Hi Jane, I am calling about your order." },
{ "role": "user", "message": "Yes, thanks for calling." }
],
"messages": []
}
}