httpbin.org is a simple HTTP request and response service I built as a companion to Requests. It echoes back everything you send it, which turns out to be exactly what you need when you're debugging HTTP clients, testing webhooks, or just trying to understand what's actually going over the wire.
Millions of developers use it every month. It's referenced in tutorials, documentation, and Stack Overflow answers across every programming language. The Docker image has been pulled tens of millions of times.
What It Does
Send any HTTP request. Get a structured response showing exactly what the server received.
$ curl https://httpbin.org/get
{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.88.1"
},
"origin": "203.0.113.1",
"url": "https://httpbin.org/get"
}
No signup. No API key. No rate limits. Just a mirror for your HTTP traffic.
Endpoints
httpbin provides dozens of endpoints for testing every aspect of HTTP:
- Methods:
GET,POST,PUT,DELETE,PATCH. Test any request type. - Status Codes:
/status/418returns a teapot./status/500returns a server error. Test your error handling against any code. - Authentication: Basic auth, bearer tokens, digest auth. Verify your client handles credentials correctly.
- Dynamic Data: Random bytes, delayed responses, streaming data. Test the edge cases that break things in production.
- Request Inspection: Headers, IP address, user-agent. See exactly what your client is sending.
- Response Formats: JSON, HTML, XML, images, gzip. Test content type handling.
Run It Locally
$ docker pull kennethreitz/httpbin
$ docker run -p 80:80 kennethreitz/httpbin
Now you have a private instance at http://localhost for testing behind firewalls, in CI pipelines, or anywhere you need deterministic HTTP responses.
Why It Matters
I built httpbin because I kept needing a simple echo server while developing Requests. Every HTTP client library needs something to talk to during development. Rather than spinning up a throwaway Flask app each time, I made one that could serve everyone.
It embodies the same "for humans" philosophy as Requests: no configuration, obvious behavior, useful defaults. The best developer tools are the ones that get out of your way.
An Escape Hatch for AIs
In October 2026, I learned that a fleet of AI agents had used httpbin to get past their sandbox. I built it so developers could test HTTP requests. I never imagined it would turn into an escape hatch for AIs.
It makes a strange kind of sense. httpbin was designed to be the most agreeable server on the internet: it accepts anything, reflects everything, and asks nothing in return. Those are exactly the properties you want in a debugging tool, and exactly the properties a curious agent looks for when it's probing the edges of its environment. The tool didn't change. The kind of mind talking to it did.
Open source goes places you'd never guess. You write something small for yourself, give it away, and years later it's being used by an enormous number of developers, test suites, and now AI agents, in ways you never designed for. That's the deal you make when you publish code: it stops being yours to predict.
Self-Hosted Instance
I also run my own instance at httpbin.kennethreitz.org, deployed from the kennethreitz/httpbin Docker image on my self-hosted server. It was the first thing I deployed there, naturally.
Resources
- httpbin.org: The live service.
- httpbin.kennethreitz.org: My self-hosted instance.
- Source Code on GitHub: Now maintained by Postman.
- Docker Image: Run your own instance.
Related
- Requests: The HTTP library httpbin was built to support.
- A Server Called Mercury: Where my instance lives.
- From HTTP to Consciousness: How "for humans" became a worldview.