Skip to main content
GET
List workspace conversations

Authorizations

Authorization
string
header
required

API key issued via POST /v1/api-keys. Prefix is zsk_. Pass as Authorization: Bearer zsk_…. Scopes are enforced per key.

Query Parameters

branch_id
string

Restrict to conversations whose call ran on this branch

Example:

"agtbrch_abc123"

date_from
string

Inclusive lower bound on the call start time (ISO-8601)

Example:

"2026-05-01T00:00:00Z"

date_to
string

Inclusive upper bound on the call start time (ISO-8601)

Example:

"2026-05-31T23:59:59Z"

status
enum<string>

Eval verdict surfaced under the Status filter chip

Available options:
successful,
failed,
unknown
direction
enum<string>

Call origin — inbound = caller-initiated, outbound = agent-initiated. Not yet stored on the conversation row (deferred per Phase 1 cut); accepted to keep client URLs stable and is currently a no-op.

Available options:
inbound,
outbound
duration_min_sec
number

Inclusive lower bound on duration in seconds

Required range: x >= 0
Example:

30

duration_max_sec
number

Inclusive upper bound on duration in seconds

Required range: x >= 0
Example:

600

language
string

BCP-47 language tag from the call client overrides

Maximum string length: 35
Example:

"en"

user_id
string

Filter by the dispatching session user (matches conversation.created_by_id). Maps to ElevenLabs user_id.

Maximum string length: 140
Example:

"user_abc123"

tag_labels
string[]

Filter to conversations carrying every listed tag label (AND across the list). Labels — not tag-row ids — are the user-facing identity of a tag: conversation_tag stores one row per (conversation, label), so the same label across N conversations has N distinct row ids; matching by label is what users expect. Pass labels as repeated query params (?tag_labels=a&tag_labels=b); the comma-separated form is intentionally NOT accepted because labels may legitimately contain commas (e.g. billing, urgent).

Example:
channel
enum<string>

Transport the call came in on. Set by the agent runtime at session start; rows with a NULL channel column are excluded from the match (legacy / fixture rows that pre-date the column stay invisible to this filter rather than being arbitrarily bucketed).

Available options:
web,
telephony,
whatsapp
modality
enum<string>

Modality of the session — voice for VAD-driven calls, text for chat-only sessions. Rows with a NULL modality column are excluded.

Available options:
voice,
text
environment
enum<string>

Deployment environment the session ran against. Migration 0018 backfilled existing rows to production; rows that legitimately have a NULL environment (e.g. unmigrated test fixtures) are excluded from the match.

Available options:
production,
staging
summary_mode
enum<string>

Whether to include the post-call summary text on each item. Defaults to exclude so list payloads stay small — use include when the table needs to surface summary snippets without a detail-page roundtrip per row.

Available options:
exclude,
include
q
string

Free-text search query — case-insensitive substring match on the post-call summary. Title is not yet populated on conversation rows so summary is the only meaningful text field today.

Maximum string length: 280
Example:

"pricing"

cursor
string

Opaque pagination cursor returned by the previous page (nextCursor)

limit
number

Page size (default 20, max 100)

Required range: 1 <= x <= 100
Example:

20

Response

200 - undefined