Skip to main content
Changelogs

Create a new changelog

Creates a new changelog for the authenticated organization.

POST
/v2/changelogs

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. Accepts user segment ids and company segment ids (a company segment means "people with a company in the segment"). Every id must be a segment of your organization: an unknown or deleted id is rejected with 400.
  • 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.

Authorizationstringheaderrequired

API key as Bearer token. Use: Authorization: Bearer sk_...

Featurebase-Versionenum<string>header

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

Available options: 2026-08-19.orbit, 2026-01-01.nova, 2025-12-12.clover
Example: 2026-08-19.orbit

Body

application/json
allowedSegmentIdsstring[]

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

Maximum array length: 100
categoriesstring[]

An array of category names to which the changelog belongs

Maximum array length: 100
datestring | null

The date of the changelog

Example: 2024-01-15

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

Example: https://example.com/image.png
htmlContentstring

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.

Example: <p>Exciting new features to explore.</p>
localeenum<string>

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

Available options: 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
Example: en
markdownContentstring

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.

Example: Exciting new features to explore.
stateenum<string>default:draft

The state of the changelog (draft or live)

Available options: draft, live
Example: draft
titlestringrequired

The title of the changelog

Required string length: 1 - 512
Example: New Features Update
translationsobject

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.

Response

application/json

Created

allowedSegmentIdsstring[]required

Segment IDs that are allowed to view this changelog

availableLocalesstring[]required

Array of locale codes where the changelog has content

categoriesobject[]required

Categories the changelog belongs to

commentCountnumberrequired

Number of comments

Example: 2
contentstringrequired

Content in HTML format

Example: <p>Your changelog content in HTML format.</p>
createdAtstringrequired

ISO 8601 timestamp when created

Example: 2023-12-12T00:00:00.000Z
datestringrequired

Publication date as ISO 8601 timestamp

Example: 2023-05-07T12:59:59.000Z
emailSentToSubscribersbooleanrequired

Whether email notification was sent to subscribers

Example: true

Featured image URL

Example: https://cdn.example.com/images/feature.png
idstringrequired

Unique identifier

Example: 6457e3ff70afca5d8c27dccc
isDraftDiffersFromLivebooleanrequired

Whether the draft content differs from the published live content

Example: false
isPublishedbooleanrequired

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

Example: true
localeenum<string>required

Locale of the changelog

Available options: 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
Example: en
markdownContentstring | nullrequired

Content in markdown format

Example: Your changelog content in markdown format.
notificationsobjectrequired

Notification settings for each locale

objectenum<string>required

Object type identifier

Available options: changelog
Example: changelog
organizationstringrequired

Organization identifier

Example: myorg
publishedLocalesstring[]required

Array of locale codes where the changelog is published

slugstringrequired

URL-friendly slug

Example: your-awesome-changelog
slugsobjectrequired

URL-friendly slugs for each locale

stateenum<string>required

State of the changelog

Available options: live, draft
Example: live
titlestringrequired

Changelog title

Example: Your awesome changelog!
updatedAtstringrequired

ISO 8601 timestamp when updated

Example: 2023-12-13T00:00:00.000Z
urlstringrequired

Public URL to view the changelog

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