So you've built your ReSTful API. You've had lengthy debates with your team about exactly what HTTP POST means, you know your GET from your PUT and you understand why HTTP methods aren't really the same as CRUD operations. So far, so good. But now you're dealing with a whole new set of problems. Do you really need to PUT the entire Customer just to change someone's email address? Why does it take you 25 API calls just to render a shopping cart? How do you find the bottlenecks when just drawing a web page requires fifty HTTP requests? What's going to happen to your database when one of your API consumers accidentally tries to retrieve the entire customer list?In this talk, we'll look at the challenges of building usable real-world ReST APIs. We'll look at Hypertext Application Language (HAL), and the conventions for extending basic JSON data to include references, cross-resource links and paginated result sets. We'll discuss HTTP PATCH, and how to implement it properly. We'll look at inline resource expansion, and how it can reduce load on your servers AND speed up your client applications. We'll look at how you can implement these techniques in popular .NET API frameworks like WebAPI, ServiceStack and NancyFX. We'll see how tools like Apiary and Swagger can help you design, build and support APIs, and we'll discuss the challenges of API versioning and how you can upgrade your APIs without breaking your client apps and upsetting your customers.