How to Automate API Changelog Generation


Somewhere right now, a developer at one of your integration partners is filing a support ticket at 11pm because a field they depended on disappeared without notice. The field didn't vanish maliciously. An engineer removed it three sprints ago. It was in a pull request. There was a Jira ticket. Nobody wrote it down anywhere a customer could find it.
That is the actual cost of a manual changelog process. Not the hours your technical writer spends compiling release notes. The undocumented breaking change that nobody caught.
Automating API changelog generation is not primarily a writing problem. It is a synthesis problem. The raw material already exists: commit messages, pull request descriptions, issue tracker tickets, and the diff between your current OpenAPI spec and the previous one. The challenge is pulling those sources together quickly, accurately, and consistently enough that your changelog reflects what your API actually does, not what someone remembered to write down last Tuesday.
The good news is that this is a solvable problem. The bad news is that "automate the changelog" means something more specific than most teams initially assume.
Why Commit Messages Are Not Enough

The instinct when automating changelogs is to start with git history. It is right there. It is structured. Tools like Conventional Changelog and semantic-release have been doing this for years, using commit message conventions to generate release notes automatically.
The problem is that commit messages describe what the code did, not what the customer will experience. A commit that reads refactor(auth): extract token validation to middleware is accurate and useful to the engineer who wrote it. It tells a developer integrating with your API almost nothing. A 2023 study on commit message quality found that the overall quality of commit messages decreases over time, while developers believe they are writing better ones. The subjective confidence and the objective quality move in opposite directions.
This is why a reliable automation system needs multiple input sources, not just version control. Your OpenAPI or Swagger specification is the structural truth of your API contract. Diffing two versions of that spec against each other tells you precisely what changed from the customer's perspective: a removed endpoint, a new required parameter, a field whose type changed from string to integer. Tools like oasdiff can classify changes as breaking or non-breaking before a human ever looks at them. Your issue tracker fills in the business motivation. Your PR descriptions fill in the engineering context. Together, they give the generation layer enough signal to produce something accurate.
The Conventional Commits specification provides a lightweight convention for structuring commit messages in ways that automated tools can parse. When engineers prefix commits with feat:, fix:, or BREAKING CHANGE:, the automation has a much cleaner signal to work from. It is worth the investment to get your engineering team to adopt this, even partially. A squash-based merge workflow helps, because the lead maintainer can clean up commit messages at merge time without adding burden to individual contributors.
The classification layer is where most teams underinvest. You need rule sets that distinguish internal refactoring from customer-facing changes. A rename of an internal function is not changelog-worthy. A rename of a response field that your customers are parsing is. The rule set has to be specific to your API and your customer base, which means it requires ongoing maintenance. This is not a set-it-and-forget-it configuration.

The Part That Actually Requires Engineering
Once you have structured change data, the natural language generation layer converts it into readable changelog entries. This is where modern LLM-based systems do their best work. Research on automated release note generation has consistently found that the hardest part is not producing text — it is producing text that is accurate, complete, and calibrated to the right audience.
A 2025 study introducing SmartNote, an LLM-powered release note generator, found that LLMs can capture semantic meaning and connections between code and natural language in ways that earlier rule-based systems could not. The study also confirmed that existing tools relying solely on commit messages fail to adequately communicate the impact of changes and generate overly verbose output that leads to disengagement. The generation layer needs to know not just what changed, but what that change means to the person reading it.
The human review and validation workflow is the layer that makes this operationally safe. Fully automated, unsupervised changelog generation is a risk. Breaking changes often need migration guides, not just a one-line description. Context that only a senior engineer understands sometimes needs to be added. Edge cases like hotfixes, rollbacks, and changes that affect only a subset of customers require judgment that a model does not reliably have.
The best implementations route AI-generated entries through a lightweight approval process. A technical writer or senior engineer reviews the draft, validates accuracy, adds missing context, and flags changes that need expanded documentation. This is not a bottleneck — it is a quality multiplier. The AI generates quickly and consistently; the human catches what the AI missed. Research on breaking changes in APIs found that 45% of Stack Overflow questions related to breaking changes are from clients asking how to overcome specific changes. A migration guide that answers that question before the ticket gets filed is worth more than a perfectly formatted changelog entry.
Publishing is the final layer. Approved entries need to reach the right destinations: the developer portal, the API documentation site, email notifications to integration partners, RSS feeds, and internal Slack channels. The changelog must be versioned and tied directly to API release tags, so that developers know exactly what changed between version 2.1.4 and 2.1.3. GitLab's Changelog API demonstrates how this can be wired directly into a CI/CD pipeline, using commit trailers to generate and publish changelog entries automatically at release time. Stripe's public changelog, which you can browse at docs.stripe.com/changelog, is a useful reference for what versioned, customer-facing API change communication looks like at scale.
Passive communication — posting changes without a planned notification strategy — is not enough. Developers who depend on your API need active notification through the channels they actually use. A changelog that lives only on a documentation page that nobody checks is not a changelog. It is a liability.
What Technical Writers Do When the Machine Handles the Drafts
The most common objection to changelog automation is that it will eliminate the technical writer's role. The actual effect is the opposite.
When the automation handles the drafting, technical writers stop being transcriptionists and start being editors. They validate AI-generated output against the actual API behavior. They identify patterns where the automation consistently struggles — usually around nuanced deprecation language or changes that affect only specific authentication flows. They refine the classification rule sets that determine what is and is not changelog-worthy. They write the migration guides for breaking changes, which are the most valuable documentation your integration partners will ever read.
This is a better use of their expertise than copying and pasting from Jira tickets. A technical writer who understands your API deeply enough to catch a hallucinated description is doing work that compounds over time. The system gets better because they are in the loop, not despite it.
The operational model matters here. AI drafts from commits and spec diffs. A senior writer reviews in a dashboard. Edge cases get flagged. Patterns get fed back to reduce errors on the next cycle. The documentation team's output scales with the engineering team's velocity, without requiring a proportional increase in headcount.
That is the workflow Doc Holiday is built around: release notes, API references, and changelogs generated directly from engineering workflows, with the structure for human validation and quality control built in. For lean teams that have been asked to make documentation faster and more consistent without adding headcount, it provides the scaffolding that makes this operationally real rather than aspirational.
The developer who filed that support ticket at 11pm did not need a better changelog format. They needed the changelog to exist.

