# 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 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 Endpoint: PATCH /v2/changelogs/{id} Version: 2026-01-01.nova Security: bearerAuth ## Header parameters: - `Featurebase-Version` (string) API version for this request. Defaults to your organization's configured API version if not specified. Example: "2026-01-01.nova" ## Path parameters: - `id` (string, required) Changelog unique identifier Example: "507f1f77bcf86cd799439011" ## Request fields (application/json): - `title` (string) The title of the changelog Example: "Updated Features Release" - `htmlContent` (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. Example: "

Updated features to explore.

" - `markdownContent` (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. Example: "Updated features to explore." - `categories` (array) An array of category names to which the changelog belongs Example: ["New","Fixed","Improved"] - `featuredImage` (string) The URL of the featured image for the changelog. External URLs will be uploaded to our storage. Example: "https://example.com/image.png" - `allowedSegmentIds` (array) An array of segment IDs that are allowed to view the changelog Example: ["507f1f77bcf86cd799439011"] - `date` (string,null) The date of the changelog Example: "2024-01-15" ## Response 200 fields (application/json): - `object` (string, required) Object type identifier Enum: "changelog" - `id` (string, required) Unique identifier Example: "6457e3ff70afca5d8c27dccc" - `title` (string, required) Changelog title Example: "Your awesome changelog!" - `slug` (string, required) URL-friendly slug Example: "your-awesome-changelog" - `url` (string, required) Public URL to view the changelog Example: "https://myorg.featurebase.app/en/changelog/your-awesome-changelog" - `content` (string, required) Content in HTML format Example: "

Your changelog content in HTML format.

" - `markdownContent` (string,null, required) Content in markdown format Example: "Your changelog content in markdown format." - `featuredImage` (string,null, required) Featured image URL Example: "https://cdn.example.com/images/feature.png" - `date` (string, required) Publication date as ISO 8601 timestamp Example: "2023-05-07T12:59:59.000Z" - `state` (string, required) State of the changelog Enum: "live", "draft" - `locale` (string, required) Locale of the changelog Enum: "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" - `isPublished` (boolean, required) Whether the changelog is published (has a live version) in this locale Example: true - `isDraftDiffersFromLive` (boolean, required) Whether the draft content differs from the published live content - `publishedLocales` (array, required) Array of locale codes where the changelog is published Example: ["en","de"] - `availableLocales` (array, required) Array of locale codes where the changelog has content Example: ["en","de","fr"] - `slugs` (object, required) URL-friendly slugs for each locale Example: {"en":"your-awesome-changelog","de":"dein-tolles-changelog"} - `commentCount` (number, required) Number of comments Example: 2 - `categories` (array, required) Categories the changelog belongs to - `categories.id` (string, required) Category unique identifier Example: "6438a1efda3640f8feb72121" - `categories.name` (string, required) Category name Example: "New Features" - `categories.roles` (array) Roles allowed to view this category Example: [] - `organization` (string, required) Organization identifier Example: "myorg" - `notifications` (object, required) Notification settings for each locale - `allowedSegmentIds` (array, required) Segment IDs that are allowed to view this changelog Example: [] - `emailSentToSubscribers` (boolean, required) Whether email notification was sent to subscribers Example: true - `createdAt` (string, required) ISO 8601 timestamp when created Example: "2023-12-12T00:00:00.000Z" - `updatedAt` (string, required) ISO 8601 timestamp when updated Example: "2023-12-13T00:00:00.000Z" ## Response 400 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "invalid_id" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 400 ## Response 404 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "changelog_not_found" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 404