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

List all changelogs

Request

Returns all changelogs for the authenticated organization.

Changelogs are release notes and updates that keep users informed about new features, improvements, and bug fixes. Each changelog can have:

  • Multiple translations (locales)
  • Categories for organization
  • Featured images
  • Scheduled publishing

Pagination

This endpoint uses cursor-based pagination:

  • limit - Number of changelogs to return (1-100, default 10)
  • cursor - Opaque cursor from a previous response's nextCursor field

Example: To paginate through results:

  1. First request: GET /v2/changelogs?limit=10
  2. If nextCursor is not null, use it for the next page
  3. Next request: GET /v2/changelogs?limit=10&cursor={nextCursor}

Response Format

Returns a list object with:

  • object - Always "list"
  • data - Array of changelog objects
  • nextCursor - Cursor for the next page (null if no more results)

Filtering

Filter changelogs using query parameters:

  • id - Find a specific changelog by ID or slug
  • q - Search query for title/content
  • categories - Filter by category names
  • locale - Get changelogs in a specific locale (defaults to org default)
  • state - Filter by state: live, draft, or all
  • startDate - Include changelogs dated on or after this date
  • endDate - Include changelogs dated on or before this date

Sorting

Results are sorted by date (descending by default):

  • sortBy - Field to sort by (currently only date)
  • sortOrder - Sort direction: asc or desc (default: desc)
Security
bearerAuth
Query
idstring

Find changelog by its id (also accepts slug)

Example: id=6457e3ff70afca5d8c27dccc
qstring<= 255 characters

Search for changelogs by title or content

Example: q=new feature
categoriesstring or Array of strings

Filter changelogs by category names (single value or array)

Example: categories=New&categories=Fixed
Any of:

Filter changelogs by category names (single value or array)

<= 255 characters
string<= 255 characters
localestring

The locale of the changelogs. Defaults to the organization default locale.

Enum"bn""bs""pt-BR""bg""ca""hr""cs""da""nl""en"
Example: locale=en
statestring

The state of the changelog. Use "all" to get both draft and live changelogs.

Default "live"
Enum"draft""live""all"
Example: state=live
startDatestring or null

Include Changelogs dated on or after the specified start date

Example: startDate=2024-01-01
endDatestring or null

Include Changelogs dated on or before the specified end date

Example: endDate=2024-12-31
limitinteger[ 1 .. 100 ]

Maximum number of changelogs to return

Default 10
Example: limit=10
cursorstring<= 512 characters

Cursor for pagination. Use nextCursor from previous response.

Example: cursor=eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9
sortBystring

Field to sort by

Default "date"
Value"date"
Example: sortBy=date
sortOrderstring

Sort direction

Default "desc"
Enum"asc""desc"
Example: sortOrder=desc
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/changelogs?id=6457e3ff70afca5d8c27dccc&q=new+feature&categories=New%2CFixed&locale=en&state=live&startDate=2024-01-01&endDate=2024-12-31&limit=10&cursor=eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9&sortBy=date&sortOrder=desc' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Featurebase-Version: 2026-01-01.nova'

Responses

Success

Bodyapplication/json
objectstringrequired

Object type identifier

Value"list"
Example: "list"
dataArray of objects(Changelog)required

Array of changelogs

Example: []
data[].​objectstringrequired

Object type identifier

Value"changelog"
Example: "changelog"
data[].​idstringrequired

Unique identifier

Example: "6457e3ff70afca5d8c27dccc"
data[].​titlestringrequired

Changelog title

Example: "Your awesome changelog!"
data[].​slugstringrequired

URL-friendly slug

Example: "your-awesome-changelog"
data[].​urlstringrequired

Public URL to view the changelog

Example: "https://myorg.featurebase.app/en/changelog/your-awesome-changelog"
data[].​contentstringrequired

Content in HTML format

Example: "<p>Your changelog content in HTML format.</p>"
data[].​markdownContentstring or nullrequired

Content in markdown format

Example: "Your changelog content in markdown format."
data[].​featuredImagestring or nullrequired

Featured image URL

Example: "https://cdn.example.com/images/feature.png"
data[].​datestringrequired

Publication date as ISO 8601 timestamp

Example: "2023-05-07T12:59:59.000Z"
data[].​statestringrequired

State of the changelog

Enum"live""draft"
Example: "live"
data[].​localestringrequired

Locale of the changelog

