The big draw of cloud services is the fact that all resources are consumable via APIs. Providing a consistent interface that developers can access is the first step towards offloading the “undifferentiated heavy lifting” to a cloud provider. Why build parts of your application infrastructure when you can make use of a service built, maintained and continually updated by experts?
The challenges of providing a good API center around the design of the API methods themselves, having good quality documentation, code samples and libraries for major languages. What becomes more difficult is when you have to complement the programmatic API with a web and/or mobile UI.