Skip to content

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.

Download OpenAPI description
Languages
Servers
Mock server
https://docs.featurebase.app/_mock/rest-api/
Production
https://do.featurebase.app/

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.nova

Or 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 - Success
  • 4xx - 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

TypeDescription
authentication_errorAuthentication failed (401)
authorization_errorPermission denied (403)
invalid_request_errorInvalid request parameters or resource not found (400, 404, 410)
api_errorServer-side error (500)
rate_limit_errorToo many requests (429)

Boards

Boards (post categories) organize feedback into distinct containers with their own settings.

Operations

Posts

User-submitted feedback and feature requests. Posts belong to boards and can be upvoted, commented on, and tracked through statuses.

Operations

Post Statuses

Post statuses define the workflow stages for posts (e.g., In Review, Active, Completed).

Operations

Comments

Threaded discussions on posts and changelogs. Comments support voting, moderation, and privacy controls.

Operations

Custom Fields

Configurable input fields for posts in your Featurebase organization. Custom fields allow you to collect additional structured data when users create posts.

Operations

Changelogs

Release notes and updates published by the organization. Changelogs keep users informed about new features, improvements, and fixes.

Operations

Admins

Team members who manage your Featurebase organization. Admins have roles that define their permissions.

Operations

Teams

Teams are groups within your Featurebase organization. Use this endpoint to list and retrieve team information for conversation assignment and organization management.

Operations

Contacts

Contacts are the customers and leads in your Featurebase organization. Use this endpoint to list and retrieve contact information.

Operations

Companies

Companies represent organizations or businesses that your users belong to. Use this endpoint to list and retrieve company information.

Operations

Surveys

Surveys allow you to collect targeted feedback from your users within your product. Surveys can be targeted to specific user segments or pages and can contain multiple questions with conditional logic.

Operations

Help Centers

Help centers allow organizations to create and manage knowledge bases with articles and collections. Currently, Featurebase supports one help center per organization.

Operations

Conversations

Conversations are messenger/inbox conversations in your Featurebase organization. Use this endpoint to list and retrieve conversation information.

Operations

Webhooks

Webhooks allow you to receive real-time HTTP callbacks when events occur in your Featurebase organization. Configure webhook endpoints to subscribe to specific event types.

Operations

Get webhook by ID

Request

Retrieves a single webhook by its unique identifier.

Path Parameters

  • id - The webhook ID (24-character ObjectId)

Response Format

Returns a webhook object with:

  • object - Always "webhook"
  • id - Unique webhook identifier
  • name - Human-readable webhook name
  • url - Webhook endpoint URL
  • description - Optional description
  • topics - Array of subscribed event topics
  • status - Current status ("active", "paused", "suspended")
  • requestConfig - Request configuration (timeout, headers)
  • lastStatus - Last delivery attempt status
  • health - Health metrics
  • createdAt - Creation timestamp
  • updatedAt - Last update timestamp

The response includes the webhook signing secret for payload verification.

Example

{
  "object": "webhook",
  "id": "507f1f77bcf86cd799439011",
  "name": "Production Webhook",
  "url": "https://example.com/webhooks",
  "description": "Handles all production events",
  "topics": ["post.created", "post.updated"],
  "status": "active",
  "requestConfig": {
    "timeoutMs": 5000,
    "headers": {}
  },
  "lastStatus": {
    "code": 200,
    "message": "Success",
    "timestamp": "2025-01-15T10:30:00.000Z"
  },
  "health": {
    "lastResponseTime": 150,
    "avgResponseTime": 200,
    "lastSuccessAt": "2025-01-15T10:30:00.000Z",
    "errorsSinceLastSuccess": 0,
    "consecutiveFailures": 0
  },
  "createdAt": "2025-01-01T00:00:00.000Z",
  "updatedAt": "2025-01-15T10:30:00.000Z"
}

Version Availability

This endpoint is only available in API version 2026-01-01.nova and newer.

Security
bearerAuth
Path
idstringrequired

Webhook unique identifier

Example: 507f1f77bcf86cd799439011
Headers
Featurebase-Versionstring(FeaturebaseVersion)

API version for this request. Defaults to your organization's configured API version if not specified.

Example: 2026-01-01.nova
curl -i -X GET \
  https://docs.featurebase.app/_mock/rest-api/v2/webhooks/507f1f77bcf86cd799439011 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Featurebase-Version: 2026-01-01.nova'

Responses

Success

Bodyapplication/json
objectstringrequired

Object type identifier

Value"webhook"
Example: "webhook"
idstringrequired

Unique identifier

Example: "507f1f77bcf86cd799439011"
namestringrequired

Human-readable webhook name

Example: "Production Webhook"
urlstringrequired

Webhook endpoint URL

Example: "https://example.com/webhooks"
secretstringrequired

Webhook signing secret for verifying payloads

Example: "whsec_abc123def456ghi789"
descriptionstring or nullrequired

Optional description of the webhook purpose

Example: "Handles all production events"
topicsArray of stringsrequired

Array of event topics the webhook subscribes to

