Skip to content
Dashboard

List all changelogs

GET/v2/changelogs

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)
Query ParametersExpand Collapse
id: optional string

Find changelog by its id (also accepts slug)

categories: optional string or array of string

Filter changelogs by category names (single value or array)

One of the following:
string
array of string
cursor: optional string

Cursor for pagination. Use nextCursor from previous response.

maxLength512
endDate: optional string

Include Changelogs dated on or before the specified end date

limit: optional number

Maximum number of changelogs to return

minimum1
maximum100
locale: optional "bn" or "bs" or "pt-BR" or 39 more

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

One of the following:
"bn"
"bs"
"pt-BR"
"bg"
"ca"
"hr"
"cs"
"da"
"nl"
"en"
"et"
"fi"
"fr"
"de"
"el"
"hi"
"hu"
"id"
"it"
"ja"
"ko"
"lv"
"lt"
"ms"
"mn"
"nb"
"pl"
"pt"
"ro"
"ru"
"sr"
"zh-CN"
"sk"
"sl"
"es"
"sw"
"sv"
"th"
"zh-TW"
"tr"
"uk"
"vi"
q: optional string

Search for changelogs by title or content

maxLength255
sortBy: optional "date"

Field to sort by

sortOrder: optional "asc" or "desc"

Sort direction

One of the following:
"asc"
"desc"
startDate: optional string

Include Changelogs dated on or after the specified start date

state: optional "draft" or "live" or "all"

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

One of the following:
"draft"
"live"
"all"
Header ParametersExpand Collapse
"Featurebase-Version": optional "2026-01-01.nova" or "2025-12-12.clover"
One of the following:
"2026-01-01.nova"
"2025-12-12.clover"
ReturnsExpand Collapse
data: array of Changelog { id, allowedSegmentIds, availableLocales, 21 more }

Array of changelogs

id: string

Unique identifier

allowedSegmentIds: array of string

Segment IDs that are allowed to view this changelog

availableLocales: array of string

Array of locale codes where the changelog has content

categories: array of object { id, name, roles }

Categories the changelog belongs to

id: string

Category unique identifier

name: string

Category name

roles: optional array of string

Roles allowed to view this category

commentCount: number

Number of comments

content: string

Content in HTML format

createdAt: string

ISO 8601 timestamp when created

date: string

Publication date as ISO 8601 timestamp

emailSentToSubscribers: boolean

Whether email notification was sent to subscribers

featuredImage: string

Featured image URL

isDraftDiffersFromLive: boolean

Whether the draft content differs from the published live content

isPublished: boolean

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

locale: "bn" or "bs" or "pt-BR" or 39 more

Locale of the changelog

One of the following:
"bn"
"bs"
"pt-BR"
"bg"
"ca"
"hr"
"cs"
"da"
"nl"
"en"
"et"
"fi"
"fr"
"de"
"el"
"hi"
"hu"
"id"
"it"
"ja"
"ko"
"lv"
"lt"
"ms"
"mn"
"nb"
"pl"
"pt"
"ro"
"ru"
"sr"
"zh-CN"
"sk"
"sl"
"es"
"sw"
"sv"
"th"
"zh-TW"
"tr"
"uk"
"vi"
markdownContent: string

Content in markdown format

notifications: map[object { scheduledDate, emailSent, hideFromBoardAndWidgets, sendEmailNotification } ]

Notification settings for each locale

scheduledDate: string

Scheduled publication date as ISO 8601 timestamp

emailSent: optional boolean

Whether the email notification has been sent

hideFromBoardAndWidgets: optional boolean

Whether the changelog is hidden from the board and widgets

sendEmailNotification: optional boolean

Whether email notification should be sent for this locale

object: "changelog"

Object type identifier

organization: string

Organization identifier

publishedLocales: array of string

Array of locale codes where the changelog is published

slug: string

URL-friendly slug

slugs: map[string]

URL-friendly slugs for each locale

state: "live" or "draft"

