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.
API Versioning
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
Authentication
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.
Error Handling
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
Removes a contact (customer or lead) from an existing conversation.
Note: You cannot remove the last participant from a conversation.
id- The conversation ID (short ID)
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The Featurebase ID of the contact to remove (24-character ObjectId) |
actingAdminId | string | No | Admin ID performing the action (for attribution) |
Returns the updated conversation object.
{
"id": "676f0f6765bdaa7d7d760f88",
"actingAdminId": "507f1f77bcf86cd799439011"
}{
"object": "conversation",
"id": "12345",
"participants": [
{ "type": "customer", "id": "676f0f6765bdaa7d7d760f89" }
],
...
}- 400 Bad Request - Cannot remove the last participant from a conversation
- 404 Not Found - Conversation or contact not found in participants
This endpoint is only available in API version 2026-01-01.nova and newer.
The Featurebase ID of the contact (customer or lead) to remove
- Mock serverhttps://docs.featurebase.app/_mock/rest-api/v2/conversations/{id}/participants
- Productionhttps://do.featurebase.app/v2/conversations/{id}/participants
- 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/participants \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Featurebase-Version: 2026-01-01.nova' \
-d '{
"id": "676f0f6765bdaa7d7d760f88",
"actingAdminId": "507f1f77bcf86cd799439011"
}'Success
ISO timestamp when priority was set
Participants in this conversation
State of AI agent handling for this conversation
ISO timestamp when bot state last changed
ISO timestamp of last activity
ISO timestamp when conversation started waiting
ISO timestamp until which conversation is snoozed
ISO timestamp when conversation was created
ISO timestamp when conversation was last updated
Read receipts indicating how far each participant has read in the conversation. Each receipt maps a user to their last-read conversation part. The tracked position reflects the system read state and may reference parts the user cannot directly view (e.g., a contact's read position may point to an internal admin note). Use these receipts to render read indicators and typing awareness, not to infer content access.
Array of conversation parts (messages). Only included when fetching a single conversation by ID.
{ "object": "conversation", "id": "12345", "title": "Question about pricing", "state": "open", "isBlocked": false, "priority": false, "prioritySetAt": "2025-01-15T10:30:00.000Z", "adminAssigneeId": "507f1f77bcf86cd799439011", "teamAssigneeId": "507f1f77bcf86cd799439012", "userPreferredLanguage": "en", "source": { "channel": "desktop", "deliveredAs": "customer_initiated", "subject": "Question about pricing", "bodyHtml": "<p>Hi, I have a question about your enterprise plan...</p>", "bodyMarkdown": "Hi, I have a question about your enterprise plan...", "author": { … }, "url": "https://example.com/pricing" }, "participants": [ { … } ], "botConversationState": "active", "botConversationStateLastUpdatedAt": "2025-01-15T10:30:00.000Z", "disableCustomerReply": false, "awaitingCustomerReply": true, "lastActivityAt": "2025-01-15T12:30:00.000Z", "waitingSince": "2025-01-15T10:30:00.000Z", "snoozedUntil": "2025-01-16T09:00:00.000Z", "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T12:30:00.000Z", "readReceipts": [ { … } ], "conversationParts": [ { … } ] }
Request
Redacts a conversation part (message) from a conversation. Redaction permanently removes the message content while preserving the conversation structure.
Only human message types can be redacted:
user_msg- Messages from customers/leadsadmin_msg- Messages from adminsemail_msg- Email messagesbot_msg- Bot messages
System-generated conversation parts (assignments, status changes, etc.) cannot be redacted.
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | The type of item to redact. Currently only "conversation_part" is supported. |
conversationId | string | Yes | The conversation short ID containing the part to redact |
conversationPartId | string | Yes | The conversation part short ID to redact |
actingAdminId | string | No | Admin ID performing the action (for attribution) |
Returns the updated conversation object.
{
"type": "conversation_part",
"conversationId": "12345",
"conversationPartId": "67890",
"actingAdminId": "507f1f77bcf86cd799439011"
}{
"object": "conversation",
"id": "12345",
"conversationParts": [
{
"object": "conversation_part",
"id": "67890",
"partType": "user_msg",
"bodyHtml": "",
"bodyMarkdown": "",
"redacted": true,
...
}
],
...
}- 400 Bad Request - Only human messages can be redacted
- 404 Not Found - Conversation or conversation part not found
This endpoint is only available in API version 2026-01-01.nova and newer.
The type of item to redact. Currently only "conversation_part" is supported.
The conversation short ID that contains the part to redact
The conversation part short ID to redact
- Mock serverhttps://docs.featurebase.app/_mock/rest-api/v2/conversations/redact
- Productionhttps://do.featurebase.app/v2/conversations/redact
- 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/redact \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Featurebase-Version: 2026-01-01.nova' \
-d '{
"type": "conversation_part",
"conversationId": "12345",
"conversationPartId": "67890",
"actingAdminId": "507f1f77bcf86cd799439011"
}'Success
ISO timestamp when priority was set
Participants in this conversation
State of AI agent handling for this conversation
ISO timestamp when bot state last changed
ISO timestamp of last activity
ISO timestamp when conversation started waiting
ISO timestamp until which conversation is snoozed
ISO timestamp when conversation was created
ISO timestamp when conversation was last updated
Read receipts indicating how far each participant has read in the conversation. Each receipt maps a user to their last-read conversation part. The tracked position reflects the system read state and may reference parts the user cannot directly view (e.g., a contact's read position may point to an internal admin note). Use these receipts to render read indicators and typing awareness, not to infer content access.
Array of conversation parts (messages). Only included when fetching a single conversation by ID.
{ "object": "conversation", "id": "12345", "title": "Question about pricing", "state": "open", "isBlocked": false, "priority": false, "prioritySetAt": "2025-01-15T10:30:00.000Z", "adminAssigneeId": "507f1f77bcf86cd799439011", "teamAssigneeId": "507f1f77bcf86cd799439012", "userPreferredLanguage": "en", "source": { "channel": "desktop", "deliveredAs": "customer_initiated", "subject": "Question about pricing", "bodyHtml": "<p>Hi, I have a question about your enterprise plan...</p>", "bodyMarkdown": "Hi, I have a question about your enterprise plan...", "author": { … }, "url": "https://example.com/pricing" }, "participants": [ { … } ], "botConversationState": "active", "botConversationStateLastUpdatedAt": "2025-01-15T10:30:00.000Z", "disableCustomerReply": false, "awaitingCustomerReply": true, "lastActivityAt": "2025-01-15T12:30:00.000Z", "waitingSince": "2025-01-15T10:30:00.000Z", "snoozedUntil": "2025-01-16T09:00:00.000Z", "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T12:30:00.000Z", "readReceipts": [ { … } ], "conversationParts": [ { … } ] }
CommentsCopy for LLM Copy page as Markdown for LLMs View as Markdown Open this page as Markdown Open in ChatGPT Get insights from ChatGPT Open in Claude Get insights from Claude Connect to Cursor Install MCP server on Cursor Connect to VS Code Install MCP server on VS Code
Threaded discussions on posts and changelogs. Comments support voting, moderation, and privacy controls.