## 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"
}
```
