Skip to content

Add blog post: Global vs independent API versioning#255

Open
riboflavin wants to merge 3 commits intoRedocly:mainfrom
riboflavin:blog/global-vs-independent-api-versioning
Open

Add blog post: Global vs independent API versioning#255
riboflavin wants to merge 3 commits intoRedocly:mainfrom
riboflavin:blog/global-vs-independent-api-versioning

Conversation

@riboflavin
Copy link
Copy Markdown
Contributor

What/Why/How?

Reference

Testing

Screenshots (optional)

Check yourself

  • Code is linted
  • Tested
  • All new/updated code is covered with tests

Security

  • Security impact of change has been considered
  • Code follows company security practices and guidelines

Comment thread blog/global-vs-independent-api-versioning.md Outdated
@adamaltman adamaltman closed this Apr 23, 2026
@adamaltman adamaltman reopened this Apr 23, 2026
Copy link
Copy Markdown

@redocly redocly Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

marketing-site AI Review: 🟢 Completed

Reunite Bot has reviewed your changes and found 5 potential issue(s).

Note

Low Risk

This PR only introduces a new markdown file for a blog post. It does not affect any application code or system functionality.

Overview

Adds a new blog post titled "Is it better to use a global API versioning strategy or version each endpoint independently?". The post explores the trade-offs between global API versioning (prioritizing coherence and snapshots) and independent endpoint versioning (favoring developer agility). It also discusses group-based versioning as a hybrid approach and the nuances of API evolution versus formal versioning.


Independent endpoint versioning often relies on content negotiation or custom headers to avoid creating a sprawling directory of URL paths. GitHub has famously used custom media types (e.g., `Accept: application/vnd.github.v3+json`) to allow clients to request specific API behaviors. This keeps the URL namespaces clean (`/users` is always `/users`) but moves the complexity into the request headers.

Using headers facilitates the granular release of features, such as GitHub's [preview media types](https://github.blog/changelog/2021-10-14-rest-api-preview-promotions/), but it complicates testing and observability. A developer cannot simply paste a URL into a browser to see the response; they must configure headers for every request. As Zalando notes in their [RESTful API Guidelines](https://opensource.zalando.com/restful-api-guidelines/), if you must version, media types are preferred for REST purity, but they demand more sophisticated tooling and documentation than simple path-based global versions.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Header-based versioning hinders security observability. WAFs and SIEMs often prioritize URL paths for filtering; moving version metadata to headers makes it harder to detect and block attacks targeting specific legacy contract versions.


Before committing to a complex versioning scheme, consider if you need to version at all. Many teams conflate "changing the API" with "versioning the API."

The [concept of API evolution](https://redocly.com/docs-legacy/api-registry/resources/versioning-strategies) suggests that most changes should be additive. You add a new field, a new optional parameter, or a new response type. These changes are backward compatible and do not require a version bump.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additive evolution can lead to OWASP API6: Mass Assignment. Warn that adding new input fields requires strict allowlists in the backend to prevent accidental exposure or modification of sensitive internal object properties.


You must define how long a version remains supported. Microsoft Graph commits to a [24-month minimum notice](https://learn.microsoft.com/en-us/graph/versioning-and-support) before retiring a GA version. Shopify guarantees 12 months.

If you version endpoints independently, tracking these timelines becomes geometrically more difficult. You must track usage metrics per endpoint to know when it is safe to turn one off. With global versioning, you can monitor traffic based on the version header or URL path, giving you a clear signal when a `2021` snapshot has zero traffic.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explicitly link tracking difficulties to OWASP API9: Improper Inventory Management. Failing to identify and retire unmanaged, deprecated endpoints (Zombie APIs) significantly increases the organizational attack surface.

title: Global vs independent API versioning strategy | Redocly
description: Learn the trade-offs between global API versioning and independent endpoint versioning, including coherence, agility, and hybrid approaches for complex systems.
author: adam-altman
publishedDate: 2026-04-24
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The publishedDate is set to a future date (2026-04-24). Please verify if this is intentional for scheduling or if it should be corrected.


Before committing to a complex versioning scheme, consider if you need to version at all. Many teams conflate "changing the API" with "versioning the API."

The [concept of API evolution](https://redocly.com/docs-legacy/api-registry/resources/versioning-strategies) suggests that most changes should be additive. You add a new field, a new optional parameter, or a new response type. These changes are backward compatible and do not require a version bump.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The absolute link to [concept of API evolution] points to deprecated /docs-legacy/ documentation. Update to a current resource or relative link to avoid outdated content.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants