Skip to main content
These endpoints read individual conversations: list and filter them, pull a window of messages around a specific turn, read outcome step scores, and inspect a conversation’s world state.

GET /conversations

Lists conversations, newest first, with optional text search and structured filters.

Query parameters

Free-text search over conversation summaries and message bodies. When search is the only filter, results may be relevance-ranked (see search_mode below).
string
Restrict to conversations assigned to one use-case cluster node (see Analytics).
string
Restrict to conversations from one end user.
string
default:"all"
One of all, 1h, 24h, 3d, 7d, 30d, 90d. Filters on the conversation’s last activity.
string
default:"all"
One of all, development, staging, production.
string
Keyword(s) matched case-insensitively against the conversation’s world-state content (segment slots and carried-in durable profile slots). Comma-separated terms are ANDed. Free text, not key=value. Maximum 200 characters.
string
default:"any"
any, positive, or negative. positive means the conversation’s blended segment outcome score is high and no frustration was detected; negative means a low blended score or a frustration detection.
integer
default:"20"
1–100.
integer
default:"0"
0–10,000.

Response fields

array
Each row has conversation_id, summary, message_count, first_timestamp, last_timestamp, cluster_id and cluster_name (or null), and environment.
string
keyword or hybrid. hybrid runs only when search is set with no structured filters and semantic search is available; otherwise the deterministic keyword path serves the request.
object
limit, offset, total, has_more.
When search_mode is hybrid, pagination.total is the size of the relevance-ranked candidate pool, not an exact corpus count. Branch on search_mode before treating total as an exact figure — in keyword mode it is exact.

Example

GET /conversations/:id/context

Returns a window of parsed messages centered on one message index. Use it to read the turns around a search hit or a signal’s key turn.

Query parameters

integer
Zero-based index of the center message. Defaults to the middle of the conversation. Out-of-range values are clamped to the last message.
integer
default:"2"
Messages to include on each side of the center, 1–5.

Response fields

string
integer
Total messages stored for the conversation.
string
One-line conversation summary; empty string if none has been generated yet.
object
center_index, from_index, to_index, and messages[]. Each message has index, role, content, tool_calls[] (id, name, input — input is a truncated string), tool_results[] (tool_use_id, content — truncated, is_error), and timestamp.

Example

GET /conversations/:id/step-scores

Returns outcome step scores for one conversation: per-segment score curves and a weighted rollup of the segments’ closing scores. These are the scores behind the outcome filter on GET /conversations.

Response fields

string
array
One entry per scored thread segment, scoped to that segment’s newest scoring pass. Each has segment_id, thread_id, segment_status_at_scoring, segment_unit_count, scoring metadata (member_hash, model_id, feature_mode, scored_at), failure_type ({failure_type, score} or null), and steps[] — each step with unit_id, message_index, unit_index, node_type, progress_score, first_bad_step_probability, first_bad_step_reason, graph_id, node_index.
object
Weighted blend of the segments’ closing scores: blended_score, segment_count, weighted_segment_count, total_weight. null until the conversation has segment scores that carry weight.
legacy fields
Whole-conversation fields populated only for conversations scored before per-segment scoring existed; for new conversations they are null and steps is empty. Read segments and rollup instead.

Example

GET /conversations/:id/world-state

Returns the conversation’s world state: tracked facts (slots), open and resolved threads, the per-message state event log, and the end user’s durable cross-conversation profile. This is the same data as the World State view on the conversation detail page.
The world-state endpoints return camelCase field names (hasData, segmentIndex, …), unlike the snake_case used by the rest of the Data API.

Query parameters

string
Set to 1 to return segments and events as empty arrays and add segmentSummaries — per-segment slot summaries (segmentIndex, durableCount, topSlots). Cheaper for a quick existence check.
integer
default:"2000"
Maximum state events to return, 1–5,000.

Response fields

boolean
false when no world state has been built for the conversation yet (world state is built within minutes of ingest).
string | null
The end user the conversation belongs to, when known.
object | null
The user’s current cross-conversation profile: slots (map of slot key to {value, source, ...}), updatedAt, slotCount.
object | null
Durable slots that were loaded at the start of this conversation.
array
One entry per thread segment: segmentIndex, segmentId, startMsgIdx, endMsgIdx, slots, carryIn, openThreads[] (id, statusopen / resolved / cancelled, summary, goal, timeline[], subgoals[]), and slotCounts (durable, segmentLocal, total).
array
Per-message state changes: eventId, segmentIndex, segmentId, msgIndex, blockIndex, eventType, slotKey, oldValue, newValue, provenance.
object
eventCount, segmentCount, lastUpdatedAt.

Example

GET /conversations/:id/world-state/replay

Returns the folded state frame by frame, one frame per message — the data behind the state replay view.
integer
default:"0"
Number of messages to replay through; 0 replays the full history.
string
default:"frames"
frames returns one folded frame per message, capped at 5,000 frames. fold_inputs returns raw keyframes plus event deltas for client-side folding, with no frame cap.
With format=frames, the response is {hasData, messageCount, frames[]} where each frame has msgIndex, segmentIndex, blockIndex, slots, slotsJson (the slot map serialized as a string), openThreads, and hasSnapshot (true when state changed at that message).

GET /conversations/:id/world-state/snapshot

Returns the folded slot state at one position.
integer
Message index to snapshot at.
integer
Content-block index within the message.
integer
Optional segment scope.

Next steps

  • Search — find the message index to center a context window on.
  • Data model — what conversations, segments, slots, and threads mean.
  • Dashboard: Conversations — the same data in the Full Trace and World State views.