# Messages

## Create Message

**post** `/messages`

Create Message

### Body Parameters

- `content: TaskMessageContent`

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

- `task_id: string`

- `created_at: optional string`

  Optional timestamp for the message. Workflow callers should pass workflow.now() (Temporal's deterministic monotonic clock) so that two awaited messages.create calls from the same workflow are guaranteed to have monotonic timestamps regardless of HTTP scheduling at the server. If omitted, the server's wall clock at insert time is used.

- `streaming_status: optional "IN_PROGRESS" or "DONE"`

  - `"IN_PROGRESS"`

  - `"DONE"`

### Returns

- `TaskMessage object { content, task_id, id, 3 more }`

  Represents a message in the agent system.

  This entity is used to store messages in MongoDB, with each message
  associated with a specific task.

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

### Example

```http
curl http://localhost:5003/messages \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY" \
    -d '{
          "content": {
            "author": "user",
            "content": "content",
            "type": "text"
          },
          "task_id": "task_id"
        }'
```

#### Response

```json
{
  "content": {
    "author": "user",
    "content": "content",
    "attachments": [
      {
        "file_id": "file_id",
        "name": "name",
        "size": 0,
        "type": "type"
      }
    ],
    "format": "markdown",
    "style": "static",
    "type": "text"
  },
  "task_id": "task_id",
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "streaming_status": "IN_PROGRESS",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## List Messages

**get** `/messages`

List messages for a task with offset-based pagination.

For cursor-based pagination with infinite scroll support, use /messages/paginated.

### Query Parameters

- `task_id: string`

  The task ID

- `filters: optional string`

  JSON-encoded array of TaskMessageEntityFilter objects.

  Schema: {
  "$defs": {
  "DataContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "data",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `data`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "data": {
  "anyOf": [
  {
  "additionalProperties": true,
  "type": "object"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The contents of the data message.",
  "title": "Data"
  }
  },
  "title": "DataContentEntityOptional",
  "type": "object"
  },
  "FileAttachmentEntity": {
  "description": "Represents a file attachment in messages.",
  "properties": {
  "file_id": {
  "description": "The unique ID of the attached file",
  "title": "File Id",
  "type": "string"
  },
  "name": {
  "description": "The name of the file",
  "title": "Name",
  "type": "string"
  },
  "size": {
  "description": "The size of the file in bytes",
  "title": "Size",
  "type": "integer"
  },
  "type": {
  "description": "The MIME type or content type of the file",
  "title": "Type",
  "type": "string"
  }
  },
  "required": [
  "file_id",
  "name",
  "size",
  "type"
  ],
  "title": "FileAttachmentEntity",
  "type": "object"
  },
  "MessageAuthor": {
  "enum": [
  "user",
  "agent"
  ],
  "title": "MessageAuthor",
  "type": "string"
  },
  "MessageStyle": {
  "enum": [
  "static",
  "active"
  ],
  "title": "MessageStyle",
  "type": "string"
  },
  "ReasoningContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "reasoning",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `reasoning`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "summary": {
  "anyOf": [
  {
  "items": {
  "type": "string"
  },
  "type": "array"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "A list of short reasoning summaries",
  "title": "Summary"
  },
  "content": {
  "anyOf": [
  {
  "items": {
  "type": "string"
  },
  "type": "array"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The reasoning content or chain-of-thought text",
  "title": "Content"
  }
  },
  "title": "ReasoningContentEntityOptional",
  "type": "object"
  },
  "TextContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "text",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `text`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "format": {
  "anyOf": [
  {
  "$ref": "#/$defs/TextFormat"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The format of the message. This is used by the client to determine how to display the message."
  },
  "content": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The contents of the text message.",
  "title": "Content"
  },
  "attachments": {
  "anyOf": [
  {
  "items": {
  "$ref": "#/$defs/FileAttachmentEntity"
  },
  "type": "array"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Optional list of file attachments with structured metadata.",
  "title": "Attachments"
  }
  },
  "title": "TextContentEntityOptional",
  "type": "object"
  },
  "TextFormat": {
  "enum": [
  "markdown",
  "plain",
  "code"
  ],
  "title": "TextFormat",
  "type": "string"
  },
  "ToolRequestContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "tool_request",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `tool_request`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "tool_call_id": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The ID of the tool call that is being requested.",
  "title": "Tool Call Id"
  },
  "name": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The name of the tool that is being requested.",
  "title": "Name"
  },
  "arguments": {
  "anyOf": [
  {
  "additionalProperties": true,
  "type": "object"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The arguments to the tool.",
  "title": "Arguments"
  }
  },
  "title": "ToolRequestContentEntityOptional",
  "type": "object"
  },
  "ToolResponseContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "tool_response",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `tool_response`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "tool_call_id": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The ID of the tool call that is being responded to.",
  "title": "Tool Call Id"
  },
  "name": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The name of the tool that is being responded to.",
  "title": "Name"
  },
  "content": {
  "anyOf": [
  {},
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The result of the tool.",
  "title": "Content"
  },
  "is_error": {
  "anyOf": [
  {
  "type": "boolean"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Whether the tool call resulted in an error. `None` when the harness does not report a status.",
  "title": "Is Error"
  }
  },
  "title": "ToolResponseContentEntityOptional",
  "type": "object"
  }
  },
  "description": "Filter model for TaskMessage - all fields optional for flexible filtering.\n\nThe `exclude` field determines whether this filter is inclusionary or exclusionary.\nWhen multiple filters are provided:\n- Inclusionary filters (exclude=False) are OR'd together\n- Exclusionary filters (exclude=True) are OR'd together and negated with $nor\n- The two groups are AND'd: (include1 OR include2) AND NOT (exclude1 OR exclude2)",
  "properties": {
  "content": {
  "anyOf": [
  {
  "$ref": "#/$defs/ToolRequestContentEntityOptional"
  },
  {
  "$ref": "#/$defs/DataContentEntityOptional"
  },
  {
  "$ref": "#/$defs/TextContentEntityOptional"
  },
  {
  "$ref": "#/$defs/ToolResponseContentEntityOptional"
  },
  {
  "$ref": "#/$defs/ReasoningContentEntityOptional"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Filter by message content",
  "title": "Content"
  },
  "streaming_status": {
  "anyOf": [
  {
  "enum": [
  "IN_PROGRESS",
  "DONE"
  ],
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Filter by streaming status",
  "title": "Streaming Status"
  },
  "exclude": {
  "default": false,
  "description": "If true, this filter excludes matching messages",
  "title": "Exclude",
  "type": "boolean"
  }
  },
  "title": "TaskMessageEntityFilter",
  "type": "object"
  }

  Each filter can include:

  - `content`: Filter by message content (type, author, data fields)
  - `streaming_status`: Filter by status ("IN_PROGRESS" or "DONE")
  - `exclude`: If true, excludes matching messages (default: false)

  Multiple filters are combined: inclusionary filters (exclude=false) are OR'd together,
  exclusionary filters (exclude=true) are OR'd and negated, then both groups are AND'd.

- `limit: optional number`

- `order_by: optional string`

- `order_direction: optional string`

- `page_number: optional number`

### Returns

- `content: TaskMessageContent`

  The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

- `task_id: string`

  ID of the task this message belongs to

- `id: optional string`

  The task message's unique id

- `created_at: optional string`

  The timestamp when the message was created

- `streaming_status: optional "IN_PROGRESS" or "DONE"`

  - `"IN_PROGRESS"`

  - `"DONE"`

- `updated_at: optional string`

  The timestamp when the message was last updated

### Example

```http
curl http://localhost:5003/messages \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY"
```

#### Response

```json
[
  {
    "content": {
      "author": "user",
      "content": "content",
      "attachments": [
        {
          "file_id": "file_id",
          "name": "name",
          "size": 0,
          "type": "type"
        }
      ],
      "format": "markdown",
      "style": "static",
      "type": "text"
    },
    "task_id": "task_id",
    "id": "id",
    "created_at": "2019-12-27T18:11:19.117Z",
    "streaming_status": "IN_PROGRESS",
    "updated_at": "2019-12-27T18:11:19.117Z"
  }
]
```

## Update Message

**put** `/messages/{message_id}`

Update Message

### Path Parameters

- `message_id: string`

### Body Parameters

- `content: TaskMessageContent`

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

- `task_id: string`

- `streaming_status: optional "IN_PROGRESS" or "DONE"`

  - `"IN_PROGRESS"`

  - `"DONE"`

### Returns

- `TaskMessage object { content, task_id, id, 3 more }`

  Represents a message in the agent system.

  This entity is used to store messages in MongoDB, with each message
  associated with a specific task.

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

### Example

```http
curl http://localhost:5003/messages/$MESSAGE_ID \
    -X PUT \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY" \
    -d '{
          "content": {
            "author": "user",
            "content": "content",
            "type": "text"
          },
          "task_id": "task_id"
        }'