Items Enum"post.created""post.updated""post.deleted""post.voted""changelog.published""comment.created""comment.updated""comment.deleted"
Example: ["post.created","post.updated"]
statusstringrequired

Current status of the webhook

Enum"active""paused""suspended"
Example: "active"
requestConfigobject(WebhookRequestConfig)required
requestConfig.​timeoutMsinteger[ 1000 .. 30000 ]required

Request timeout in milliseconds (1000-30000)

Example: 5000
requestConfig.​headersobject

Custom headers to send with webhook requests

Example: {"X-Custom-Header":"value"}
lastStatusobject or null(WebhookLastStatus)required

Last delivery attempt status

lastStatus.​codeintegerrequired

HTTP status code from last delivery attempt

Example: 200
lastStatus.​messagestringrequired

Status message from last delivery attempt

Example: "Success"
lastStatus.​timestampstringrequired

ISO timestamp of last status update

Example: "2025-01-15T10:30:00.000Z"
healthobject(WebhookHealth)required
health.​lastResponseTimenumberrequired

Last response time in milliseconds

Example: 150
health.​avgResponseTimenumberrequired

Average response time in milliseconds

Example: 200
health.​lastSuccessAtstring or nullrequired

ISO timestamp of last successful delivery

Example: "2025-01-15T10:30:00.000Z"
health.​errorsSinceLastSuccessintegerrequired

Number of errors since last successful delivery

Example: 0
health.​consecutiveFailuresintegerrequired

Number of consecutive delivery failures

Example: 0
versionstringrequired

API version for webhook payloads

Example: "1.0"
createdAtstringrequired

ISO timestamp when the webhook was created

Example: "2025-01-15T10:30:00.000Z"
updatedAtstringrequired

ISO timestamp when the webhook was last updated

Example: "2025-01-15T10:30:00.000Z"
Response
application/json
{ "object": "webhook", "id": "507f1f77bcf86cd799439011", "name": "Production Webhook", "url": "https://example.com/webhooks", "secret": "whsec_abc123def456ghi789", "description": "Handles all production events", "topics": [ "post.created", "post.updated" ], "status": "active", "requestConfig": { "timeoutMs": 5000, "headers": { … } }, "lastStatus": { "code": 200, "message": "Success", "timestamp": "2025-01-15T10:30:00.000Z" }, "health": { "lastResponseTime": 150, "avgResponseTime": 200, "lastSuccessAt": "2025-01-15T10:30:00.000Z", "errorsSinceLastSuccess": 0, "consecutiveFailures": 0 }, "version": "1.0", "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T10:30:00.000Z" }

Update a webhook

Request

Updates a webhook's properties. Supports partial updates - only provided fields will be updated.

Path Parameters

  • id - The webhook ID (24-character ObjectId)

Request Body

All fields are optional. Only provided fields will be updated.

FieldTypeDescription
namestringHuman-readable name (max 100 chars)
urlstringWebhook endpoint URL (must be HTTPS)
descriptionstring/nullDescription (null to clear)
topicsstring[]Event topics to subscribe to
statusstring"active" to reactivate, "paused" to pause delivery
requestConfigobjectRequest configuration
requestConfig.headersobjectCustom headers to send (max 10)

Pausing and Reactivating Webhooks

You can pause a webhook to temporarily stop receiving events:

{
  "status": "paused"
}

Webhooks may also be automatically paused or suspended due to delivery failures. To reactivate:

{
  "status": "active"
}

Reactivating a webhook resets the health metrics and allows it to receive events again.

Example: Update Topics

{
  "topics": ["post.created", "post.updated", "post.deleted"]
}

Example: Update Request Config

{
  "requestConfig": {
    "headers": {
      "X-Custom-Header": "new-value"
    }
  }
}

Version Availability

This endpoint is only available in API version 2026-01-01.nova and newer.

Security
bearerAuth
Path
idstringrequired

Webhook unique identifier

Example: 507f1f77bcf86cd799439011
Headers
Featurebase-Versionstring(FeaturebaseVersion)

API version for this request. Defaults to your organization's configured API version if not specified.

Example: 2026-01-01.nova
Bodyapplication/json
namestring[ 1 .. 255 ] characters

Human-readable name for the webhook

Example: "Production Webhook"
urlstring

Webhook endpoint URL (must be HTTPS)

Example: "https://example.com/webhooks"
descriptionstring or null<= 500 characters

Optional description of the webhook purpose (null to clear)

Example: "Handles all production events"
topicsArray of stringsnon-empty

Array of event topics to subscribe to

Items Enum"post.created""post.updated""post.deleted""post.voted""changelog.published""comment.created""comment.updated""comment.deleted"
Example: ["post.created","post.updated"]
statusstring

Set to "active" to reactivate or "paused" to pause webhook delivery

Enum"active""paused"
Example: "active"
requestConfigobject(WebhookRequestConfigInput)

Request configuration for webhook delivery

