httpbin is a request-and-response inspector: send it something and it tells you exactly what arrived. Headers, IP, auth schemes, redirects, delays, compression, and a /status/:code endpoint that will return any status you name. It is the tool of choice for debugging what your client is actually sending, and it is also easy to self-host from its Docker image, which matters in a locked-down network.
What it deliberately does not have is a domain. There are no resources to create, list, filter or conflict with, so there is nothing to test a client against — only the protocol layer, reflected back. Asking httpbin for a 409 gives you a 409 with no conflict behind it, which is fine for checking your error handler compiles and useless for checking that it does the right thing.
This playground has the protocol layer too — the Protocol Lab covers redirects and redirect chains, 202 job polling, JSON Patch, content negotiation, ranges, conditional requests and on-demand 503s and 504s — but it hangs that layer off resources with real state. A 409 here is a seat that is genuinely taken; a 412 is a version that genuinely moved; a 429 is a limit you genuinely exceeded. The error is the consequence of something, which is what makes the handling of it testable.
They are complements more than competitors. Reach for httpbin to find out what your client is sending; reach for this to find out how it behaves when a real API answers badly.
Checked against httpbin as of 2026-09.
All 39 mock REST APIs · Getting started guide · About this playground