An API is an interface that allows software components to interact and abstracts away complexity. When designing a system, getting the interfaces right is important. RESTful APIs follow principles like being stateless and using standard HTTP actions and errors to organize resources in a discoverable and uniform manner. APIs should focus on the data model and use standards like JSON and HTTP verbs, while pragmatically modifying REST principles only to ease the consumer's experience.