An Application Programming Interface expresses a software component in terms of its operations, inputs, outputs, and underlying types, defining functionalities that are independent of their respective implementations, which allows definitions and implementations to vary without compromising the interface.
A good Application Programming Interface makes it easier to develop a Application by providing all the building blocks, which are then put together by the programmer.