Reply to a conversation
Adds a reply to an existing conversation. Supports both contact (customer/lead) and admin replies.
Path Parameters
id- The conversation ID (short ID)
Request Body
The request body varies based on who is sending the reply:
Contact Reply (customer/lead)
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "contact" |
userId | string | No* | External user ID from your system |
id | string | No* | Featurebase contact ID (24-character ObjectId) |
bodyMarkdown | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
messageType | string | Yes | Must be "reply" |
skipNotifications | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
*At least one of userId or id is required.
Admin Reply
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "admin" |
id | string | Yes | Featurebase admin ID (24-character ObjectId) |
bodyMarkdown | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
messageType | string | Yes | "reply" for customer-visible reply, "note" for internal note |
skipNotifications | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
Response
Returns the created conversation part object with a 201 Created status. The response includes both bodyHtml (with signed image URLs) and bodyMarkdown fields.
Example Contact Reply
{
"type": "contact",
"userId": "user_123",
"bodyMarkdown": "Thank you for your help!",
"messageType": "reply"
}Example Admin Reply
{
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"bodyMarkdown": "I'm happy to help! Here's what you need to do...",
"messageType": "reply"
}Example Admin Note (Internal)
{
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
"messageType": "note"
}Example Response
{
"object": "conversation_part",
"id": "3",
"partType": "user_msg",
"bodyHtml": "<p>Thank you for your help!</p>",
"bodyMarkdown": "Thank you for your help!",
"author": {
"type": "customer",
"id": "676f0f6765bdaa7d7d760f88",
"name": "John Doe",
"email": "john@example.com"
},
"channel": "desktop",
"createdAt": "2025-01-15T10:40:00.000Z",
"updatedAt": "2025-01-15T10:40:00.000Z"
}Version Availability
This endpoint is only available in API version 2026-01-01.nova and newer.
Body
Reply from a customer or lead
Reply or internal note from an admin
Response
Created
Message from a customer or lead
Message from an admin or support agent
Internal note visible only to admins
Message sent via email
Automated message from AI or bot
Presents options for user to choose from
User's selection from quick reply options
Represents a persisted CSAT request in the conversation thread
Represents a persisted CSAT submission in the conversation thread
Requests information from user via form
Indicates form was completed
Conversation assigned to admin or team
Conversation state changed (open/closed/snoozed)
A tag was added to or removed from a specific reply
Represents a workflow wait start, finish, or interruption in the conversation thread
Conversation priority was updated
New participant joined the conversation