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

# Batch Get Messages

> Retrieve multiple messages by their entry IDs

```
POST /openapi/memorylake/api/v3/conversations/{conversationId}/messages/batch-get
```

Retrieves multiple messages from a conversation in a single request. Pass a list of message entry IDs and receive the corresponding messages. This is more efficient than calling Get Message individually when you need several specific messages.

<Note>
  **Permission required:** `project:conv_read`
</Note>

### Path Parameters

<ParamField path="conversationId" type="string" required>
  Conversation identifier
</ParamField>

### Request Body

<ParamField body="entry_ids" type="array" required>
  List of message entry IDs to retrieve. Maximum 100 entries per request.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://app.memorylake.ai/openapi/memorylake/api/v3/conversations/conv_7d2e3f4a5b6c7d8e/messages/batch-get' \
    -H 'Authorization: Bearer sk_xxxxxx' \
    -H 'Content-Type: application/json' \
    -d '{
      "entry_ids": [
        "msg_3f4a5b6c7d8e9f0a",
        "msg_9e4b2c3d5f6a7b8c"
      ]
    }'
  ```
</RequestExample>

### Response

<ResponseField name="data" type="array">
  Array of message objects matching the requested entry IDs

  <Expandable title="Message object">
    <ResponseField name="id" type="string">Unique message identifier</ResponseField>

    <ResponseField name="content" type="array">
      Array of content blocks

      <Expandable title="Content block">
        <ResponseField name="block_type" type="string">Block type: `TEXT`, `FILE`, `IMAGE`, `THINKING`, `TOOL_USE`, `TOOL_RESULT`</ResponseField>
        <ResponseField name="text" type="string">Text content (present when `block_type` is `TEXT`)</ResponseField>
        <ResponseField name="uri" type="string">Drive resource URI (present when `block_type` is `IMAGE`)</ResponseField>
        <ResponseField name="mime_type" type="string">MIME type (present when `block_type` is `IMAGE`)</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="metadata" type="object">Arbitrary key-value metadata attached to the message</ResponseField>
    <ResponseField name="timestamp" type="string">Caller-provided timestamp (ISO 8601)</ResponseField>
    <ResponseField name="conversation_id" type="string">ID of the conversation this message belongs to</ResponseField>
    <ResponseField name="sequence_no" type="integer">Position of this message within the conversation</ResponseField>
    <ResponseField name="actor_id" type="string">ID of the actor who sent this message</ResponseField>
    <ResponseField name="actor_type" type="string">Type of the actor: `HUMAN` or `ASSISTANT`</ResponseField>
    <ResponseField name="created_at" type="string">Creation timestamp</ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json Success (200) theme={null}
  {
    "success": true,
    "data": [
      {
        "id": "msg_3f4a5b6c7d8e9f0a",
        "content": [
          {
            "block_type": "TEXT",
            "text": "Can you summarize last quarter's revenue numbers?"
          }
        ],
        "metadata": {},
        "timestamp": "2025-06-01T14:10:00Z",
        "conversation_id": "conv_7d2e3f4a5b6c7d8e",
        "sequence_no": 3,
        "actor_id": "actor_user_jane",
        "created_at": "2025-06-01T14:10:05Z"
      },
      {
        "id": "msg_9e4b2c3d5f6a7b8c",
        "content": [
          {
            "block_type": "TEXT",
            "text": "Q1 revenue was $12.5M, up 15% from the previous quarter."
          }
        ],
        "metadata": {},
        "timestamp": "2025-06-01T14:10:30Z",
        "conversation_id": "conv_7d2e3f4a5b6c7d8e",
        "sequence_no": 4,
        "actor_id": "actor_assistant_v2",
        "created_at": "2025-06-01T14:10:32Z"
      }
    ]
  }
  ```
</ResponseExample>
