There is a partial solution to this problem- API schemas. Define a schema for your API and make it public, then have API methods auto-generated directly from that. For example, for web APIs, there's jsonschema- http://json-schema.org/ from which you can auto-gen functions in a given language. That way, the parameters around the API such as the URI of an endpoint can be changed from version to version without completely destroying the logic on top of it. It doesn't always solve the problem completely, but it can make it much more tractable.