This document discusses guidelines for developing application programming interfaces (APIs). It defines an API as an interface that allows software applications to communicate with each other. The document outlines properties an API should have like being easy to use and learn. It provides guidelines for APIs such as having a single responsibility, using proper naming conventions, adding documentation, and considering performance. It also discusses API maintenance, C/C++ specific issues, anti-patterns to avoid, and concludes that the best API is no API.