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

# Create New Message

> Create a new message in the conversation.

Use `application/json` for text messages and `multipart/form-data` when the
message includes file attachments.

### Multipart attachment request

Send files with the `attachments[]` form field. `curl -F` sets the
`multipart/form-data` content type and boundary automatically.

```bash
curl -X POST "https://app.yampi.ai/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages" \
  -H "api_access_token: <your-api-token>" \
  -F "content=Here is the screenshot" \
  -F "message_type=outgoing" \
  -F "private=false" \
  -F "attachments[]=@/path/to/screenshot.png"
```

## WhatsApp Template Messages

For WhatsApp channels, you can send structured template messages using the `template_params` field. 
Templates must be pre-approved in WhatsApp Business Manager.

### Example Templates

**Text with Image Header:**
```json
{
  "content": "Hi your order 121212 is confirmed. Please wait for further updates",
  "template_params": {
    "name": "order_confirmation",
    "category": "MARKETING",
    "language": "en",
    "processed_params": {
      "body": {
        "1": "121212"
      },
      "header": {
        "media_url": "https://picsum.photos/200/300",
        "media_type": "image"
      }
    }
  }
}
```

**Text with Copy Code Button:**
```json
{
  "content": "Special offer! Get 30% off your next purchase. Use the code below",
  "template_params": {
    "name": "discount_coupon",
    "category": "MARKETING",
    "language": "en",
    "processed_params": {
      "body": {
        "discount_percentage": "30"
      },
      "buttons": [{
        "type": "copy_code",
        "parameter": "SAVE20"
      }]
    }
  }
}
```




## OpenAPI

````yaml /openapi/application.json post /api/v1/accounts/{account_id}/conversations/{conversation_id}/messages
openapi: 3.1.0
info:
  title: API de Yampi
  description: >-
    API de cuenta de Yampi: chats, inventario, negocios, contratos, tesorería y
    Livia. Autenticación con el header `api_access_token`.
  version: 1.2.0
  termsOfService: https://yampi.ai/terms/
  contact:
    email: hola@yampi.ai
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://app.yampi.ai
    description: Producción
security: []
tags:
  - name: Agents
    description: Agent management APIs
  - name: Canned Responses
    description: Pre-defined responses for common queries
  - name: Contacts
    description: Contact management APIs
  - name: Contact Labels
    description: Manage contact labels
  - name: Conversation Assignments
    description: Manage conversation assignments
  - name: Conversation Labels
    description: Manage conversation labels
  - name: Conversations
    description: Conversation management APIs
  - name: Custom Attributes
    description: Custom fields for contacts and conversations
  - name: Custom Filters
    description: Saved filters for conversations
  - name: Inboxes
    description: Communication channels setup
  - name: Integrations
    description: Third-party integrations
  - name: Messages
    description: Message management APIs
  - name: Profile
    description: User profile APIs
  - name: Reports
    description: Analytics and reporting APIs
  - name: Teams
    description: Team management APIs
  - name: Webhooks
    description: Event notification webhooks
  - name: Automation Rule
    description: Workflow automation rules
  - name: Help Center
    description: Knowledge base management
  - name: Account
    description: Current account profile and settings
  - name: Audit Logs
    description: Account audit log
  - name: Properties
    description: Property portfolio APIs
  - name: Companies
    description: Company CRM APIs
  - name: Opportunities
    description: Opportunity CRM APIs
  - name: Opportunity Reminders
    description: Reminders on opportunities
  - name: Contract Templates
    description: Contract template library
  - name: Contract Submissions
    description: Contract sending and tracking
  - name: Livia
    description: Livia assistants
  - name: Livia Tareas
    description: Livia one-shot AI tasks
  - name: SLA Policies
    description: SLA policy management
  - name: Applied SLAs
    description: SLA instances applied to conversations
  - name: SAML Settings
    description: Account SAML SSO settings
  - name: Treasury Subscriptions
    description: Recurring treasury subscriptions
  - name: Treasury Payments
    description: Treasury payment recording
  - name: Treasury Payouts
    description: Subscription payouts
  - name: Treasury Adjustments
    description: Debit and credit adjustments
  - name: Treasury Rules
    description: Notification, retry, collection and tax rules
  - name: Treasury Dashboard
    description: Treasury dashboard
  - name: Treasury Settings
    description: Treasury account settings
  - name: Treasury Owners
    description: Owner statements
  - name: Treasury Reports
    description: Aging and commission reports
  - name: Livia Documentos
    description: Livia knowledge documents
  - name: Livia Escenarios
    description: Livia assistant scenarios
  - name: Livia Herramientas
    description: Livia custom HTTP tools
  - name: Livia Desk
    description: Livia copilot threads and messages
  - name: Livia Preferencias
    description: Account-level Livia preferences
  - name: Documents
    description: Account document library
  - name: Document Folders
    description: Document library folders
  - name: Calendar Events
    description: Account calendar, availability and booking links
  - name: Agent Tasks
    description: Agent task inbox and lifecycle
  - name: Labels
    description: Account labels
  - name: Notifications
    description: User notifications and notification settings
  - name: Search
    description: Account search and AI search
  - name: Macros
    description: Conversation macros
  - name: Campaigns
    description: Outbound campaigns
  - name: Flow Definitions
    description: Livia flow builder
  - name: Custom Roles
    description: Custom agent roles
  - name: Assignment Policies
    description: Conversation assignment policies
  - name: Requirements
    description: Capture requirements
  - name: Zones
    description: Location zones and cities
  - name: Geocoding
    description: Authenticated geocoding
  - name: Domains
    description: Account custom domains
  - name: Connector Clients
    description: MCP connector client identifiers
  - name: Presigned Contracts
    description: Already-signed contracts uploaded to the account
  - name: Contract Webhooks
    description: Outbound contract webhook URLs
  - name: Contracts Settings
    description: Account contracts settings
  - name: Treasury Disbursements
    description: Owner and agency disbursements
  - name: Treasury Collections
    description: Collection steps, notices, agreements and exceptions
  - name: Treasury Guarantees
    description: Rental guarantees and claims
  - name: Treasury E-Invoices
    description: Electronic invoicing
  - name: Treasury Available Contracts
    description: Completed contracts that can seed subscriptions
  - name: Opportunity Pipelines
    description: CRM funnels
  - name: Opportunity Columns
    description: CRM kanban columns
  - name: Opportunity Lose Reasons
    description: CRM lose reasons
  - name: Requirement Quotes
    description: Priced quotes on capture requirements
  - name: Conversation Participants
    description: Agents participating in a conversation
  - name: Conversation Draft Messages
    description: Per-conversation composer drafts
  - name: MCP
    description: Account-scoped MCP JSON-RPC server
  - name: Treasury Bank Batches
    description: Bank payout files and beneficiary account confirmation
  - name: Contact Assignment Requests
    description: Requests to be assigned a contact
  - name: Onboarding
    description: Account onboarding details
  - name: Owner Portal Invites
    description: Owner portal invite, eligibility and revoke
  - name: Channel Authorizations
    description: Start OAuth or embedded signup for inbox channels
  - name: CSAT Survey Responses
    description: Account CSAT responses, metrics and review notes
  - name: Dashboard
    description: Account dashboard summary and trends
  - name: Dashboard Apps
    description: Embedded dashboard apps
  - name: Bulk Actions
    description: Bulk conversation and contact actions
  - name: Assignable Agents
    description: Agents assignable across a set of inboxes
  - name: Tracking Pixels
    description: Advertising tracking pixels
  - name: Calls
    description: Account call history
  - name: WhatsApp Calls
    description: WhatsApp voice calls
