in reply to Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"
I generally find that after I have designed and built my API the only true test is when I come to use it. An API, for me, tidies away all the niggly things and makes my *front end* code very simple. If my API doesn't allow me to quickly build applications and write clear and concise code I need to rethink the API. After all, if I can't use it who can?
Of course I am in a team of one so I have only myself to blame ;).