Skip to main content
GET
List Calls
Read only Returns every call placed in your workspace, paginated and sorted by creation time (newest first). A duration sort orders by duration instead, and an export of one batch (export=true with batch_call_id) follows the lead file order. Each entry includes the call’s id, current status, agent_id, destination number (to_number), duration, end_reason, and when it was placed (called_time). Use this endpoint for lightweight call browsing, status polling against a known set of recent calls, and quick filtering by agent, call id, batch call id, outcome, or time range. ID filters support comma-separated multi-value input. Paginated results leave out retry attempts; send export=true or call_id to include them. Retry attempts carry batch_id: null. For the recording URL of one result, use Get Call Details. The list endpoint is the lightweight view for browsing and filtering many calls.

When to use this

  • Operational dashboards: render a recent-calls table with status, duration, and end reason.
  • Live monitoring: filter to the in-flight statuses (created, sent, initiated, received) to see calls that have not ended yet.
  • Per-agent health checks: filter by agent_id to spot agents producing unusually high failure rates.
  • Batch exports: pass batch_call_id with export=true to receive every matching call of one or more batches in a single JSON array, without pagination. Convert it to CSV on your side if you need a file.

Query parameters

Exports are limited to 5,000 matching calls. When columns is sent and leaves out both transcript and summary, the limit is 10,000. A request over the applicable limit returns 400 Bad Request with the matched row count and guidance to narrow the date range or add filters.

Filter IVR Calls And Lead Tags

  • is_ivr=true selects IVR calls, including conversational handoffs. Use false for non-IVR calls or omit it for all calls.
  • tags=priority,september selects workflow lead tags copied to call records when calls were placed.
  • tags_match=any matches at least one tag and is the default. Use tags_match=all to require every selected tag. Tags are normalized to lowercase.
These read-only filters can be combined with a date range and retried safely.

List Calls By Agent Type

Set agent_type to single_prompt, conversational_flow, speech_to_speech, or ivr. For example, GET /v1/calls?agent_type=conversational_flow selects calls handled by a Conversational Flow Agent. The existing is_ivr parameter remains supported. agent_type=ivr includes IVR menu calls and IVR handoffs, like is_ivr=true. The other three values require the call to retain an agent ID; older records without one do not match those filters. Omit both parameters to inspect all types.

Errors

  • 400 Bad Request is returned when one or more query parameters are invalid, including a status, type, call_direction or sentiment value outside its list (the message names the value and the allowed ones), or when an export exceeds the applicable row limit.
  • 401 Unauthorized is returned when the API key is missing or invalid.
  • 500 Internal Server Error is returned on an unexpected server-side failure.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

agent_id
string

Filter by agent ID: one ID or a comma-separated list (e.g., agent_abc,agent_def). Ignored when agent_version_id is sent, and replaced by agent_version_name when that name matches a version.

call_id
string

Filter by call ID - single or comma-separated list (e.g., call_abc,call_def)

batch_call_id
string

Filter by batch call ID - single or comma-separated list (e.g., batch_abc,batch_def). With export=true, every matching call of those batches is returned in one JSON array.

from
string

Filter by the workspace phone number on the call (the number dialled from, or for an inbound call the number that was called), as a partial match on its digits.

to
string

Filter by recipient phone number, as a partial match on the batch lead's number as stored. The value is not reduced to digits, and Indian lead numbers are stored as 91XXXXXXXXXX without +, so send digits only. Only batch calls carry a lead, so single calls and retry attempts never match this filter.

type
string

Filter by call type: one value or a comma-separated list of phone, web.

call_direction
string

Filter by call direction: one value or a comma-separated list of inbound, outbound.

agent_version_id
string

Filter batch calls by agent version, written as <agent_id>-<version_number> (for example agent_2g7Xy3tY53gRlp-3); one value or a comma-separated list. Only calls placed by a batch match. A value in any other format is ignored, and when no value is valid the whole filter is dropped. When this parameter is sent, agent_id is not applied.

Example:

"agent_2g7Xy3tY53gRlp-3"

agent_version_name
string

Search by agent version name (partial match, case-insensitive)

sentiment
string

Filter by user sentiment: one value or a comma-separated list of positive, neutral, negative, unknown.

start_date
string

Return calls created on or after the start of this day in UTC (ISO 8601). The value is converted to UTC first, then widened to 00:00:00 UTC of that day, so a time with an offset can move the day. Send a plain date (YYYY-MM-DD).

