GET /conversations
Lists conversations, newest first, with optional text search and structured filters.Query parameters
string
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 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 theoutcome 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, status — open / 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.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.