As a relatively recent new user of OpenStack, I have mixed feelings about the current state of the OpenStack APIs. On one side, it is exciting to see how modular OpenStack is, how each module sports its own REST API, and how all of these APIs can interact and function together. But also, I can't help but notice that there are inconsistencies in the design of these various APIs, and that best practices associated with REST architecture are frequently ignored or violated. The inconsistencies among the different APIs concern me very much. To help improve the situation, I have been an active member of the API Working Group since its inception. In this talk I want to share my personal views and pre-OpenStack experiences on REST API design, and contrast that to the state of the OpenStack APIs. Drawing from the reviews and discussions in the API Working Group, I plan to show actual examples of what I perceive are the problem areas. I'll be joined by one of the founding members of the API Working Group to talk about what we're doing to improve the APIs and the overall developer experience for users building applications and tools on OpenStack. More specifically, the topics we'll cover are: APIs vs. Web APIs vs. REST APIs. What's the difference? The GoodStateless servers Modular APIs Authentication The BadInconsistencies: pagination, sorting, searching. metadata handling Actions vs. Resources Lack of hypermedia Client/Server coupling OpenStack clients vs. OpenStack APIs The API Working GroupPurpose Scope Guidelines I hope by the end of the session you will have another perspective to consider when building applications and tools on the OpenStack APIs.