paths:
  /api/v1/accounts/{account_id}/conversations/{conversation_id}/messages:
    parameters:
      - $ref: '#/components/parameters/account_id'
      - $ref: '#/components/parameters/conversation_id'
    post:
      tags:
        - Messages
      summary: Create New Message
      description: >
        Create a new message in the conversation.


        Use `application/json` for text messages and `multipart/form-data` when
        the

        message includes file attachments.


        ### Multipart attachment request


        Send files with the `attachments[]` form field. `curl -F` sets the

        `multipart/form-data` content type and boundary automatically.


        ```bash

        curl -X POST
        "https://app.yampi.ai/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages"
        \
          -H "api_access_token: <your-api-token>" \
          -F "content=Here is the screenshot" \
          -F "message_type=outgoing" \
          -F "private=false" \
          -F "attachments[]=@/path/to/screenshot.png"
        ```


        ## WhatsApp Template Messages


        For WhatsApp channels, you can send structured template messages using
        the `template_params` field. 

        Templates must be pre-approved in WhatsApp Business Manager.


        ### Example Templates


        **Text with Image Header:**

        ```json

        {
          "content": "Hi your order 121212 is confirmed. Please wait for further updates",
          "template_params": {
            "name": "order_confirmation",
            "category": "MARKETING",
            "language": "en",
            "processed_params": {
              "body": {
                "1": "121212"
              },
              "header": {
                "media_url": "https://picsum.photos/200/300",
                "media_type": "image"
              }
            }
          }
        }

        ```


        **Text with Copy Code Button:**

        ```json

        {
          "content": "Special offer! Get 30% off your next purchase. Use the code below",
          "template_params": {
            "name": "discount_coupon",
            "category": "MARKETING",
            "language": "en",
            "processed_params": {
              "body": {
                "discount_percentage": "30"
              },
              "buttons": [{
                "type": "copy_code",
                "parameter": "SAVE20"
              }]
            }
          }
        }

        ```
      operationId: create-a-new-message-in-a-conversation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/conversation_message_create_payload'
          multipart/form-data:
            schema:
              type: object
              description: Form data payload for creating a message with file attachments.
              example:
                content: Here is the screenshot
                message_type: outgoing
                private: false
                attachments[]:
                  - screenshot.png
              properties:
                content:
                  type: string
                  description: The content of the message
                  example: Here is the screenshot
                message_type:
                  type: string
                  enum:
                    - outgoing
                    - incoming
                  description: The type of the message
                  example: outgoing
                private:
                  type: boolean
                  description: Flag to identify if it is a private note
                  example: false
                content_type:
                  type: string
                  enum:
                    - text
                    - input_email
                    - cards
                    - input_select
                    - form
                    - article
                  description: Content type of the message
                  example: text
                content_attributes:
                  type: object
                  description: Attributes based on the content type
                  example: {}
                attachments[]:
                  type: array
                  description: Files to attach to the message
                  items:
                    type: string
                    format: binary
            encoding:
              attachments[]:
                style: form
                explode: true
            examples:
              attachment_message:
                summary: Message with an attachment
                value:
                  content: Here is the screenshot
                  message_type: outgoing
                  private: false
                  attachments[]:
                    - screenshot.png
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/generic_id'
                  - $ref: '#/components/schemas/message'
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
        '404':
          description: Conversation not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
      security:
        - userApiKey: []
