Skip to content
Dashboard

Create a new changelog

client.changelogs.create(ChangelogCreateParams { title, allowedSegmentIds, categories, 8 more } params, RequestOptionsoptions?): Changelog { id, allowedSegmentIds, availableLocales, 21 more }
POST/v2/changelogs

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.

Batched translations (Orbit only)

In API version 2026-08-19.orbit, optional translations accepts a locale-keyed dictionary of title, htmlContent or markdownContent, and featuredImage. Every listed locale (including an explicit top-level locale) must be enabled for the organization’s changelogs, even if a translation already exists. New translations require title and nonempty content. Top-level title and content remain required on creation; supplied top-level content must be nonempty in nonempty batches. Top-level localized fields override the entry for locale (or the organization default); a top-level content format replaces the entry’s content input. Nonempty batches save all drafts together and return the primary draft with draft availableLocales. Publication is separate. Omitted or empty dictionaries retain the existing flow. Completed uploads are not rolled back on failure.

ParametersExpand Collapse
params: ChangelogCreateParams { title, allowedSegmentIds, categories, 8 more }
title: string

Body param: The title of the changelog

minLength1
maxLength512
allowedSegmentIds?: Array<string>

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

categories?: Array<string>

Body param: An array of category names to which the changelog belongs

date?: string | null

Body param: The date of the changelog

featuredImage?: string

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

htmlContent?: string

Body param: HTML content of the changelog. Provide either htmlContent or markdownContent. Supports Featurebase custom blocks (callouts, multi-code, accordions, columns, file/image/video, iframes) — see the Content Components guide. External image URLs and base64 data URIs are uploaded to our storage automatically.

locale?: "ar" | "am" | "fa" | 68 more

Body param: The locale of the changelog, defaulting to the organization default locale

One of the following:
"ar"
"am"
"fa"
"ht"
"lo"
"my"
"pa"
"ps"
"so"
"tl"
"ur"
"he"
"ta"
"te"
"mr"
"gu"
"kn"
"ml"
"ha"
"jv"
"yo"
"ig"
"uz"
"ne"
"sd"
"az"
"si"
"km"
"kk"
"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

Body param: Markdown content of the changelog (CommonMark + GFM). Provide either htmlContent or markdownContent. Markdown is converted to plain HTML — to use Featurebase custom blocks (callouts, multi-code, accordions, columns) send htmlContent instead. See the Content Components guide.

state?: "draft" | "live"

Body param: The state of the changelog (draft or live)

One of the following:
"draft"
"live"
translations?: Translations

Body param: Locale-keyed draft updates. Every listed locale must be enabled for the organization. New translations require title and nonempty htmlContent or markdownContent; existing translations preserve omitted fields. Do not combine content formats within an entry. For nonempty batches, supplied top-level content must also be nonempty. Top-level localized fields override the primary-locale entry (HTML/Markdown are one content field). An empty dictionary uses the existing flow; an empty existing-locale entry is a no-op. Nonempty batches are saved together and return the primary draft with draft availableLocales. On PATCH, if the current organization default draft is absent, return the first edited locale in alphabetical order; for an all-no-op batch, return the first listed draft in alphabetical order. The response locale identifies the selected draft. Publication is separate. Uploaded assets are not rolled back on failure.

id?: ID { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
am?: Am { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ar?: Ar { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
az?: Az { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
bg?: Bg { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
bn?: Bn { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
bs?: Bs { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ca?: Ca { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
cs?: Cs { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
da?: Da { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
de?: De { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
el?: El { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
en?: En { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
es?: Es { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
et?: Et { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
fa?: Fa { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
fi?: Fi { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
fr?: Fr { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
gu?: Gu { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ha?: Ha { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
he?: He { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
hi?: Hi { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
hr?: Hr { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ht?: Ht { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
hu?: Hu { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ig?: Ig { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
it?: It { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ja?: Ja { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
jv?: Jv { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
kk?: Kk { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
km?: Km { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
kn?: Kn { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ko?: Ko { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
lo?: Lo { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
lt?: Lt { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
lv?: Lv { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ml?: Ml { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
mn?: Mn { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
mr?: Mr { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ms?: Ms { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
my?: My { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
nb?: Nb { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ne?: Ne { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
nl?: Nl { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
pa?: Pa { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
pl?: Pl { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ps?: Ps { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
pt?: Pt { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
"pt-BR"?: PtBr { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ro?: Ro { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ru?: Ru { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
sd?: Sd { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
si?: Si { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
sk?: Sk { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
sl?: Sl { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
so?: So { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
sr?: Sr { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
sv?: Sv { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
sw?: Sw { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ta?: Ta { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
te?: Te { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
th?: Th { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
tl?: Tl { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
tr?: Tr { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
uk?: Uk { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
ur?: Ur { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
uz?: Uz { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
vi?: Vi { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
yo?: Yo { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
"zh-CN"?: ZhCn { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
"zh-TW"?: ZhTw { featuredImage, htmlContent, markdownContent, title }
featuredImage?: string
htmlContent?: string
markdownContent?: string
title?: string
minLength1
maxLength512
featurebaseVersion?: "2026-08-19.orbit" | "2026-01-01.nova" | "2025-12-12.clover"

Header param: API version for this request. Defaults to your organization’s configured API version if not specified.

One of the following:
"2026-08-19.orbit"
"2026-01-01.nova"
"2025-12-12.clover"
ReturnsExpand Collapse
Changelog { id, allowedSegmentIds, availableLocales, 21 more }
id: string

Unique identifier

allowedSegmentIds: Array<string>

Segment IDs that are allowed to view this changelog

availableLocales: Array<string>

Array of locale codes where the changelog has content

categories: Array<Category>

Categories the changelog belongs to

id: string

Category unique identifier

name: string

Category name

roles?: Array<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 | null

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: "ar" | "am" | "fa" | 68 more

Locale of the changelog

One of the following:
"ar"
"am"
"fa"
"ht"
"lo"
"my"
"pa"
"ps"
"so"
"tl"
"ur"
"he"
"ta"
"te"
"mr"
"gu"
"kn"
"ml"
"ha"
"jv"
"yo"
"ig"
"uz"
"ne"
"sd"
"az"
"si"
"km"
"kk"
"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 | null

Content in markdown format

notifications: Record<string, Notifications>

Notification settings for each locale

scheduledDate: string | null

Scheduled publication date as ISO 8601 timestamp

emailSent?: boolean

Whether the email notification has been sent

hideFromBoardAndWidgets?: boolean

Whether the changelog is hidden from the board and widgets

sendEmailNotification?: boolean

Whether email notification should be sent for this locale

object: "changelog"

Object type identifier

organization: string

Organization identifier

publishedLocales: Array<string>

Array of locale codes where the changelog is published

slug: string

URL-friendly slug

slugs: Record<string, string>

URL-friendly slugs for each locale

state: "live" | "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

Create a new changelog

import Featurebase from 'featurebase-node';

const client = new Featurebase({
  apiKey: process.env['FEATUREBASE_API_KEY'], // This is the default and can be omitted
});

const changelog = await client.changelogs.create({ title: 'New Features Update' });

console.log(changelog.id);
{
  "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"
}
Returns Examples
{
  "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"
}