Following are characteristics of a great API:
- Building Blocks: APIs consisting of one or more methods should act like building blocks that could be assembled in more than one unique ways to create newer applications or apps. This could thus lead to innovation where developers can take up these APIs and create some creative and unique applications serving different functionality and creating substantial value for the end users. For example, look at facebook apps or salesforce apps. Developers worldwide have created several innovative applications by using facebook APIs.
- Distinct & Stateless: APIs should be distinct in terms of its service offerings and stateless in nature. Thus, invocation of an API should be very much atomic in nature in the sense the output of API methods should remain independent of output of any other API methods.
- Supports Mobile-First (Instagram) or Web-First (Facebook) Strategy without a Change: APIs if designed properly should be able to serve the same functionality on different channels such as mobile or web without needing any change whatsoever. This means that whether you make website first and then mobile apps, or vice-versa, they could be done easily as they are built using the same APIs.