What makes for a good API?

What makes for a good API? What makes for a bad one? Do we even need APIs?