curl -i -X PATCH \
  https://docs.featurebase.app/_mock/rest-api/v2/webhooks/507f1f77bcf86cd799439011 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Featurebase-Version: 2026-01-01.nova' \
  -d '{
    "name": "Production Webhook",
    "url": "https://example.com/webhooks",
    "description": "Handles all production events",
    "topics": [
      "post.created",
      "post.updated"
    ],
    "status": "active",
    "requestConfig": {
      "headers": {
        "X-Custom-Header": "value"
      }
    }
  }'

Responses

Success

Bodyapplication/json
objectstringrequired

Object type identifier

Value"webhook"
Example: "webhook"
idstringrequired

Unique identifier

Example: "507f1f77bcf86cd799439011"
namestringrequired

Human-readable webhook name

Example: "Production Webhook"
urlstringrequired

Webhook endpoint URL

Example: "https://example.com/webhooks"
secretstringrequired

Webhook signing secret for verifying payloads

Example: "whsec_abc123def456ghi789"
descriptionstring or nullrequired

Optional description of the webhook purpose

Example: "Handles all production events"
topicsArray of stringsrequired

Array of event topics the webhook subscribes to

Items Enum"post.created""post.updated""post.deleted""post.voted""changelog.published""comment.created""comment.updated""comment.deleted"
Example: ["post.created","post.updated"]
statusstringrequired

Current status of the webhook

Enum"active""paused""suspended"
Example: "active"
requestConfigobject(WebhookRequestConfig)required
requestConfig.​timeoutMsinteger[ 1000 .. 30000 ]required

Request timeout in milliseconds (1000-30000)

Example: 5000
requestConfig.​headersobject

Custom headers to send with webhook requests

Example: {"X-Custom-Header":"value"}
lastStatusobject or null(WebhookLastStatus)required

Last delivery attempt status

lastStatus.​codeintegerrequired

HTTP status code from last delivery attempt

Example: 200
lastStatus.​messagestringrequired

Status message from last delivery attempt

Example: "Success"
lastStatus.​timestampstringrequired

ISO timestamp of last status update

Example: "2025-01-15T10:30:00.000Z"
healthobject(WebhookHealth)required
health.​lastResponseTimenumberrequired

Last response time in milliseconds

Example: 150
health.​avgResponseTimenumberrequired

Average response time in milliseconds

Example: 200
health.​lastSuccessAtstring or nullrequired

ISO timestamp of last successful delivery

Example: "2025-01-15T10:30:00.000Z"
health.​errorsSinceLastSuccessintegerrequired

Number of errors since last successful delivery

Example: 0
health.​consecutiveFailuresintegerrequired

Number of consecutive delivery failures

Example: 0
versionstringrequired

API version for webhook payloads

Example: "1.0"
createdAtstringrequired

ISO timestamp when the webhook was created

Example: "2025-01-15T10:30:00.000Z"
updatedAtstringrequired

ISO timestamp when the webhook was last updated

Example: "2025-01-15T10:30:00.000Z"
Response
application/json
{ "object": "webhook", "id": "507f1f77bcf86cd799439011", "name": "Production Webhook", "url": "https://example.com/webhooks", "secret": "whsec_abc123def456ghi789", "description": "Handles all production events", "topics": [ "post.created", "post.updated" ], "status": "active", "requestConfig": { "timeoutMs": 5000, "headers": { … } }, "lastStatus": { "code": 200, "message": "Success", "timestamp": "2025-01-15T10:30:00.000Z" }, "health": { "lastResponseTime": 150, "avgResponseTime": 200, "lastSuccessAt": "2025-01-15T10:30:00.000Z", "errorsSinceLastSuccess": 0, "consecutiveFailures": 0 }, "version": "1.0", "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T10:30:00.000Z" }

Delete a webhook

Request

Permanently deletes a webhook.

Path Parameters

  • id - The webhook ID (24-character ObjectId)

Response

Returns a deletion confirmation object:

{
  "id": "507f1f77bcf86cd799439011",
  "object": "webhook",
  "deleted": true
}

Caution

This operation is irreversible. The webhook and its configuration will be permanently deleted. After deletion, no events will be sent to the webhook endpoint.

Version Availability

This endpoint is only available in API version 2026-01-01.nova and newer.

Security
bearerAuth
Path
idstringrequired

Webhook unique identifier

Example: 507f1f77bcf86cd799439011
Headers
Featurebase-Versionstring(FeaturebaseVersion)

API version for this request. Defaults to your organization's configured API version if not specified.

Example: 2026-01-01.nova
curl -i -X DELETE \
  https://docs.featurebase.app/_mock/rest-api/v2/webhooks/507f1f77bcf86cd799439011 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Featurebase-Version: 2026-01-01.nova'

Responses

Success

Bodyapplication/json
idstringrequired

Unique identifier of the deleted webhook

Example: "507f1f77bcf86cd799439011"
objectstringrequired

Object type identifier

Value"webhook"
Example: "webhook"
deletedbooleanrequired

Indicates the resource was deleted

Valuetrue
Example: true
Response
application/json
{ "id": "507f1f77bcf86cd799439011", "object": "webhook", "deleted": true }