Enum"bn""bs""pt-BR""bg""ca""hr""cs""da""nl""en"
Example: "en"
data[].​isPublishedbooleanrequired

Whether the changelog is published (has a live version) in this locale

Example: true
data[].​isDraftDiffersFromLivebooleanrequired

Whether the draft content differs from the published live content

Example: false
data[].​publishedLocalesArray of stringsrequired

Array of locale codes where the changelog is published

Example: ["en","de"]
data[].​availableLocalesArray of stringsrequired

Array of locale codes where the changelog has content

Example: ["en","de","fr"]
data[].​slugsobjectrequired

URL-friendly slugs for each locale

Example: {"en":"your-awesome-changelog","de":"dein-tolles-changelog"}
data[].​slugs.​property name*stringadditional property
data[].​commentCountnumberrequired

Number of comments

Example: 2
data[].​categoriesArray of objects(ChangelogCategory)required

Categories the changelog belongs to

data[].​categories[].​idstringrequired

Category unique identifier

Example: "6438a1efda3640f8feb72121"
data[].​categories[].​namestringrequired

Category name

Example: "New Features"
data[].​categories[].​rolesArray of strings

Roles allowed to view this category

Example: []
data[].​organizationstringrequired

Organization identifier

Example: "myorg"
data[].​notificationsobjectrequired

Notification settings for each locale

data[].​notifications.​property name*object(ChangelogLocaleNotification)additional property
data[].​allowedSegmentIdsArray of stringsrequired

Segment IDs that are allowed to view this changelog

Example: []
data[].​emailSentToSubscribersbooleanrequired

Whether email notification was sent to subscribers

Example: true
data[].​createdAtstringrequired

ISO 8601 timestamp when created

Example: "2023-12-12T00:00:00.000Z"
data[].​updatedAtstringrequired

ISO 8601 timestamp when updated

Example: "2023-12-13T00:00:00.000Z"
nextCursorstring or null<= 512 charactersrequired

Cursor for fetching the next page (cursor-based pagination)

Example: "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9"
paginationobject

Pagination metadata for page-based requests

Response
application/json
{ "object": "list", "data": [], "nextCursor": "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9", "pagination": { "page": 1, "limit": 10, "total": 42, "totalPages": 5 } }

Create a new changelog

Request

Creates a new changelog for the authenticated organization.

Required Fields

  • title - The title of the changelog

Content

Provide content in one of two formats (at least one is required):

  • htmlContent - HTML content of the changelog
  • markdownContent - Markdown content of the changelog

Note: For images in content, you can use:

  • External URLs in img src attributes (automatically uploaded to our storage)
  • Base64 encoded data URIs (data:image/...) which are processed and stored

Optional Fields

  • categories - Array of category names (e.g., ["New", "Fixed", "Improved"])
  • featuredImage - URL of the featured image (external URLs are uploaded to our storage)
  • allowedSegmentIds - Array of segment IDs that are allowed to view the changelog
  • locale - The locale of the changelog (defaults to organization default)
  • date - The date of the changelog
  • state - The state of the changelog: draft (default) or live

Response

Returns the created changelog object.

Security
bearerAuth
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
titlestring[ 1 .. 512 ] charactersrequired

The title of the changelog

Example: "New Features Update"
htmlContentstring

The HTML content of the changelog. Provide either htmlContent or markdownContent. For images, external URLs and base64 data URIs are automatically processed and stored.

Example: "<p>Exciting new features to explore.</p>"
markdownContentstring

The markdown content of the changelog. Provide either htmlContent or markdownContent. For images, external URLs and base64 data URIs are automatically processed and stored.

Example: "Exciting new features to explore."
categoriesArray of strings<= 100 items

An array of category names to which the changelog belongs

Example: ["New","Fixed","Improved"]
featuredImagestring

The URL of the featured image for the changelog. External URLs will be uploaded to our storage.

Example: "https://example.com/image.png"
allowedSegmentIdsArray of strings<= 100 items

An array of segment IDs that are allowed to view the changelog

Example: ["507f1f77bcf86cd799439011"]
localestring

The locale of the changelog, defaulting to the organization default locale

Enum"bn""bs""pt-BR""bg""ca""hr""cs""da""nl""en"
Example: "en"
datestring or null

The date of the changelog

Example: "2024-01-15"
statestring

The state of the changelog (draft or live)

