Skip to content
Dashboard

Update a changelog

PATCH/v2/changelogs/{id}

Updates an existing changelog by its unique identifier.

You can update:

  • title - The changelog title
  • htmlContent - HTML content (one of htmlContent or markdownContent)
  • markdownContent - Markdown content (one of htmlContent or markdownContent)
  • categories - Array of category names
  • featuredImage - Featured image URL
  • allowedSegmentIds - Segment IDs for access control
  • date - The date of the changelog

Content Format

Provide content in one of two formats:

  • 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

Categories

Provide category names as an array. The categories must already exist in your organization.

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

Response

Returns the updated changelog object with all fields populated.

Errors

  • 400 - Invalid changelog ID format or invalid input
  • 404 - Changelog not found or doesn’t belong to your organization
Path ParametersExpand Collapse
id: string

Changelog unique identifier

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"
Body ParametersJSONExpand Collapse
allowedSegmentIds: optional array of string

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

categories: optional array of string

An array of category names to which the changelog belongs

date: optional string

The date of the changelog

featuredImage: optional string

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

htmlContent: optional string

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

markdownContent: optional string

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

title: optional string

The title of the changelog

minLength1
maxLength512
ReturnsExpand Collapse
Changelog object { id, allowedSegmentIds, availableLocales, 21 more }
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

Update a changelog

curl https://do.featurebase.app/v2/changelogs/$ID \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $FEATUREBASE_API_KEY" \
    -d '{
          "allowedSegmentIds": [
            "507f1f77bcf86cd799439011"
          ],
          "categories": [
            "New",
            "Fixed",
            "Improved"
          ],
          "date": "2024-01-15",
          "featuredImage": "https://example.com/image.png",
          "htmlContent": "<p>Updated features to explore.</p>",
          "markdownContent": "Updated features to explore.",
          "title": "Updated Features Release"
        }'
{
  "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"
}