# Get a changelog by ID Retrieves a single changelog by its unique identifier or slug. Returns the full changelog object including: - Title and content (in HTML and markdown formats) - Featured image - Publication date - Categories - Comment count - Email notification status ### Localization The changelog content is returned in the organization's default locale. If the changelog doesn't exist in the default locale, the first available locale is used. ### State Both published (live) and draft changelogs can be retrieved. The state field indicates the current publication status. Endpoint: GET /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" ## 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