Reply to a conversation
POST/v2/conversations/{id}/reply
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.
Reply to a conversation
curl https://do.featurebase.app/v2/conversations/$ID/reply \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $FEATUREBASE_API_KEY" \
-d '{
"bodyMarkdown": "Thank you for your help!",
"messageType": "reply",
"type": "contact",
"id": "676f0f6765bdaa7d7d760f88",
"userId": "user_123"
}'{
"id": "1",
"bodyHtml": "<p>Hello, I have a question about your product.</p>",
"bodyMarkdown": "Hello, I have a question about your product.",
"channel": "desktop",
"createdAt": "2025-01-15T10:30:00.000Z",
"object": "conversation_part",
"partType": "user_msg",
"updatedAt": "2025-01-15T10:30:00.000Z",
"author": {
"id": "676f0f6765bdaa7d7d760f88",
"type": "customer",
"email": "john@example.com",
"name": "John Doe",
"profilePicture": "https://cdn.example.com/avatars/user.png"
},
"redacted": false,
"tagApplications": [
{
"appliedAt": "2025-01-15T10:30:00.000Z",
"tagId": "67ec1234abcd5678ef901234",
"appliedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"removedAt": "2025-01-15T11:00:00.000Z",
"removedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"tag": {
"id": "67ec1234abcd5678ef901234",
"name": "Churn",
"type": "tag"
}
}
]
}Returns Examples
{
"id": "1",
"bodyHtml": "<p>Hello, I have a question about your product.</p>",
"bodyMarkdown": "Hello, I have a question about your product.",
"channel": "desktop",
"createdAt": "2025-01-15T10:30:00.000Z",
"object": "conversation_part",
"partType": "user_msg",
"updatedAt": "2025-01-15T10:30:00.000Z",
"author": {
"id": "676f0f6765bdaa7d7d760f88",
"type": "customer",
"email": "john@example.com",
"name": "John Doe",
"profilePicture": "https://cdn.example.com/avatars/user.png"
},
"redacted": false,
"tagApplications": [
{
"appliedAt": "2025-01-15T10:30:00.000Z",
"tagId": "67ec1234abcd5678ef901234",
"appliedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"removedAt": "2025-01-15T11:00:00.000Z",
"removedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"tag": {
"id": "67ec1234abcd5678ef901234",
"name": "Churn",
"type": "tag"
}
}
]
}