How-To2026-09-0310 min read

How to Create an API Changelog in GitHub

An API without a changelog is a trust problem. Every time you ship a change, your consumers need to know what is different, whether it breaks anything, and what they need to update. Most teams either skip the changelog entirely (forcing consumers to read commit messages) or maintain it manually (which falls behind within two releases).

GitHub's release system, conventional commits, and Actions automation let you build a changelog workflow that generates accurate, well-formatted release notes from your commit history. This guide shows you how to set up conventional commit enforcement, automated changelog generation, and a release workflow that publishes API changes in a format consumers can actually use.

Step-by-step guide

01

Adopt conventional commits for your API repository

Conventional commits use a structured format — 'feat: add /users endpoint', 'fix: correct pagination offset', 'BREAKING CHANGE: rename /accounts to /organizations' — that tooling can parse automatically. Install commitlint and a pre-commit hook to enforce the format. This is the foundation that makes automated changelogs possible.

  • Install @commitlint/cli and @commitlint/config-conventional as dev dependencies
  • Create a commitlint.config.js with the conventional config
  • Add a husky pre-commit hook that runs commitlint on every commit message
02

Create a changelog generation workflow with GitHub Actions

Create a GitHub Action that runs on release creation and generates changelog content from conventional commits since the last release tag. Use a tool like 'conventional-changelog' or 'release-please' to parse commits and group them by type: Features, Fixes, Breaking Changes, and Deprecations.

  • Create .github/workflows/changelog.yml triggered on release creation
  • Use the 'conventional-changelog-action' or 'release-please-action'
  • Configure it to output grouped markdown with sections for each change type
03

Define your API changelog format

Structure each release entry with: Version number and date, a summary sentence, Breaking Changes (highlighted prominently), New Endpoints, Modified Endpoints, Deprecated Endpoints, and Bug Fixes. Breaking changes must be called out first and include migration instructions. Create a CHANGELOG.md template with this structure.

  • Create a CHANGELOG.md file in the repository root with the template structure
  • Add a migration guide section under Breaking Changes for each entry
  • Include the API version (if versioned) and the deployment date
04

Add breaking change detection to your CI pipeline

Create a GitHub Action that runs on PRs and checks for breaking changes — renamed endpoints, removed fields, changed response shapes. Use an OpenAPI diff tool like 'oasdiff' if you maintain an OpenAPI spec, or a custom script that compares route definitions. Flag breaking changes as warnings in the PR check so reviewers see them before merge.

  • Add an OpenAPI spec file (openapi.yaml) to your repository if you do not have one
  • Install oasdiff or optic as a CI step that compares the PR's spec to the base branch
  • Configure the action to comment on the PR with a summary of breaking changes
05

Automate release creation with semantic versioning

Use release-please or semantic-release to automatically create GitHub releases with the correct version bump based on commit types. 'feat:' commits trigger a minor version bump, 'fix:' triggers a patch, and 'BREAKING CHANGE:' triggers a major version. The release includes the auto-generated changelog as the release body.

  • Configure release-please as a GitHub Action that creates release PRs
  • Map conventional commit types to semver bumps in the config
  • Set the action to update CHANGELOG.md and create a GitHub release on merge
06

Publish the changelog to your API documentation

Add a step to your release workflow that pushes the changelog to your documentation site — whether it is a GitHub Pages site, ReadMe.io, or a custom docs portal. API consumers should find the changelog in the same place they find your API reference, not buried in a GitHub repository they may not follow.

  • Add a deployment step to your changelog Action that publishes to your docs platform
  • Set up an RSS feed or webhook so consumers can subscribe to changelog updates
  • Send a notification to your API consumers Slack channel or mailing list on each release

Common mistakes

Not distinguishing breaking changes from other changes

A changelog that buries 'renamed /users to /accounts' in a list of bug fixes will cause production outages for your consumers. Breaking changes must be in a separate, prominent section at the top of each release entry with migration instructions.

Writing changelogs for developers instead of consumers

Internal refactoring ('migrated from Express to Fastify') is not relevant to API consumers. The changelog should describe what changed from the consumer's perspective — new endpoints, changed request/response formats, and removed features. Save internal changes for your internal release notes.

Generating changelogs without enforcing conventional commits

Automated changelog generation produces garbage if half the commits say 'fix stuff' and 'WIP.' The conventional commit format must be enforced via linting before the automation is useful. Roll out commitlint first, then add changelog generation.

Tips

Add a 'deprecation notice' section that lists features planned for removal in future versions — give consumers advance warning, not surprise breakage.

Include curl examples in the changelog for new or modified endpoints so consumers can test changes immediately.

Tag each release with both a semver tag (v2.3.0) and a date tag (2026-09-03) so consumers can reference either.

Create a changelog archive page for past versions — consumers on older API versions need to find what changed in the version they are using.

How Vantage helps

Vantage's GitHub integration indexes your API changelog as part of your product context. When generating requirements for features that modify your API, Vantage surfaces the deprecation schedule and breaking change history so new PRD requirements account for backward compatibility constraints automatically.

Frequently asked questions

Spend less time on setup, more on decisions

Vantage connects your tools and generates specs grounded in real data. Free to start.

Free to start. No credit card required.

Related reading