State of the changelog

One of the following:
"live"
"draft"
title: string

Changelog title

updatedAt: string

ISO 8601 timestamp when updated

url: string

Public URL to view the changelog

nextCursor: string

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

maxLength512
object: "list"

Object type identifier

List all changelogs

curl https://do.featurebase.app/v2/changelogs \
    -H "Authorization: Bearer $FEATUREBASE_API_KEY"
{
  "data": [
    {
      "id": "6457e3ff70afca5d8c27dccc",
      "allowedSegmentIds": [
        "string"
      ],
      "availableLocales": [
        "en",
        "de",
        "fr"
      ],
      "categories": [
        {
          "id": "6438a1efda3640f8feb72121",
          "name": "New Features",
          "roles": [
            "string"
          ]
        }
      ],
      "commentCount": 2,
      "content": "<p>Your changelog content in HTML format.</p>",
      "createdAt": "2023-12-12T00:00:00.000Z",
      "date": "2023-05-07T12:59:59.000Z",
      "emailSentToSubscribers": true,
      "featuredImage": "https://cdn.example.com/images/feature.png",
      "isDraftDiffersFromLive": false,
      "isPublished": true,
      "locale": "en",
      "markdownContent": "Your changelog content in markdown format.",
      "notifications": {
        "foo": {
          "scheduledDate": "2024-01-15T12:00:00.000Z",
          "emailSent": true,
          "hideFromBoardAndWidgets": false,
          "sendEmailNotification": true
        }
      },
      "object": "changelog",
      "organization": "myorg",
      "publishedLocales": [
        "en",
        "de"
      ],
      "slug": "your-awesome-changelog",
      "slugs": {
        "en": "your-awesome-changelog",
        "de": "dein-tolles-changelog"
      },
      "state": "live",
      "title": "Your awesome changelog!",
      "updatedAt": "2023-12-13T00:00:00.000Z",
      "url": "https://myorg.featurebase.app/en/changelog/your-awesome-changelog"
    }
  ],
  "nextCursor": "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9",
  "object": "list",
  "pagination": {
    "limit": 10,
    "page": 1,
    "total": 42,
    "totalPages": 5
  }
}
Returns Examples
{
  "data": [
    {
      "id": "6457e3ff70afca5d8c27dccc",
      "allowedSegmentIds": [
        "string"
      ],
      "availableLocales": [
        "en",
        "de",
        "fr"
      ],
      "categories": [
        {
          "id": "6438a1efda3640f8feb72121",
          "name": "New Features",
          "roles": [
            "string"
          ]
        }
      ],
      "commentCount": 2,
      "content": "<p>Your changelog content in HTML format.</p>",
      "createdAt": "2023-12-12T00:00:00.000Z",
      "date": "2023-05-07T12:59:59.000Z",
      "emailSentToSubscribers": true,
      "featuredImage": "https://cdn.example.com/images/feature.png",
      "isDraftDiffersFromLive": false,
      "isPublished": true,
      "locale": "en",
      "markdownContent": "Your changelog content in markdown format.",
      "notifications": {
        "foo": {
          "scheduledDate": "2024-01-15T12:00:00.000Z",
          "emailSent": true,
          "hideFromBoardAndWidgets": false,
          "sendEmailNotification": true
        }
      },
      "object": "changelog",
      "organization": "myorg",
      "publishedLocales": [
        "en",
        "de"
      ],
      "slug": "your-awesome-changelog",
      "slugs": {
        "en": "your-awesome-changelog",
        "de": "dein-tolles-changelog"
      },
      "state": "live",
      "title": "Your awesome changelog!",
      "updatedAt": "2023-12-13T00:00:00.000Z",
      "url": "https://myorg.featurebase.app/en/changelog/your-awesome-changelog"
    }
  ],
  "nextCursor": "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9",
  "object": "list",
  "pagination": {
    "limit": 10,
    "page": 1,
    "total": 42,
    "totalPages": 5
  }
}