```

#### Response

```json
{
  "content": {
    "author": "user",
    "content": "content",
    "attachments": [
      {
        "file_id": "file_id",
        "name": "name",
        "size": 0,
        "type": "type"
      }
    ],
    "format": "markdown",
    "style": "static",
    "type": "text"
  },
  "task_id": "task_id",
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "streaming_status": "IN_PROGRESS",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Get Message

**get** `/messages/{message_id}`

Get Message

### Path Parameters

- `message_id: string`

### Returns

- `TaskMessage object { content, task_id, id, 3 more }`

  Represents a message in the agent system.

  This entity is used to store messages in MongoDB, with each message
  associated with a specific task.

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

### Example

```http
curl http://localhost:5003/messages/$MESSAGE_ID \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY"
```

#### Response

```json
{
  "content": {
    "author": "user",
    "content": "content",
    "attachments": [
      {
        "file_id": "file_id",
        "name": "name",
        "size": 0,
        "type": "type"
      }
    ],
    "format": "markdown",
    "style": "static",
    "type": "text"
  },
  "task_id": "task_id",
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "streaming_status": "IN_PROGRESS",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## List Messages Paginated

**get** `/messages/paginated`

List messages for a task with cursor-based pagination.

This endpoint is designed for infinite scroll UIs where new messages may arrive
while paginating through older ones.

Args:
task_id: The task ID to filter messages by
limit: Maximum number of messages to return (default: 50)
cursor: Opaque cursor string for pagination. Pass the `next_cursor` from
a previous response to get the next page.
direction: Pagination direction - "older" to get older messages (default),
"newer" to get newer messages.

Returns:
PaginatedMessagesResponse with:
- data: List of messages (newest first when direction="older")
- next_cursor: Cursor for fetching the next page (null if no more pages)
- has_more: Whether there are more messages to fetch

Example:
First request: GET /messages/paginated?task_id=xxx&limit=50
Next page: GET /messages/paginated?task_id=xxx&limit=50&cursor=<next_cursor>

### Query Parameters

- `task_id: string`

  The task ID

- `cursor: optional string`

- `direction: optional "older" or "newer"`

  - `"older"`

  - `"newer"`

- `filters: optional string`

  JSON-encoded array of TaskMessageEntityFilter objects.

  Schema: {
  "$defs": {
  "DataContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "data",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `data`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "data": {
  "anyOf": [
  {
  "additionalProperties": true,
  "type": "object"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The contents of the data message.",
  "title": "Data"
  }
  },
  "title": "DataContentEntityOptional",
  "type": "object"
  },
  "FileAttachmentEntity": {
  "description": "Represents a file attachment in messages.",
  "properties": {
  "file_id": {
  "description": "The unique ID of the attached file",
  "title": "File Id",
  "type": "string"
  },
  "name": {
  "description": "The name of the file",
  "title": "Name",
  "type": "string"
  },
  "size": {
  "description": "The size of the file in bytes",
  "title": "Size",
  "type": "integer"
  },
  "type": {
  "description": "The MIME type or content type of the file",
  "title": "Type",
  "type": "string"
  }
  },
  "required": [
  "file_id",
  "name",
  "size",
  "type"
  ],
  "title": "FileAttachmentEntity",
  "type": "object"
  },
  "MessageAuthor": {
  "enum": [
  "user",
  "agent"
  ],
  "title": "MessageAuthor",
  "type": "string"
  },
  "MessageStyle": {
  "enum": [
  "static",
  "active"
  ],
  "title": "MessageStyle",
  "type": "string"
  },
  "ReasoningContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "reasoning",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `reasoning`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "summary": {
  "anyOf": [
  {
  "items": {
  "type": "string"
  },
  "type": "array"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "A list of short reasoning summaries",
  "title": "Summary"
  },
  "content": {
  "anyOf": [
  {
  "items": {
  "type": "string"
  },
  "type": "array"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The reasoning content or chain-of-thought text",
  "title": "Content"
  }
  },
  "title": "ReasoningContentEntityOptional",
  "type": "object"
  },
  "TextContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "text",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `text`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "format": {
  "anyOf": [
  {
  "$ref": "#/$defs/TextFormat"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The format of the message. This is used by the client to determine how to display the message."
  },
  "content": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The contents of the text message.",
  "title": "Content"
  },
  "attachments": {
  "anyOf": [
  {
  "items": {
  "$ref": "#/$defs/FileAttachmentEntity"
  },
  "type": "array"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Optional list of file attachments with structured metadata.",
  "title": "Attachments"
  }
  },
  "title": "TextContentEntityOptional",
  "type": "object"
  },
  "TextFormat": {
  "enum": [
  "markdown",
  "plain",
  "code"
  ],
  "title": "TextFormat",
  "type": "string"
  },
  "ToolRequestContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "tool_request",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `tool_request`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "tool_call_id": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The ID of the tool call that is being requested.",
  "title": "Tool Call Id"
  },
  "name": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The name of the tool that is being requested.",
  "title": "Name"
  },
  "arguments": {
  "anyOf": [
  {
  "additionalProperties": true,
  "type": "object"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The arguments to the tool.",
  "title": "Arguments"
  }
  },
  "title": "ToolRequestContentEntityOptional",
  "type": "object"
  },
  "ToolResponseContentEntityOptional": {
  "properties": {
  "type": {
  "anyOf": [
  {
  "const": "tool_response",
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The type of the message, in this case `tool_response`.",
  "title": "Type"
  },
  "author": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageAuthor"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`."
  },
  "style": {
  "anyOf": [
  {
  "$ref": "#/$defs/MessageStyle"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The style of the message. This is used by the client to determine how to display the message."
  },
  "tool_call_id": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The ID of the tool call that is being responded to.",
  "title": "Tool Call Id"
  },
  "name": {
  "anyOf": [
  {
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The name of the tool that is being responded to.",
  "title": "Name"
  },
  "content": {
  "anyOf": [
  {},
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "The result of the tool.",
  "title": "Content"
  },
  "is_error": {
  "anyOf": [
  {
  "type": "boolean"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Whether the tool call resulted in an error. `None` when the harness does not report a status.",
  "title": "Is Error"
  }
  },
  "title": "ToolResponseContentEntityOptional",
  "type": "object"
  }
  },
  "description": "Filter model for TaskMessage - all fields optional for flexible filtering.\n\nThe `exclude` field determines whether this filter is inclusionary or exclusionary.\nWhen multiple filters are provided:\n- Inclusionary filters (exclude=False) are OR'd together\n- Exclusionary filters (exclude=True) are OR'd together and negated with $nor\n- The two groups are AND'd: (include1 OR include2) AND NOT (exclude1 OR exclude2)",
  "properties": {
  "content": {
  "anyOf": [
  {
  "$ref": "#/$defs/ToolRequestContentEntityOptional"
  },
  {
  "$ref": "#/$defs/DataContentEntityOptional"
  },
  {
  "$ref": "#/$defs/TextContentEntityOptional"
  },
  {
  "$ref": "#/$defs/ToolResponseContentEntityOptional"
  },
  {
  "$ref": "#/$defs/ReasoningContentEntityOptional"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Filter by message content",
  "title": "Content"
  },
  "streaming_status": {
  "anyOf": [
  {
  "enum": [
  "IN_PROGRESS",
  "DONE"
  ],
  "type": "string"
  },
  {
  "type": "null"
  }
  ],
  "default": null,
  "description": "Filter by streaming status",
  "title": "Streaming Status"
  },
  "exclude": {
  "default": false,
  "description": "If true, this filter excludes matching messages",
  "title": "Exclude",
  "type": "boolean"
  }
  },
  "title": "TaskMessageEntityFilter",
  "type": "object"
  }

  Each filter can include:

  - `content`: Filter by message content (type, author, data fields)
  - `streaming_status`: Filter by status ("IN_PROGRESS" or "DONE")
  - `exclude`: If true, excludes matching messages (default: false)

  Multiple filters are combined: inclusionary filters (exclude=false) are OR'd together,
  exclusionary filters (exclude=true) are OR'd and negated, then both groups are AND'd.

- `limit: optional number`

### Returns

- `data: array of TaskMessage`

  List of messages

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

- `has_more: optional boolean`

  Whether there are more messages to fetch

- `next_cursor: optional string`

  Cursor for fetching the next page of older messages

### Example

```http
curl http://localhost:5003/messages/paginated \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY"
```

#### Response

```json
{
  "data": [
    {
      "content": {
        "author": "user",
        "content": "content",
        "attachments": [
          {
            "file_id": "file_id",
            "name": "name",
            "size": 0,
            "type": "type"
          }
        ],
        "format": "markdown",
        "style": "static",
        "type": "text"
      },
      "task_id": "task_id",
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "streaming_status": "IN_PROGRESS",
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "has_more": true,
  "next_cursor": "next_cursor"
}
```

## Domain Types

### Data Content

- `DataContent object { author, data, style, type }`

  - `author: MessageAuthor`

    The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `"user"`

    - `"agent"`

  - `data: map[unknown]`

    The contents of the data message.

  - `style: optional MessageStyle`

    The style of the message. This is used by the client to determine how to display the message.

    - `"static"`

    - `"active"`

  - `type: optional "data"`

    The type of the message, in this case `data`.

    - `"data"`

### Message Author

- `MessageAuthor = "user" or "agent"`

  - `"user"`

  - `"agent"`

### Message Style

- `MessageStyle = "static" or "active"`

  - `"static"`

  - `"active"`

### Reasoning Content

- `ReasoningContent object { author, summary, content, 2 more }`

  - `author: MessageAuthor`

    The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `"user"`

    - `"agent"`

  - `summary: array of string`

    A list of short reasoning summaries

  - `content: optional array of string`

    The reasoning content or chain-of-thought text

  - `style: optional MessageStyle`

    The style of the message. This is used by the client to determine how to display the message.

    - `"static"`

    - `"active"`

  - `type: optional "reasoning"`

    The type of the message, in this case `reasoning`.

    - `"reasoning"`

### Task Message

- `TaskMessage object { content, task_id, id, 3 more }`

  Represents a message in the agent system.

  This entity is used to store messages in MongoDB, with each message
  associated with a specific task.

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

### Text Content

- `TextContent object { author, content, attachments, 3 more }`

  - `author: MessageAuthor`

    The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `"user"`

    - `"agent"`

  - `content: string`

    The contents of the text message.

  - `attachments: optional array of object { file_id, name, size, type }`

    Optional list of file attachments with structured metadata.

    - `file_id: string`

      The unique ID of the attached file

    - `name: string`

      The name of the file

    - `size: number`

      The size of the file in bytes

    - `type: string`

      The MIME type or content type of the file

  - `format: optional TextFormat`

    The format of the message. This is used by the client to determine how to display the message.

    - `"markdown"`

    - `"plain"`

    - `"code"`

  - `style: optional MessageStyle`

    The style of the message. This is used by the client to determine how to display the message.

    - `"static"`

    - `"active"`

  - `type: optional "text"`

    The type of the message, in this case `text`.

    - `"text"`

### Text Format

- `TextFormat = "markdown" or "plain" or "code"`

  - `"markdown"`

  - `"plain"`

  - `"code"`

### Tool Request Content

- `ToolRequestContent object { arguments, author, name, 3 more }`

  - `arguments: map[unknown]`

    The arguments to the tool.

  - `author: MessageAuthor`

    The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `"user"`

    - `"agent"`

  - `name: string`

    The name of the tool that is being requested.

  - `tool_call_id: string`

    The ID of the tool call that is being requested.

  - `style: optional MessageStyle`

    The style of the message. This is used by the client to determine how to display the message.

    - `"static"`

    - `"active"`

  - `type: optional "tool_request"`

    The type of the message, in this case `tool_request`.

    - `"tool_request"`

### Tool Response Content

- `ToolResponseContent object { author, content, name, 4 more }`

  - `author: MessageAuthor`

    The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `"user"`

    - `"agent"`

  - `content: unknown`

    The result of the tool.

  - `name: string`

    The name of the tool that is being responded to.

  - `tool_call_id: string`

    The ID of the tool call that is being responded to.

  - `is_error: optional boolean`

    Whether the tool call resulted in an error. `None` when the harness does not report a status.

  - `style: optional MessageStyle`

    The style of the message. This is used by the client to determine how to display the message.

    - `"static"`

    - `"active"`

  - `type: optional "tool_response"`

    The type of the message, in this case `tool_response`.

    - `"tool_response"`

### Message List Response

- `MessageListResponse = array of TaskMessage`

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

### Message List Paginated Response

- `MessageListPaginatedResponse object { data, has_more, next_cursor }`

  Response with cursor pagination metadata.

  - `data: array of TaskMessage`

    List of messages

    - `content: TaskMessageContent`

      The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

      - `TextContent object { author, content, attachments, 3 more }`

        - `author: MessageAuthor`

          The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `"user"`

          - `"agent"`

        - `content: string`

          The contents of the text message.

        - `attachments: optional array of object { file_id, name, size, type }`

          Optional list of file attachments with structured metadata.

          - `file_id: string`

            The unique ID of the attached file

          - `name: string`

            The name of the file

          - `size: number`

            The size of the file in bytes

          - `type: string`

            The MIME type or content type of the file

        - `format: optional TextFormat`

          The format of the message. This is used by the client to determine how to display the message.

          - `"markdown"`

          - `"plain"`

          - `"code"`

        - `style: optional MessageStyle`

          The style of the message. This is used by the client to determine how to display the message.

          - `"static"`

          - `"active"`

        - `type: optional "text"`

          The type of the message, in this case `text`.

          - `"text"`

      - `ReasoningContent object { author, summary, content, 2 more }`

        - `author: MessageAuthor`

          The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `summary: array of string`

          A list of short reasoning summaries

        - `content: optional array of string`

          The reasoning content or chain-of-thought text

        - `style: optional MessageStyle`

          The style of the message. This is used by the client to determine how to display the message.

        - `type: optional "reasoning"`

          The type of the message, in this case `reasoning`.

          - `"reasoning"`

      - `DataContent object { author, data, style, type }`

        - `author: MessageAuthor`

          The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `data: map[unknown]`

          The contents of the data message.

        - `style: optional MessageStyle`

          The style of the message. This is used by the client to determine how to display the message.

        - `type: optional "data"`

          The type of the message, in this case `data`.

          - `"data"`

      - `ToolRequestContent object { arguments, author, name, 3 more }`

        - `arguments: map[unknown]`

          The arguments to the tool.

        - `author: MessageAuthor`

          The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `name: string`

          The name of the tool that is being requested.

        - `tool_call_id: string`

          The ID of the tool call that is being requested.

        - `style: optional MessageStyle`

          The style of the message. This is used by the client to determine how to display the message.

        - `type: optional "tool_request"`

          The type of the message, in this case `tool_request`.

          - `"tool_request"`

      - `ToolResponseContent object { author, content, name, 4 more }`

        - `author: MessageAuthor`

          The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `content: unknown`

          The result of the tool.

        - `name: string`

          The name of the tool that is being responded to.

        - `tool_call_id: string`

          The ID of the tool call that is being responded to.

        - `is_error: optional boolean`

          Whether the tool call resulted in an error. `None` when the harness does not report a status.

        - `style: optional MessageStyle`

          The style of the message. This is used by the client to determine how to display the message.

        - `type: optional "tool_response"`

          The type of the message, in this case `tool_response`.

          - `"tool_response"`

    - `task_id: string`

      ID of the task this message belongs to

    - `id: optional string`

      The task message's unique id

    - `created_at: optional string`

      The timestamp when the message was created

    - `streaming_status: optional "IN_PROGRESS" or "DONE"`

      - `"IN_PROGRESS"`

      - `"DONE"`

    - `updated_at: optional string`

      The timestamp when the message was last updated

  - `has_more: optional boolean`

    Whether there are more messages to fetch

  - `next_cursor: optional string`

    Cursor for fetching the next page of older messages

# Batch

## Batch Update Messages

**put** `/messages/batch`

Batch Update Messages

### Body Parameters

- `task_id: string`

- `updates: map[TaskMessageContent]`

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

### Returns

- `content: TaskMessageContent`

  The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

- `task_id: string`

  ID of the task this message belongs to

- `id: optional string`

  The task message's unique id

- `created_at: optional string`

  The timestamp when the message was created

- `streaming_status: optional "IN_PROGRESS" or "DONE"`

  - `"IN_PROGRESS"`

  - `"DONE"`

- `updated_at: optional string`

  The timestamp when the message was last updated

### Example

```http
curl http://localhost:5003/messages/batch \
    -X PUT \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY" \
    -d '{
          "task_id": "task_id",
          "updates": {
            "foo": {
              "author": "user",
              "content": "content",
              "type": "text"
            }
          }
        }'
```

#### Response

```json
[
  {
    "content": {
      "author": "user",
      "content": "content",
      "attachments": [
        {
          "file_id": "file_id",
          "name": "name",
          "size": 0,
          "type": "type"
        }
      ],
      "format": "markdown",
      "style": "static",
      "type": "text"
    },
    "task_id": "task_id",
    "id": "id",
    "created_at": "2019-12-27T18:11:19.117Z",
    "streaming_status": "IN_PROGRESS",
    "updated_at": "2019-12-27T18:11:19.117Z"
  }
]
```

## Batch Create Messages

**post** `/messages/batch`

Batch Create Messages

### Body Parameters

- `contents: array of TaskMessageContent`

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

- `task_id: string`

- `created_at: optional string`

  Optional base timestamp. Each message in the batch is stamped with base + i milliseconds to guarantee unique, monotonic ordering. If omitted, the server stamps datetime.now(UTC) at insert time.

### Returns

- `content: TaskMessageContent`

  The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

  - `TextContent object { author, content, attachments, 3 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `"user"`

      - `"agent"`

    - `content: string`

      The contents of the text message.

    - `attachments: optional array of object { file_id, name, size, type }`

      Optional list of file attachments with structured metadata.

      - `file_id: string`

        The unique ID of the attached file

      - `name: string`

        The name of the file

      - `size: number`

        The size of the file in bytes

      - `type: string`

        The MIME type or content type of the file

    - `format: optional TextFormat`

      The format of the message. This is used by the client to determine how to display the message.

      - `"markdown"`

      - `"plain"`

      - `"code"`

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

      - `"static"`

      - `"active"`

    - `type: optional "text"`

      The type of the message, in this case `text`.

      - `"text"`

  - `ReasoningContent object { author, summary, content, 2 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `summary: array of string`

      A list of short reasoning summaries

    - `content: optional array of string`

      The reasoning content or chain-of-thought text

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "reasoning"`

      The type of the message, in this case `reasoning`.

      - `"reasoning"`

  - `DataContent object { author, data, style, type }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `data: map[unknown]`

      The contents of the data message.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "data"`

      The type of the message, in this case `data`.

      - `"data"`

  - `ToolRequestContent object { arguments, author, name, 3 more }`

    - `arguments: map[unknown]`

      The arguments to the tool.

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `name: string`

      The name of the tool that is being requested.

    - `tool_call_id: string`

      The ID of the tool call that is being requested.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_request"`

      The type of the message, in this case `tool_request`.

      - `"tool_request"`

  - `ToolResponseContent object { author, content, name, 4 more }`

    - `author: MessageAuthor`

      The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

    - `content: unknown`

      The result of the tool.

    - `name: string`

      The name of the tool that is being responded to.

    - `tool_call_id: string`

      The ID of the tool call that is being responded to.

    - `is_error: optional boolean`

      Whether the tool call resulted in an error. `None` when the harness does not report a status.

    - `style: optional MessageStyle`

      The style of the message. This is used by the client to determine how to display the message.

    - `type: optional "tool_response"`

      The type of the message, in this case `tool_response`.

      - `"tool_response"`

- `task_id: string`

  ID of the task this message belongs to

- `id: optional string`

  The task message's unique id

- `created_at: optional string`

  The timestamp when the message was created

- `streaming_status: optional "IN_PROGRESS" or "DONE"`

  - `"IN_PROGRESS"`

  - `"DONE"`

- `updated_at: optional string`

  The timestamp when the message was last updated

### Example

```http
curl http://localhost:5003/messages/batch \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY" \
    -d '{
          "contents": [
            {
              "author": "user",
              "content": "content",
              "type": "text"
            }
          ],
          "task_id": "task_id"
        }'
```

#### Response

```json
[
  {
    "content": {
      "author": "user",
      "content": "content",
      "attachments": [
        {
          "file_id": "file_id",
          "name": "name",
          "size": 0,
          "type": "type"
        }
      ],
      "format": "markdown",
      "style": "static",
      "type": "text"
    },
    "task_id": "task_id",
    "id": "id",
    "created_at": "2019-12-27T18:11:19.117Z",
    "streaming_status": "IN_PROGRESS",
    "updated_at": "2019-12-27T18:11:19.117Z"
  }
]
```

## Domain Types

### Batch Update Response

- `BatchUpdateResponse = array of TaskMessage`

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated

### Batch Create Response

- `BatchCreateResponse = array of TaskMessage`

  - `content: TaskMessageContent`

    The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

    - `TextContent object { author, content, attachments, 3 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

        - `"user"`

        - `"agent"`

      - `content: string`

        The contents of the text message.

      - `attachments: optional array of object { file_id, name, size, type }`

        Optional list of file attachments with structured metadata.

        - `file_id: string`

          The unique ID of the attached file

        - `name: string`

          The name of the file

        - `size: number`

          The size of the file in bytes

        - `type: string`

          The MIME type or content type of the file

      - `format: optional TextFormat`

        The format of the message. This is used by the client to determine how to display the message.

        - `"markdown"`

        - `"plain"`

        - `"code"`

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

        - `"static"`

        - `"active"`

      - `type: optional "text"`

        The type of the message, in this case `text`.

        - `"text"`

    - `ReasoningContent object { author, summary, content, 2 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `summary: array of string`

        A list of short reasoning summaries

      - `content: optional array of string`

        The reasoning content or chain-of-thought text

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "reasoning"`

        The type of the message, in this case `reasoning`.

        - `"reasoning"`

    - `DataContent object { author, data, style, type }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `data: map[unknown]`

        The contents of the data message.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "data"`

        The type of the message, in this case `data`.

        - `"data"`

    - `ToolRequestContent object { arguments, author, name, 3 more }`

      - `arguments: map[unknown]`

        The arguments to the tool.

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `name: string`

        The name of the tool that is being requested.

      - `tool_call_id: string`

        The ID of the tool call that is being requested.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_request"`

        The type of the message, in this case `tool_request`.

        - `"tool_request"`

    - `ToolResponseContent object { author, content, name, 4 more }`

      - `author: MessageAuthor`

        The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

      - `content: unknown`

        The result of the tool.

      - `name: string`

        The name of the tool that is being responded to.

      - `tool_call_id: string`

        The ID of the tool call that is being responded to.

      - `is_error: optional boolean`

        Whether the tool call resulted in an error. `None` when the harness does not report a status.

      - `style: optional MessageStyle`

        The style of the message. This is used by the client to determine how to display the message.

      - `type: optional "tool_response"`

        The type of the message, in this case `tool_response`.

        - `"tool_response"`

  - `task_id: string`

    ID of the task this message belongs to

  - `id: optional string`

    The task message's unique id

  - `created_at: optional string`

    The timestamp when the message was created

  - `streaming_status: optional "IN_PROGRESS" or "DONE"`

    - `"IN_PROGRESS"`

    - `"DONE"`

  - `updated_at: optional string`

    The timestamp when the message was last updated