Default "draft"
Enum"draft""live"
Example: "draft"
curl -i -X POST \
  https://docs.featurebase.app/_mock/rest-api/v2/changelogs \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Featurebase-Version: 2026-01-01.nova' \
  -d '{
    "title": "New Features Update",
    "htmlContent": "<p>Exciting new features to explore.</p>",
    "markdownContent": "Exciting new features to explore.",
    "categories": [
      "New",
      "Fixed",
      "Improved"
    ],
    "featuredImage": "https://example.com/image.png",
    "allowedSegmentIds": [
      "507f1f77bcf86cd799439011"
    ],
    "locale": "en",
    "date": "2024-01-15",
    "state": "draft"
  }'

Responses

Created

Bodyapplication/json
objectstringrequired

Object type identifier

Value"changelog"
Example: "changelog"
idstringrequired

Unique identifier

Example: "6457e3ff70afca5d8c27dccc"
titlestringrequired

Changelog title

Example: "Your awesome changelog!"
slugstringrequired

URL-friendly slug

Example: "your-awesome-changelog"
urlstringrequired

Public URL to view the changelog

Example: "https://myorg.featurebase.app/en/changelog/your-awesome-changelog"
contentstringrequired

Content in HTML format

Example: "<p>Your changelog content in HTML format.</p>"
markdownContentstring or nullrequired

Content in markdown format

Example: "Your changelog content in markdown format."
featuredImagestring or nullrequired

Featured image URL

Example: "https://cdn.example.com/images/feature.png"
datestringrequired

Publication date as ISO 8601 timestamp

Example: "2023-05-07T12:59:59.000Z"
statestringrequired

State of the changelog

Enum"live""draft"
Example: "live"
localestringrequired

Locale of the changelog

Enum"bn""bs""pt-BR""bg""ca""hr""cs""da""nl""en"
Example: "en"
isPublishedbooleanrequired

Whether the changelog is published (has a live version) in this locale

Example: true
isDraftDiffersFromLivebooleanrequired

Whether the draft content differs from the published live content

Example: false
publishedLocalesArray of stringsrequired

Array of locale codes where the changelog is published

Example: ["en","de"]
availableLocalesArray of stringsrequired

Array of locale codes where the changelog has content

Example: ["en","de","fr"]
slugsobjectrequired

URL-friendly slugs for each locale

Example: {"en":"your-awesome-changelog","de":"dein-tolles-changelog"}
slugs.​property name*stringadditional property
commentCountnumberrequired

Number of comments

Example: 2
categoriesArray of objects(ChangelogCategory)required

Categories the changelog belongs to

categories[].​idstringrequired

Category unique identifier

Example: "6438a1efda3640f8feb72121"
categories[].​namestringrequired

Category name

Example: "New Features"
categories[].​rolesArray of strings

Roles allowed to view this category

Example: []
organizationstringrequired

Organization identifier

Example: "myorg"
notificationsobjectrequired

Notification settings for each locale

notifications.​property name*object(ChangelogLocaleNotification)additional property
allowedSegmentIdsArray of stringsrequired

Segment IDs that are allowed to view this changelog

Example: []
emailSentToSubscribersbooleanrequired

Whether email notification was sent to subscribers

Example: true
createdAtstringrequired

ISO 8601 timestamp when created

Example: "2023-12-12T00:00:00.000Z"
updatedAtstringrequired

ISO 8601 timestamp when updated

Example: "2023-12-13T00:00:00.000Z"
Response
application/json
{ "object": "changelog", "id": "6457e3ff70afca5d8c27dccc", "title": "Your awesome changelog!", "slug": "your-awesome-changelog", "url": "https://myorg.featurebase.app/en/changelog/your-awesome-changelog", "content": "<p>Your changelog content in HTML format.</p>", "markdownContent": "Your changelog content in markdown format.", "featuredImage": "https://cdn.example.com/images/feature.png", "date": "2023-05-07T12:59:59.000Z", "state": "live", "locale": "en", "isPublished": true, "isDraftDiffersFromLive": false, "publishedLocales": [ "en", "de" ], "availableLocales": [ "en", "de", "fr" ], "slugs": { "en": "your-awesome-changelog", "de": "dein-tolles-changelog" }, "commentCount": 2, "categories": [ { … } ], "organization": "myorg", "notifications": { "property1": { … }, "property2": { … } }, "allowedSegmentIds": [], "emailSentToSubscribers": true, "createdAt": "2023-12-12T00:00:00.000Z", "updatedAt": "2023-12-13T00:00:00.000Z" }

Get a changelog by ID

Request

