Skip to main content
GET
List call logs

Authorizations

X-CEKURA-API-KEY
string
header
required

API Key Authentication. It should be included in the header of each request.

Query Parameters

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

timestamp_from
string<date-time>

Filter results from this timestamp (e.g. 2025-01-01T00:00:00Z) Example: 2025-01-01T00:00:00Z

timestamp_to
string<date-time>

Filter results to this timestamp (e.g. 2025-01-31T23:59:59Z) Example: 2025-01-31T23:59:59Z

call_ids
string

Comma-separated list of call log IDs to filter by. Example: "5181749,5181752"

Minimum string length: 1
agent_id
integer

Filter by agent ID. Either agent_id or project_id should be provided. Example: 2142

project_id
integer

Filter by project ID. Either agent_id or project_id should be provided. Required when using an organization-level API key to scope results to a specific project. Example: 1376

assistant_id
string

Filter by assistant ID Example:

  • "asst_1234567890"
  • "agent_xyz789"
Minimum string length: 1
filters_v2
string

Advanced JSON filters using CallLogQueryFilter format (same as dashboard filters). Supports nested AND/OR conditions, field comparisons, and related field filtering.

Example - Simple filter: {"field": "success", "op": "eq", "value": true}

Example - AND conditions: {"operator": "and", "conditions": [{"field": "success", "op": "eq", "value": true}, {"field": "duration", "op": "gte", "value": 60}]}

Example - OR conditions: {"operator": "or", "conditions": [{"field": "call_ended_reason", "op": "eq", "value": "completed"}, {"field": "call_ended_reason", "op": "eq", "value": "hangup"}]}

Supported fields: success, duration, call_id, timestamp, created_at, call_ended_reason, customer_number, etc. Supported operators: eq, neq, gt, gte, lt, lte, contains, startswith, in, isnull

Minimum string length: 1
ql
string

Select which fields each row carries by naming the ones you will read: {id,call_id,timestamp,success,call_ended_reason,metrics}.

MCP clients get one compact row shape whichever credential they connected with. transcript, transcript_object and evaluation (per-metric explanations) are left out of it unless ql names them; metrics already carries every metric's score. An exclusion ({-metadata}) or {*} starts from the whole row shape and so puts those three back — name the fields you want instead of the ones you don't. Per-call detail that is never on a list row — rubric, user-generated transcript, recording, waveform, dynamic variables — comes from the retrieve endpoint. Naming a field the row shape does not have returns 400.

Minimum string length: 1
include_count
boolean

When true, the response includes count — how many call logs match the filters — and count_capped. The count is capped at 10000; count_capped: true means the true total exceeds the cap.

Response

200 - application/json
results
object[]
required
count
integer

Only present when the request passes include_count=true. Capped at 10000: when count_capped is true, the true total exceeds 10000.

Example:

123

count_capped
boolean

Only present alongside count.

Example:

false

next
string<uri> | null
Example:

"https://api.cekura.ai/example/v1/example-external/?page=4"

previous
string<uri> | null
Example:

"https://api.cekura.ai/example/v1/example-external/?page=3"