tags: - Messages operationId: create-a-new-message-in-a-conversation 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.chatwoot.com/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages" \ -H "api_access_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" }] } } } ``` security: - userApiKey: [] - agentBotApiKey: [] 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' '404': description: Conversation not found content: application/json: schema: $ref: '#/components/schemas/bad_request_error' '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/bad_request_error'