Retrieves a single changelog by its unique identifier or slug.

Returns the full changelog object including:

  • Title and content (in HTML and markdown formats)
  • Featured image
  • Publication date
  • Categories
  • Comment count
  • Email notification status

Localization

The changelog content is returned in the organization's default locale. If the changelog doesn't exist in the default locale, the first available locale is used.

State

Both published (live) and draft changelogs can be retrieved. The state field indicates the current publication status.

Security
bearerAuth
Path
idstringrequired

Changelog 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/changelogs/507f1f77bcf86cd799439011 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Featurebase-Version: 2026-01-01.nova'

Responses

Success

Bodyapplication/json
objectstringrequired

Object type identifier

Value"changelog"
Example: "changelog"
idstringrequired

Unique identifier

Example: "6457e3ff70afca5d8c27dccc"
titlestringrequired

Changelog title

Example: "Your awesome changelog!"
slugstringrequired

URL-friendly slug

Example: "your-awesome-changelog"
urlstringrequired

Public URL to view the changelog

Example: "https://myorg.featurebase.app/en/changelog/your-awesome-changelog"
contentstringrequired

Content in HTML format

Example: "<p>Your changelog content in HTML format.</p>"
markdownContentstring or nullrequired

Content in markdown format

Example: "Your changelog content in markdown format."
featuredImagestring or nullrequired

Featured image URL

Example: "https://cdn.example.com/images/feature.png"
datestringrequired

Publication date as ISO 8601 timestamp

Example: "2023-05-07T12:59:59.000Z"
statestringrequired

State of the changelog

Enum"live""draft"
Example: "live"
localestringrequired

Locale of the changelog

Enum"bn""bs""pt-BR""bg""ca""hr""cs""da""nl""en"
Example: "en"
isPublishedbooleanrequired

Whether the changelog is published (has a live version) in this locale

Example: true
isDraftDiffersFromLivebooleanrequired

Whether the draft content differs from the published live content

Example: false
publishedLocalesArray of stringsrequired

Array of locale codes where the changelog is published

Example: ["en","de"]
availableLocalesArray of stringsrequired

Array of locale codes where the changelog has content

Example: ["en","de","fr"]
slugsobjectrequired

URL-friendly slugs for each locale

Example: {"en":"your-awesome-changelog","de":"dein-tolles-changelog"}
slugs.​property name*stringadditional property
commentCountnumberrequired

Number of comments

Example: 2
categoriesArray of objects(ChangelogCategory)required

Categories the changelog belongs to

categories[].​idstringrequired

Category unique identifier

Example: "6438a1efda3640f8feb72121"
categories[].​namestringrequired

Category name

Example: "New Features"
categories[].​rolesArray of strings

Roles allowed to view this category

Example: []
organizationstringrequired

Organization identifier

Example: "myorg"
notificationsobjectrequired

Notification settings for each locale

notifications.​property name*object(ChangelogLocaleNotification)additional property
allowedSegmentIdsArray of stringsrequired

Segment IDs that are allowed to view this changelog

Example: []
emailSentToSubscribersbooleanrequired

Whether email notification was sent to subscribers

Example: true
createdAtstringrequired

ISO 8601 timestamp when created

Example: "2023-12-12T00:00:00.000Z"
updatedAtstringrequired

ISO 8601 timestamp when updated

Example: "2023-12-13T00:00:00.000Z"
Response
application/json
{ "object": "changelog", "id": "6457e3ff70afca5d8c27dccc", "title": "Your awesome changelog!", "slug": "your-awesome-changelog", "url": "https://myorg.featurebase.app/en/changelog/your-awesome-changelog", "content": "<p>Your changelog content in HTML format.</p>", "markdownContent": "Your changelog content in markdown format.", "featuredImage": "https://cdn.example.com/images/feature.png", "date": "2023-05-07T12:59:59.000Z", "state": "live", "locale": "en", "isPublished": true, "isDraftDiffersFromLive": false, "publishedLocales": [ "en", "de" ], "availableLocales": [ "en", "de", "fr" ], "slugs": { "en": "your-awesome-changelog", "de": "dein-tolles-changelog" }, "commentCount": 2, "categories": [ { … } ], "organization": "myorg", "notifications": { "property1": { … }, "property2": { … } }, "allowedSegmentIds": [], "emailSentToSubscribers": true, "createdAt": "2023-12-12T00:00:00.000Z", "updatedAt": "2023-12-13T00:00:00.000Z" }

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