Changelog and roadmap: filters, widget, import, review, member votes and custom lanes
2026.10.14-api-changelog-roadmapChangelog
Filtering the public archive. The public changelog list takes these filters:
?type=: the release's declared type (New, Improved, Fixed, Deprecated, Retired, Security).?channel=and?breaking=true.?tag=a,bwith?match=any|all.?month=YYYY-MM, which wins over?year.?family=, and a version range with?from=and?to=.
The answer adds months and the type, channel and breaking facets. A single release (t/{slug}) carries neighbours: previous, next, and ?more=0-10 recent releases.
Releases take more on write. bylines, authorIds, coverUrl, coverAlt, expiresAt (null clears it), and the declared fields type, channel, breaking and ctaUrl. After expiresAt passes, a release leaves the list, the feeds, the widget and the sitemap, and its page answers 410.
Widget. GET /public/…/changelog/widget returns everything the embed needs in one request: config, cards and the announced release. Each card links to the release's own page on your public address. POST …/widget/hit counts opens, and GET /orgs/…/changelog/widget-stats reports them.
Import. POST /orgs/{orgId}/spaces/{spaceId}/changelog/import reads a Keep a Changelog file, GitHub Releases, or a Beamer, Headway or LaunchNotes export (JSON or CSV). It supports dryRun, and running it again imports only what is new. GitHub releases can keep syncing through a release webhook.
Review before publish. /orgs/…/changelog/{releaseId}/review, with /approve and /request-changes. Turn it on with the org setting changelog.require_review or the space setting requireReview. Webhooks: release.review_requested, release.reviewed.
Translations. /orgs/…/changelog/{releaseId}/translations/{locale} stores human translations or machine ones (DeepL, with your own key). Public reads take ?locale=.
The whole changelog as Markdown. GET /public/…/changelog/changelog.md returns the changelog in Keep a Changelog form.
Roadmap
Votes from signed-in members. POST /public/…/roadmap/t/{slug}/vote now counts as the member's vote when the request is signed in, and the board's vote budget and trust weights apply. Without an account, a board that does not take anonymous votes answers 401 "Sign in to vote." (it was 403). Board items and the item read carry voted. GET …/roadmap/votes returns the reader's votes and is never cached. A board can set voteMode: importance, where a vote has a level from 1 to 3; reads carry voteMode and importance.
Custom lanes and grouping. In roadmap settings:
roadmapStatusesadds up to 10 custom statuses.roadmapGroupBy(status,targetortheme) andhorizonschange how the board is grouped.publicStatuseslets items in a hidden lane still open by their own link.
GET /public/…/roadmap/lanes returns the board's lanes. ?status= on the board accepts any status the board has; an unknown one answers 422 that lists the valid statuses. Items in a hidden lane that is not public are now private everywhere: the item, its .md, votes, comments, followers, search and RSS. Boards that already had hidden lanes were migrated so those lanes stay public, and nothing that worked before breaks.
Items.
GET …/t/{slug}/voterslists named voters; people with hidden profiles or anonymous votes are only counted.Comments support reactions, one level of replies and Markdown.
A lane move can carry an official answer (
message).The item read adds
shippedIn,mergedIntoandmerged. A changelog release lists the roadmap items itcloses.The board read adds
tags,themesandfilters. The board takes?sort=top|new|trending,?tag=,?mine=1and?q=.The public item read no longer exposes internal fields.
Staff tools. …/roadmap/{topicId}/proxy-votes records votes on a customer's behalf; these are never named publicly. Moderators can post whisper comments. POST /orgs/{orgId}/imports/roadmap imports Canny or Featurebase exports. Webhooks: roadmap.status_changed, roadmap.merged, roadmap.shipped.