Agreed with kevinpet, I'd like to hear from people who built large, public APIs. In my experience of doing this in the wild, it usually goes like so: you develop a set of API calls, a client that talks to that API and release the client. Then your director of product demands a change which requires a modification in the data model. You need api versions to avoid your old clients crashing if they use the new data model. Eventually your data model stabilizes and you don't need versions so much, but in my experience, it can take years.