This document discusses best practices for designing RESTful web services. It begins by defining REST as an architectural style for distributed hypermedia systems, rather than a protocol or standard. The document outlines the constraints and principles of RESTful design, including client-server architecture, statelessness, cacheability and a uniform interface. It then evaluates several common approaches to building web APIs in terms of how well they follow REST principles. The document argues that an API designed according to REST principles, using hypermedia and self-descriptive messages, results in a loosely coupled and scalable design.