For Developers
Calling

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.

EndpointRequest
List call logsGET/v1/call-logs
Get a call logGET/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_idstringrequired
The call log's UUID. Webhook events use the same value as call.id.
provider_call_idstring | null
The voice provider's ID for this call, or null. Quote it when you ask about a call.
directCallIdstring
The id of the call this log belongs to, for calls placed with POST /v1/calls. Left out otherwise.
contactPhoneNumberstring
The contact's phone number. Left out when unknown.
conversation_idstring | null
Reserved. Currently null.
agent_idstring | null
The agent on the call.
agentNamestring
The agent's display name. Left out when unknown.
durationinteger | null
Call length in seconds.
statusstring | null
The call's status. ended and failed mean it has finished.
ended_reasonstring | null
Why the call ended, such as customer-ended-call. See Ended reasons.
start_timestring | null
When the call started, as an ISO 8601 timestamp. null when unknown.
end_timestring | null
When the call ended.
summarystring | null
A summary of the call.
outcome_summarystring | null
The AI analysis summary, or summary when there is no analysis.
key_pointsstring[] | null
Topics or keywords from the analysis.
next_stepsstring[] | null
Reserved for suggested next steps. Currently null.
ai_summary_generated_atstring | null
The same value as updated_at when the call has an analysis. null when it doesn't.
log_typestringrequired
The kind of log. Currently always AI Call.
hasTranscriptbooleanrequired
Whether a transcript exists for this call.
transcriptIdstring | null
The transcript's UUID.
recording_urlnullrequired
Always null. Use recordings instead.
stereo_recording_urlnullrequired
Always null. Use recordings instead.
created_atstringrequired
When the log was created, as an ISO 8601 timestamp.
updated_atstringrequired
When the log last changed, as an ISO 8601 timestamp.

Ended 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

GET/v1/call-logsread key

Returns your call logs, most recent call first. This route uses page and limit, not offset.

Query parameters

pageintegerdefault 1
The page to return, from 1 to 1,000,000.
limitintegerdefault 50
Results per page, from 1 to 100.
agent_idstring
Only return calls for this agent's UUID.
directCallIdstring
Only return the log for this callId from POST /v1/calls.
statusstring
Only return calls with exactly this status, up to 50 characters.
start_datestring
Only return calls that started at or after this time. A log with no start time is dated by when it was created.
end_datestring
Only return calls that started at or before this time. A log with no start time is dated by when it was created.

Send 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

StatusWhen
400A paging value, an ID or a date is invalid. details.issues names the field.
Request
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"
Response
{
  "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

GET/v1/call-logs/{id}read key

Returns one call log with its transcript. data has three keys.

Path parameters

idstringrequired
The call log's call_id.

Response data

callLogobjectrequired
transcriptTextobject[]
The transcript as a list of turns. Each has a role of user or assistant and a message. Empty when there is no transcript.
messagesobject[]
Timed transcript messages, in order. Can be empty even when transcriptText has content.

Each item in messages

idstringrequired
The message's UUID.
call_transcript_idstringrequired
The transcript's UUID.
message_orderintegerrequired
The message's position in the transcript.
rolestringrequired
Who spoke.
message_textstring | null
What was said.
timestampstring | null
When the message started.
end_timestampstring | null
When the message ended.
duration_msinteger | null
Message length in milliseconds.
seconds_from_startnumber | null
Seconds from the start of the call.
created_atstringrequired
When the message was stored.
updated_atstringrequired
Same value as created_at.

Errors

StatusWhen
400The ID isn't a valid UUID.
404No call log with this ID exists on your account. error is Call log not found.
Request
curl https://backend.synthesys.app/api/v1/call-logs/1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d \
  -H "SYNTH_API_KEY: YOUR_API_KEY"
Response
{
  "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": []
  }
}