I write the tests first which is kind of the same thing except that I can actually execute that API and see if what I wrote actually works.
Writing good tests first also helps me constrain my implementations to be as simple as possible as well. Otherwise my tests get hard to write and that's a sign things are probably going in the wrong direction.
Often though you can't have your cake and eat it too. There are two schools of thought: worse is better and the right way. The former way eschews simple APIs for simple implementations. The latter is pretty much the opposite.
I'm currently working on a project where I'm trying to maintain a simple API across three different, related services. One of those services has such a simplistic interface that maintaining the simple API that the other two have has made the implementation comparatively complex.
Now I have to take extra care to make it as simple as I can... but it's still complicated. Which means my poor future developer who has to maintain this thing will need lots of documentation in order to understand it (fortunately I maintain TODO lists and notes as I go to accompany my stories... forming a sort of journal of my development process for each project; it makes it easy to pull out useable "how and why" documentation).