---
title: "Get normalized conversation"
method: GET
path: "/agent/conversations/{conversation_id}"
tags: ["agent"]
---

# Get normalized conversation

`GET /agent/conversations/{conversation_id}`

Retrieve a conversation directly by conversation ID in Warp's
normalized task/message format.

## Path parameters

- `conversation_id` string, required

## Response `200`

Normalized conversation

- ConversationResponse
  - `conversation_id` string, required — Unique identifier for the conversation
  - `steps` ConversationStep[], required — Root steps in the conversation
    - `id` string, required — Unique identifier for the step
    - `description` string — Original instruction or delegated work description for the step
    - `summary` string — Summary of the work completed for the step
    - `started_at` string, date-time — Earliest transcript message timestamp contained in this step or any nested step (RFC3339)
    - `completed_at` string, date-time — Latest transcript message timestamp contained in this step or any nested step (RFC3339)
    - `messages` ConversationMessage[], required — Ordered normalized messages for this step
      - `message_ids` string[] — Underlying transcript message IDs grouped into this normalized message
      - `request_id` string — Request identifier shared by transcript messages from the same request, when available
      - `role` 'user' | 'assistant' | 'tool' | 'system', required — Role of the normalized message
      - `timestamp` string, date-time — Timestamp of the first transcript message included in this normalized message (RFC3339)
      - `content` ConversationContentBlock[], required
        - union
          - TextContentBlock
            - `type` 'text', required
            - `message_id` string — Underlying transcript message ID that produced this content block, when available
            - `text` string, required — Plain text content
          - ActionContentBlock
            - `type` 'action', required
            - `message_id` string — Underlying transcript message ID that produced this content block, when available
            - `id` string, required — Unique identifier for the action
            - `category` 'command' | 'files' | 'search' | 'integration' | 'documents' | 'computer' | 'review' | 'skill', required — High-level category of an action performed during the conversation
            - `name` string, required — Public action name, such as run_command or edit_files
            - `input` object, required — Curated public input for this action. This object is owned by the API and is not a raw internal tool payload.
          - ActionResultContentBlock
            - `type` 'action_result', required
            - `message_id` string — Underlying transcript message ID that produced this content block, when available
            - `action_id` string, required — Identifier of the corresponding action
            - `category` 'command' | 'files' | 'search' | 'integration' | 'documents' | 'computer' | 'review' | 'skill', required — High-level category of an action performed during the conversation
            - `name` string, required — Public action name matching the corresponding action block
            - `state` 'running' | 'completed' | 'failed' | 'denied', required — State of an action result
            - `output` object, required — Curated public result for this action. Large or binary internal payloads should be summarized rather than passed through raw.
          - EventContentBlock
            - `type` 'event', required
            - `message_id` string — Underlying transcript message ID that produced this content block, when available
            - `name` string, required — Event type for intentionally exposed non-core transcript events
            - `data` object, required — Minimal structured metadata for the event
    - `steps` ConversationStep[], required — Nested delegated work performed as part of this step

## Other responses

- `400` — Missing conversation ID
- `401` — Authentication required
- `403` — No permission to access conversation
- `404` — Conversation not found
- `422` — Conversation format is not yet supported by the normalized endpoint (error_code: operation_not_supported)

---

[API](https://skmtc.net/warp/apis/oz-agent-api.md) · [All operations](https://skmtc.net/warp/apis/oz-agent-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/warp/oz-agent-api/versions/97be876c33e3/schema)
