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

# Send message

> Add a message or an internal note to a conversation.

The sender is resolved from `sender_email`. If it belongs to an active team member, the message is sent as a reply from that team member. Otherwise it is sent as a message from the contact with that email, and a new contact is created when none exists.


<Info>Replace `{your-subdomain}` with your workspace's subdomain. <br /> Learn how to find your subdomain in [Workspace subdomain](/getting-started/workspace-subdomain).</Info>


## OpenAPI

````yaml bundled/conversations.yaml POST /conversations/{conversation_id}/messages
openapi: 3.0.3
info:
  title: NeetoChat Conversations APIs
  version: 1.0.0
servers:
  - description: NeetoChat APIs
    url: https://{your-subdomain}.neetochat.com/api/external/v2
    variables:
      your-subdomain:
        default: spinkart
        description: >-
          Replace **spinkart** with your [workspace's
          subdomain](/getting-started/workspace-subdomain).
security: []
tags:
  - name: Conversations
    description: APIs to list, create and update conversations in the workspace.
  - name: Messages
    description: APIs to read and send messages in a conversation.
paths:
  /conversations/{conversation_id}/messages:
    post:
      tags:
        - Messages
      summary: Send message
      description: >
        Add a message or an internal note to a conversation.


        The sender is resolved from `sender_email`. If it belongs to an active
        team member, the message is sent as a reply from that team member.
        Otherwise it is sent as a message from the contact with that email, and
        a new contact is created when none exists.
      parameters:
        - $ref: '#/components/parameters/api_key_header'
        - $ref: '#/components/parameters/accept_header'
        - $ref: '#/components/parameters/conversation_id_param'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  type: string
                  description: Content of the message.
                  example: Thanks, we have processed your refund.
                sender_email:
                  type: string
                  format: email
                  description: >-
                    Email of the team member or contact sending the message. A
                    note must be sent by an active team member.
                  example: oliver@example.com
                kind:
                  type: string
                  enum:
                    - user_message
                    - note
                  default: user_message
                  description: >-
                    Pass `note` to add an internal note that only team members
                    can see.
                mentions:
                  type: array
                  description: >-
                    Team members to mention in a note. Mentions are only
                    supported when `kind` is `note`. Each `@Name` in the body
                    that matches a mentioned team member becomes a mention, and
                    team members not named in the body are mentioned at the end
                    of the note.
                  items:
                    type: object
                    properties:
                      email:
                        type: string
                        format: email
                        example: jane@example.com
              required:
                - body
                - sender_email
      responses:
        '201':
          description: Created - Message added successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/message_response'
        '404':
          description: Not Found - No conversation with this id exists in the workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity - The request body is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
              example:
                error: >-
                  Only agents can add notes. sender_email must belong to an
                  agent.
components:
  parameters:
    api_key_header:
      in: header
      name: X-Api-Key
      description: >-
        Use the X-Api-Key header to provide your workspace API key. Refer to
        [Authentication](/getting-started/authentication) for more information.
      required: true
      schema:
        type: string
        default: your-api-key
    accept_header:
      in: header
      name: Accept
      description: >-
        Specifies the expected response format. Must be set to
        `application/json` for proper API communication.
      required: true
      schema:
        type: string
        enum:
          - application/json
        default: application/json
    conversation_id_param:
      in: path
      name: conversation_id
      description: >-
        Id of the conversation. You can get `conversation_id` by listing
        conversations using our [List
        conversations](/api-reference/conversations/list) API.
      required: true
      schema:
        type: string
        format: uuid
        example: de414e85-a1b5-4240-a465-7b32606980ce
  schemas:
    message_response:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/message'
    error:
      type: object
      properties:
        error:
          type: string
          example: Conversation does not exist.
    message:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 1bf689fc-9f92-4e39-9f71-4a97078d2b8f
        body:
          type: string
          description: Content of the message. It may contain HTML.
          example: <p>Thanks, we have processed your refund.</p>
        kind:
          type: string
          description: >-
            Type of the message. `user_message` is a chat message and `note` is
            an internal note that only team members can see. Other kinds, such
            as `system_message` and `activity_message`, are created by
            NeetoChat.
          example: user_message
        status:
          type: string
          example: read
        created_at:
          type: string
          format: date-time
          example: '2026-10-05T16:26:57.912Z'
        updated_at:
          type: string
          format: date-time
          example: '2026-10-05T16:26:57.912Z'
        sender:
          type: object
          properties:
            id:
              type: string
              format: uuid
              nullable: true
              example: 05665eee-4602-4317-8f7f-767b04274e5f
            name:
              type: string
              nullable: true
              example: Oliver Smith
            email:
              type: string
              nullable: true
              example: oliver@example.com
            type:
              type: string
              nullable: true
              description: '`User` for a team member and `Insights::Visitor` for a contact.'
              example: User
        attachments:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              filename:
                type: string
                example: invoice.pdf
              content_type:
                type: string
                example: application/pdf
              url:
                type: string
                example: >-
                  https://spinkart.neetochat.com/rails/active_storage/blobs/redirect/.../invoice.pdf
        message_gif:
          type: object
          nullable: true
          properties:
            id:
              type: string
              format: uuid
            embed_url:
              type: string
            title:
              type: string
          example: null

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.