Update a changelog
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 changelogmarkdownContent- 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.
Batched translations (Orbit only)
In API version 2026-08-19.orbit, optional translations accepts multiple locale-keyed draft updates.
Each entry accepts title, htmlContent or markdownContent (not both), and featuredImage. New translations require title and nonempty content; existing translations preserve omitted fields. Supplied top-level content must also be nonempty for nonempty batches.
Every listed locale must be enabled for the organization’s changelogs, including existing translations and the primary-locale entry.
Top-level localized fields target the organization default locale and override corresponding dictionary fields. HTML/Markdown are one content field: a top-level format replaces the entry’s content input.
Categories, segments and date remain top-level. The complete batch and global changes are saved together only after validation and content processing succeed.
The response is the current organization default draft with draft availableLocales, not a translations dictionary. If that draft is absent, return the first edited locale in alphabetical order; if all entries are no-ops, return the first listed draft in alphabetical order. The response locale identifies the selected draft. Publication remains separate.
Omitted or empty dictionaries retain existing behavior. An empty existing-locale entry is a no-op; an empty new-locale entry fails completeness validation.
Completed uploads are not rolled back on failure. Existing legacy update/publication overwrite races are unchanged.
Changing the organization default does not require creating its draft when updating other explicitly listed locales. Top-level localized fields still target the current default, and require title and content if creating that draft.
Disabled locales return 400 invalid_parameter, parameter locale: Locale "
Errors
400- Invalid changelog ID format or invalid input404- Changelog not found or doesn’t belong to your organization
Body ParametersJSON
An array of segment IDs that are allowed to view the changelog
The URL of the featured image for the changelog. External URLs will be uploaded to our storage.
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.
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.
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",
"translations": {
"de": {
"htmlContent": "<p>Neue Funktionen.</p>",
"title": "Neuigkeiten"
},
"et": {
"markdownContent": "Uued funktsioonid.",
"title": "Uuendused"
}
}
}'{
"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"
}