> ## Documentation Index
> Fetch the complete documentation index at: https://docs.botcadence.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get conversation messages

> Retrieve the transcript messages for a conversation

Returns transcript messages for chat, web voice, and voice conversations, plus conversation metadata (including session timing).

## Authentication

<ParamField header="X-API-Key" type="string" required>
  Project API key for this organization and project. Format: `bot_live_…`
</ParamField>

## Path parameters

<ParamField path="organization_id" type="string" required>
  Organization ID. Must match the API key.
</ParamField>

<ParamField path="project_id" type="string" required>
  Project ID. Must match the API key.
</ParamField>

<ParamField path="conversation_id" type="string" required>
  Conversation ID.
</ParamField>

## Query parameters

<ParamField query="skip" type="integer" default="0">
  Number of messages to skip.
</ParamField>

<ParamField query="limit" type="integer">
  Maximum messages to return (`1`–`1000`). Omit to return all remaining messages after `skip`.
</ParamField>

## Response

<ResponseField name="messages" type="array" required>
  Ordered transcript messages (includes agent details when available).
</ResponseField>

<ResponseField name="conversation" type="object" required>
  Conversation metadata, including session timing and handover summary fields when present.
</ResponseField>

## Errors

<ResponseField name="400" type="Bad Request">
  Invalid project or conversation ID format.
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Missing, invalid, or revoked API key.
</ResponseField>

<ResponseField name="403" type="Forbidden">
  API key is not authorized for this organization or project.
</ResponseField>

<ResponseField name="404" type="Not Found">
  Conversation not found.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -G "https://backend.botcadence.com/organizations/ORG_ID/projects/PROJECT_ID/conversations/CONV_ID/messages" \
    -H "X-API-Key: bot_live_YOUR_KEY" \
    --data-urlencode "skip=0" \
    --data-urlencode "limit=100"
  ```

  ```javascript JavaScript theme={null}
  const params = new URLSearchParams({ skip: "0", limit: "100" });

  const response = await fetch(
    `https://backend.botcadence.com/organizations/${organizationId}/projects/${projectId}/conversations/${conversationId}/messages?${params}`,
    { headers: { "X-API-Key": process.env.BOTCADENCE_API_KEY } }
  );
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.get(
      f"https://backend.botcadence.com/organizations/{organization_id}/projects/{project_id}/conversations/{conversation_id}/messages",
      headers={"X-API-Key": os.environ["BOTCADENCE_API_KEY"]},
      params={"skip": 0, "limit": 100},
  )
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "message": "Conversation messages retrieved successfully",
    "data": {
      "messages": [
        {
          "_id": "665f20000000000000000001",
          "role": "assistant",
          "content": "Hi Alex, thanks for taking my call.",
          "created_at": "2026-07-21T15:04:05Z"
        },
        {
          "_id": "665f20000000000000000002",
          "role": "user",
          "content": "Sure, what's this about?",
          "created_at": "2026-07-21T15:04:12Z"
        }
      ],
      "conversation": {
        "_id": "665f1a2b3c4d5e6f7a8b9c0d",
        "status": "completed",
        "customer_profile_id": "665e00000000000000000001"
      }
    },
    "status_code": 200
  }
  ```
</ResponseExample>
