# Create a new changelog 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. Endpoint: POST /v2/changelogs 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" ## Request fields (application/json): - `title` (string, required) The title of the changelog Example: "New Features Update" - `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: "
Exciting new 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: "Exciting new 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"] - `locale` (string) The locale of the changelog, defaulting to the organization default locale 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" - `date` (string,null) The date of the changelog Example: "2024-01-15" - `state` (string) The state of the changelog (draft or live) Enum: "draft", "live" ## Response 201 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_request" - `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