I think putting the version into the URL path is wrong, though that is what is done 99.5% of the time. Many years ago, I designed a versioned REST API whereby the versioning was implemented via media-types. Everything was an object, and objects had versions. Backwards compatibility was supported by the server maintaining support for a few versions back of each kind of object. Each time the server interacted with the client, it would up/down-convert to/from "current" as needed. Through HATEOAS, clients passing an Accept type for newer version objects, would automatically get all the appropriate rel links for it. We shipped a product for a few years using this approach. There were many debates, but it seemed popular with the team, especially as releases only had to support a few new object-versions, as opposed to a whole new API version root. FWIW. Kent