end_date
string

Return calls created on or before the end of this day in UTC (ISO 8601). The value is converted to UTC first, then widened to 23:59:59.999 UTC of that day, so a time with an offset can move the day. Send a plain date (YYYY-MM-DD).

duration_greater_than
number

Return calls longer than this many seconds.

Required range: x >= 0
duration_less_than
number

Return calls shorter than this many seconds.

Required range: x >= 0
duration_min
number

Lower bound of a duration range in seconds, inclusive. Applied only together with duration_max; sent alone it is ignored.

Required range: x >= 0
duration_max
number

Upper bound of a duration range in seconds, inclusive. Applied only together with duration_min; sent alone it is ignored.

Required range: x >= 0
page
integer

Page number (default: 1)

Required range: x >= 1
limit
integer
default:20

Results per page (default: 20)

Required range: 1 <= x <= 200
created_at
enum<string>

Sort by creation date

Available options:
asc,
desc
duration
enum<string>

Sort by call duration

Available options:
asc,
desc
status
string

Filter by call status: one value or a comma-separated list, for example completed,failed. Values: initiated, received, sent, did_not_pick, busy, failed, no_answer, completed, created, cancelled, retry_expired. An unknown value returns 400.

export
boolean

Set to true to return every matching call in one JSON array without pagination, up to the export row limit, including retry attempts. Omit it or send false to receive pages. For a batch export, the row limit counts the original calls only; retry attempts are added on top, so the array can be longer.

end_reason
string

Filter by why the call ended: one value or a comma-separated list of agent_disconnected, user_disconnected, user_busy, user_did_not_pick_up, invalid_phone_number, unallocated_phone_number, unknown, network_failure, voicemail_detected, user_unreachable, destination_forbidden, system_failure, system_at_capacity, insufficient_balance, agent_not_found, sip_auth_failed, sip_trunk_unreachable, spend_cap_reached, dnc_blocked. Unknown values are ignored; if no value is known, no calls match.

columns
string

Export only: comma-separated list of column keys being exported (e.g. "duration,status,end_reason"). Lets the server skip fetching heavy columns nobody asked for, which raises the export row limit. Omit to fetch everything, as before.

is_ivr
boolean

True for IVR calls including handoffs, false for other calls; omit for all.

tags
string

Comma-separated workflow lead tags copied to calls when placed.

Example:

"priority,september"

tags_match
enum<string>
default:any

Whether calls must match any or all supplied tags.

Available options:
any,
all
agent_type
enum<string>

Filter by agent type. ivr is equivalent to is_ivr=true and includes IVR handoffs. Other types require an agent ID retained on the call; calls without one do not match those types.

Available options:
single_prompt,
conversational_flow,
speech_to_speech,
ivr

Response

Calls returned successfully.

id
string
required

Signed call ID

Example:

"call_abc123"

agent_id
string | null

Agent that handled the call.

Example:

"agent_2g7Xy3tY53gRlp"

batch_id
string | null

Signed batch ID of the batch the call belongs to; null for single calls and for retry attempts.

to_number
string | null

Destination number as recorded on the call: the number as sent for a single call, and the lead's number as stored for a batch call, where an Indian number appears as 91XXXXXXXXXX without +.

Example:

"+919876543210"

phone_number_id
string | null

ID of the workspace phone number the call was placed from.

Example:

"phn_abc123"

called_time
string<date-time>
duration
string | null

Call duration in seconds, serialized as a string (the column is a 64-bit integer); null until a duration is recorded.

Example:

"42"

status
string
initiated_time
string
end_reason
string

Why the call ended; unknown until the call ends. One of agent_disconnected, user_disconnected, user_busy, user_did_not_pick_up, invalid_phone_number, unallocated_phone_number, unknown, network_failure, voicemail_detected, user_unreachable, destination_forbidden, system_failure, system_at_capacity, insufficient_balance, agent_not_found, sip_auth_failed, sip_trunk_unreachable, spend_cap_reached, dnc_blocked.

postcallanalysis
object | null

Post-call analysis fields extracted for this call, keyed by field name. An empty object until analysis has run.

llm_name
string | null

Display name of the language model used on the call.

Example:

"gpt-4o"

voice_model_name
string | null

Display name of the voice used on the call.

recording_sas_url
string | null

Time-limited link to the recording. Absent from the response unless export=true.