A set of routines, protocols, and tools for building software applications, which makes it possible for software components to interact with one another, leading to the ability to share data over a network.
A set of routines that an application uses to request and carry out lower-level services performed by a computer's operating system. These routines usually carry out maintenance tasks such as managing files and displaying information.