components:
  parameters:
    account_id:
      in: path
      name: account_id
      schema:
        type: integer
      required: true
      description: The numeric ID of the account
    conversation_id:
      in: path
      name: conversation_id
      schema:
        type: integer
      required: true
      description: The numeric ID of the conversation
  schemas:
    conversation_message_create_payload:
      type: object
      required:
        - content
      properties:
        content:
          type: string
          description: The content of the message
          example: Hello, how can I help you?
        message_type:
          type: string
          enum:
            - outgoing
            - incoming
          description: The type of the message
          example: outgoing
        private:
          type: boolean
          description: Flag to identify if it is a private note
          example: false
        content_type:
          type: string
          enum:
            - text
            - input_email
            - cards
            - input_select
            - form
            - article
          description: Content type of the message
          example: text
        content_attributes:
          type: object
          description: Attributes based on the content type
          example: {}
        campaign_id:
          type: integer
          description: The campaign id to which the message belongs
          example: 1
        template_params:
          type: object
          description: WhatsApp template parameters for sending structured messages
          required:
            - name
            - category
            - language
            - processed_params
          properties:
            name:
              type: string
              description: >-
                Name of the WhatsApp template (must be approved in WhatsApp
                Business Manager)
              example: purchase_receipt
            category:
              type: string
              enum:
                - UTILITY
                - MARKETING
                - SHIPPING_UPDATE
                - TICKET_UPDATE
                - ISSUE_RESOLUTION
              description: Category of the template
              example: UTILITY
            language:
              type: string
              description: Language code of the template (BCP 47 format)
              example: en_US
            processed_params:
              type: object
              description: Processed template parameters organized by component type
              properties:
                body:
                  type: object
                  description: Body component parameters with variable placeholders
                  additionalProperties:
                    type: string
                  example:
                    '1': Visa
                    '2': Nike
                    '3': Bill
                header:
                  type: object
                  description: Header component parameters for media templates
                  properties:
                    media_url:
                      type: string
                      format: uri
                      description: >-
                        Publicly accessible URL for IMAGE, VIDEO, or DOCUMENT
                        headers
                      example: >-
                        https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
                    media_type:
                      type: string
                      enum:
                        - image
                        - video
                        - document
                      description: Type of media for the header
                      example: document
                buttons:
                  type: array
                  description: Button component parameters for interactive templates
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - url
                          - copy_code
                        description: Type of button parameter
                      parameter:
                        type: string
                        description: Dynamic parameter value for the button
                        example: SSFSDFSD
    generic_id:
      type: object
      properties:
        id:
          type: number
    message:
      type: object
      properties:
        id:
          type: number
          description: The ID of the message
        content:
          type: string
          description: The text content of the message
        account_id:
          type: number
          description: The ID of the account
        inbox_id:
          type: number
          description: The ID of the inbox
        conversation_id:
          type: number
          description: The ID of the conversation
        message_type:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: The type of the message
        created_at:
          type: integer
          description: The time at which message was created
        updated_at:
          type: integer
          description: The time at which message was updated
        private:
          type: boolean
          description: The flags which shows whether the message is private or not
        status:
          type: string
          enum:
            - sent
            - delivered
            - read
            - failed
          description: The status of the message
        source_id:
          type: string
          description: The source ID of the message
        content_type:
          type: string
          enum:
            - text
            - input_select
            - cards
            - form
          description: The type of the template message
        content_attributes:
          type: object
          description: The content attributes for each content_type
        sender_type:
          type: string
          enum:
            - contact
            - agent
            - agent_bot
          description: The type of the sender
        sender_id:
          type: number
          description: The ID of the sender
        external_source_ids:
          type: object
          description: The external source IDs of the message
        additional_attributes:
          type: object
          description: The additional attributes of the message
        processed_message_content:
          type: string
          description: The processed message content
        sentiment:
          type: object
          description: The sentiment of the message
        conversation:
          type: object
          description: The conversation object
        attachment:
          type: object
          description: The file object attached to the image
        sender:
          type: object
          description: User/Agent/AgentBot object
    bad_request_error:
      title: data
      type: object
      properties:
        description:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/request_error'
    request_error:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
        code:
          type: string
  securitySchemes:
    userApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: >-
        Token de usuario. Envía el valor en el header `api_access_token`. Lo
        obtienes en el perfil (`GET /api/v1/profile`) o al regenerarlo.

````