Boards (post categories) organize feedback into distinct containers with their own settings.
Featurebase API (2026-01-01.nova)
Welcome to the Featurebase API. This API allows you to programmatically interact with your Featurebase organization.
This documentation reflects API version 2026-01-01.nova.
This API uses date-based versioning. Each version is identified by a release date and slug, e.g., 2026-01-01.nova.
Specifying a Version
Include the version in the request header:
Featurebase-Version: 2026-01-01.novaOr set a default version for your organization in the dashboard settings.
Version Compatibility
- Newer versions may add new fields to responses (always backwards-compatible)
- Breaking changes (removed/renamed fields, changed behavior) only occur in new versions
- Your integration will continue to work as long as you pin to a specific version
All API requests require authentication via API key.
Include in headers:
Authorization: Bearer <api-key>Create and manage your API keys in the Featurebase dashboard.
The API uses conventional HTTP response codes to indicate success or failure:
2xx- Success4xx- Client errors (bad request, unauthorized, not found, etc.)5xx- Server errors (internal error)
Error Response Format
All errors follow a consistent format:
{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "Post not found",
"param": "id",
"status": 404
}
}Error Types
| Type | Description |
|---|---|
authentication_error | Authentication failed (401) |
authorization_error | Permission denied (403) |
invalid_request_error | Invalid request parameters or resource not found (400, 404, 410) |
api_error | Server-side error (500) |
rate_limit_error | Too many requests (429) |
Request
Attaches a workspace tag to a conversation.
This endpoint requires both the tag ID to attach and the actingAdminId of the admin on whose behalf the mutation is recorded.
id- The conversation ID (short ID)
| Field | Type | Required | Description |
|---|---|---|---|
tagId | string | Yes | The Featurebase tag ID to attach |
actingAdminId | string | Yes | The admin performing the mutation. Must be a member of the organization. |
Featurebase resolves the latest taggable reply/message in the conversation and records the tag attachment against that part so audit metadata remains deterministic.
Returns the affected tag plus attachment metadata such as targetPartId, appliedAt, and appliedBy.
{
"tagId": "67ec1234abcd5678ef901234",
"actingAdminId": "507f1f77bcf86cd799439011"
}This endpoint is only available in API version 2026-01-01.nova and newer.
The Featurebase tag ID to attach to the conversation.
- Mock serverhttps://docs.featurebase.app/_mock/rest-api/v2/conversations/{id}/tags
- Productionhttps://do.featurebase.app/v2/conversations/{id}/tags
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.featurebase.app/_mock/rest-api/v2/conversations/12345/tags \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Featurebase-Version: 2026-01-01.nova' \
-d '{
"tagId": "67ec1234abcd5678ef901234",
"actingAdminId": "507f1f77bcf86cd799439011"
}'{ "type": "tag", "id": "67ec1234abcd5678ef901234", "name": "Churn", "targetPartId": "67890", "appliedAt": "2025-01-15T10:30:00.000Z", "appliedBy": { "type": "admin", "id": "507f1f77bcf86cd799439011", "name": "John Doe" }, "removedAt": "2025-01-15T11:00:00.000Z", "removedBy": { "type": "admin", "id": "507f1f77bcf86cd799439011", "name": "John Doe" } }
Request
Removes a workspace tag from a conversation.
This endpoint requires the actingAdminId of the admin on whose behalf the mutation is recorded.
id- The conversation ID (short ID)tagId- The Featurebase tag ID to remove
| Field | Type | Required | Description |
|---|---|---|---|
actingAdminId | string | Yes | The admin performing the mutation. Must be a member of the organization. |
Featurebase resolves the latest taggable reply/message in the conversation and records the tag removal against that part so audit metadata remains deterministic.
Returns the affected tag payload with the most relevant attachment metadata available for that relationship.
{
"actingAdminId": "507f1f77bcf86cd799439011"
}This endpoint is only available in API version 2026-01-01.nova and newer.
- Mock serverhttps://docs.featurebase.app/_mock/rest-api/v2/conversations/{id}/tags/{tagId}
- Productionhttps://do.featurebase.app/v2/conversations/{id}/tags/{tagId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
https://docs.featurebase.app/_mock/rest-api/v2/conversations/12345/tags/67ec1234abcd5678ef901234 \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Featurebase-Version: 2026-01-01.nova' \
-d '{
"actingAdminId": "507f1f77bcf86cd799439011"
}'{ "type": "tag", "id": "67ec1234abcd5678ef901234", "name": "Churn", "targetPartId": "67890", "appliedAt": "2025-01-15T10:30:00.000Z", "appliedBy": { "type": "admin", "id": "507f1f77bcf86cd799439011", "name": "John Doe" }, "removedAt": "2025-01-15T11:00:00.000Z", "removedBy": { "type": "admin", "id": "507f1f77bcf86cd799439011", "name": "John Doe" } }
Request
Adds a reply to an existing conversation. Supports both contact (customer/lead) and admin replies.
id- The conversation ID (short ID)
The request body varies based on who is sending the reply:
| 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.
| 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. |
Returns the created conversation part object with a 201 Created status. The response includes both bodyHtml (with signed image URLs) and bodyMarkdown fields.
{
"type": "contact",
"userId": "user_123",
"bodyMarkdown": "Thank you for your help!",
"messageType": "reply"
}{
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"bodyMarkdown": "I'm happy to help! Here's what you need to do...",
"messageType": "reply"
}{
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
"messageType": "note"
}{
"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"
}This endpoint is only available in API version 2026-01-01.nova and newer.
The type of author. Use "contact" for customer/lead replies.
The content of the reply message in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored.
The type of message. Always "reply" for contact replies.
- Mock serverhttps://docs.featurebase.app/_mock/rest-api/v2/conversations/{id}/reply
- Productionhttps://do.featurebase.app/v2/conversations/{id}/reply
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
- contact
- admin
curl -i -X POST \
https://docs.featurebase.app/_mock/rest-api/v2/conversations/12345/reply \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Featurebase-Version: 2026-01-01.nova' \
-d '{
"type": "contact",
"userId": "user_123",
"id": "676f0f6765bdaa7d7d760f88",
"bodyMarkdown": "Thank you for your help!",
"messageType": "reply",
"skipNotifications": false
}'Created
ISO timestamp when the part was last updated
Reply-level tag applications and provenance for this conversation part
User message type
- user_msg
- admin_msg
- admin_note
- email_msg
- bot_msg
- quick_reply_opts
- quick_reply_resp
- rating_requested
- rating_submitted
- attr_prompt
- attr_complete
- assign
- status
- tags
- workflow_wait
- priority
- part_add
Message body content as HTML with signed image URLs
Message body content as markdown
- user_msg
- admin_msg
- admin_note
- email_msg
- bot_msg
- quick_reply_opts
- quick_reply_resp
- rating_requested
- rating_submitted
- attr_prompt
- attr_complete
- assign
- status
- tags
- workflow_wait
- priority
- part_add
{ "object": "conversation_part", "id": "1", "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T10:30:00.000Z", "author": { "type": "customer", "id": "676f0f6765bdaa7d7d760f88", "name": "John Doe", "email": "john@example.com", "profilePicture": "https://cdn.example.com/avatars/user.png" }, "redacted": false, "tagApplications": [ { … } ], "partType": "user_msg", "bodyHtml": "<p>Hello, I have a question about your product.</p>", "bodyMarkdown": "Hello, I have a question about your product.", "channel": "desktop" }
Comments
Threaded discussions on posts and changelogs. Comments support voting, moderation, and privacy controls.