---
title: "Read a chat session's durable conversation"
method: GET
path: "/api/v1/sessions/{sessionId}/conversation"
tags: ["conversations"]
---

# Read a chat session's durable conversation

`GET /api/v1/sessions/{sessionId}/conversation`

## Path parameters

- `sessionId` string, required — Session identifier, e.g. project-1.

## Query parameters

- `beforeSequence` integer, nullable — Read items older than this conversation sequence. Omit for the newest page.
- `limit` integer, nullable — Maximum combined messages and activities to return. Defaults to 200.

## Response `200`

OK

- ConversationSnapshotResponse
  - `account` ConversationAccountPayload
    - `authMode` string
    - `planLabel` string
    - `reauthReason` string
    - `reauthRequiredAt` string, nullable
  - `activities` ConversationActivityResponse[], required
    - `activityKind` 'command' | 'file_change' | 'plan' | 'reasoning' | 'approval' | 'usage' | 'error' | 'system' | 'mcp_tool' | 'auto_review' | 'user_input', required
    - `createdAt` string, required
    - `detail` object
    - `id` string, required
    - `kind` 'activity', required
    - `providerItemId` string
    - `requestId` string
    - `revision` integer, required
    - `sequence` integer, required
    - `status` 'running' | 'completed' | 'failed' | 'cancelled' | 'pending' | 'resolved', required
    - `summary` string, required
    - `turnId` string
  - `capabilities` string[]
  - `compactedAt` string, nullable
  - `controller` 'connecting' | 'ready' | 'busy' | 'recovering' | 'stopped', required
  - `conversationId` string, required
  - `harness` string
  - `hasMoreBefore` boolean, required
  - `latestSequence` integer, required
  - `mcpServers` ConversationMCPServerPayload[]
    - `error` string
    - `failureReason` string
    - `name` string, required
    - `status` string, required
  - `messages` ConversationMessageResponse[], required
    - `createdAt` string, required
    - `id` string, required
    - `kind` 'message', required
    - `origin` 'human' | 'automation' | 'daemon' | 'provider', required
    - `revision` integer, required
    - `role` 'user' | 'assistant', required
    - `sequence` integer, required
    - `streaming` boolean, required
    - `text` string, required
    - `turnId` string
  - `mode` 'chat' | 'tui', required
  - `modelReroute` ConversationModelReroutePayload
    - `at` string, required
    - `fromModel` string
    - `providerTurnId` string
    - `reason` string
    - `toModel` string, required
  - `oldestSequence` integer
  - `rateLimits` ConversationRateLimitsPayload
    - `planLabel` string
    - `primaryResetsInSeconds` integer
    - `primaryUsedPercent` number, double, required
    - `secondaryResetsInSeconds` integer
    - `secondaryUsedPercent` number, double, required
    - `title` string
  - `sessionId` string, required
  - `settings` ConversationTurnSettingsPayload, required
    - `approvalMode` 'default' | 'accept-edits' | 'auto' | 'bypass-permissions'
    - `model` string
    - `reasoningEffort` string
  - `threadState` ConversationThreadStatePayload
    - `archivedAt` string, nullable
    - `closedAt` string, nullable
    - `status` 'active' | 'idle' | 'not_loaded' | 'system_error' | 'closed'
    - `waitingOn` string[]
  - `title` string
  - `turns` ConversationTurnResponse[], required
    - `completedAt` string, nullable
    - `diff` ConversationTurnDiffResponse
      - `files` ConversationDiffFileResponse[], required
        - `additions` integer, required
        - `deletions` integer, required
        - `oldPath` string
        - `path` string, required
        - `rolledBack` boolean
        - `status` 'added' | 'modified' | 'deleted' | 'renamed', required
      - `truncated` boolean
    - `errorMessage` string
    - `id` string, required
    - `plan` ConversationPlanResponse
      - `explanation` string
      - `steps` ConversationPlanStepResponse[], required
        - `status` 'pending' | 'in_progress' | 'completed', required
        - `text` string, required
    - `providerTurnId` string
    - `requestedAt` string, required
    - `rolledBack` boolean
    - `startedAt` string, nullable
    - `state` 'queued' | 'running' | 'completed' | 'interrupted' | 'failed', required
  - `usage` ConversationUsagePayload
    - `cachedTokens` integer, required
    - `contextUsed` integer, required
    - `contextWindow` integer, required
    - `cost` number, nullable
    - `currency` string
    - `inputTokens` integer, required
    - `outputTokens` integer, required
    - `totalTokens` integer, required

## Other responses

- `404` — Not Found
- `409` — Conflict
- `500` — Internal Server Error
- `501` — Not Implemented

---

[API](https://skmtc.net/composiohq/apis/agent-orchestrator-http-daemon.md) · [All operations](https://skmtc.net/composiohq/apis/agent-orchestrator-http-daemon/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/composiohq/agent-orchestrator-http-daemon/versions/be069344383f/schema)
