How do you version public web APIs?

Lobsters Hottest Tools

Summary

A discussion on API versioning practices, questioning the coupling of URL paths (e.g., /v1/) with semantic versioning and exploring potential antipatterns.

<p>Often there is an existing API called something like "Product API". It often also has /api/v1 in the path.</p> <p>To me this often feels like an antipattern, especially when the API itself uses semantic versioning: mixing the routes with the API contract.</p> <p>Having /v1/ in the URL while also having a major.minor.patch version: coupling the first number of the semantic version to the URL path feels counter intuitive to me, if you make a breaking change, you may need new paths and new reverse proxy routes, and whatnot, and you also spread the API contract to two places, the URL and the version number.</p> <p>If you start simultaneously building a brand new successor to the "Product API", the old API is effectively stuck as "v1", even if it gets breaking changes of its own.</p> <p>What do you think?</p> <p>Do you have any API design pet peeves or opinions to share?</p> <p>Sorry for the confusing brain dump text, very interested in hearing people's opinions.</p> <p>Thank you</p>
Original Article
View Cached Full Text

Cached at: 05/29/26, 05:52 AM

# How do you version public web APIs? Source: [https://lobste.rs/s/g9u6b7/how_do_you_version_public_web_apis](https://lobste.rs/s/g9u6b7/how_do_you_version_public_web_apis) Often there is an existing API called something like "Product API"\. It often also has /api/v1 in the path\. To me this often feels like an antipattern, especially when the API itself uses semantic versioning: mixing the routes with the API contract\. Having /v1/ in the URL while also having a major\.minor\.patch version: coupling the first number of the semantic version to the URL path feels counter intuitive to me, if you make a breaking change, you may need new paths and new reverse proxy routes, and whatnot, and you also spread the API contract to two places, the URL and the version number\. If you start simultaneously building a brand new successor to the "Product API", the old API is effectively stuck as "v1", even if it gets breaking changes of its own\. What do you think? Do you have any API design pet peeves or opinions to share? Sorry for the confusing brain dump text, very interested in hearing people's opinions\. Thank you

Similar Articles

Why not have changes in API behavior depend on the SDK you link against?

The Old New Thing (Raymond Chen)

The article examines the pitfalls of altering API behavior depending on the linked SDK version, using Windows' CoInitializeSecurity as a case study. It discusses issues with DLL version mismatches and tail call optimization that complicate this approach.

@natolambert: We need to create a new term for the attacks some Chinese labs are doing on APIs that is different than distillation or…

X AI KOLs Following

The article discusses the controversy over the term 'distillation attacks,' arguing that labeling API abuse by some Chinese labs as 'distillation' risks stigmatizing a crucial and legitimate AI training technique. It calls for clearer terminology to distinguish between standard knowledge distillation and illicit API extraction methods like jailbreaking.

@ItsRoboki: https://x.com/ItsRoboki/status/2046220862546960563

X AI KOLs Timeline

A developer argues that modern AI agent terminology (harnesses, orchestrators, memory layers, etc.) is largely rebranding of familiar software engineering patterns, coining the phrase 'Vocabulary Tax' for the intimidation new jargon creates. The post aims to demystify agentic AI concepts for experienced developers.