httpbin: endpoints, rate limits, self-hosting and alternatives
httpbin.org is a free HTTP echo service: send a request to /get, /post, /anything or /status/418 and it returns what it received or the status you asked for. Each IP gets about 17 requests a second (2 for body-echo endpoints) and 1 MiB bodies. It answered all our checks on October 29, 2026.
httpbin.org is a free service that answers HTTP requests with a description of what you sent, or with a status, delay or redirect you ask for, and it was up in our October 29, 2026 checks. Its published limit is about 17 requests a second per IP. This page covers the endpoints, rate limits and uptime, self-hosting, hosted alternatives, and what to use when you need to see a request instead of echoing it.
What httpbin.org does
httpbin answers your request with a JSON description of what arrived, or with the status, delay, redirect or format you ask for, which makes it a common target for testing HTTP clients, proxies and SDKs. The full list of endpoints is in the OpenAPI spec at httpbin.org/spec.json, which names Postman as the responsible organization.
| Endpoint | What you get back |
|---|---|
/get | Query args, headers, origin IP and URL as JSON |
/post, /put, /patch, /delete | The same, plus your body as data, form, files or json |
/anything | Any method echoed back, also under /anything/<path> |
/status/<codes> | That status code, or a random one from a list |
/delay/<n> | A response after n seconds, max 10 |
/headers, /ip, /user-agent | Just that part of your request |
/basic-auth/<user>/<passwd> | A Basic Auth challenge for testing credentials |
/redirect/<n> | 302 redirects, n times |
curl "https://httpbin.org/get?debug=1"
curl -X POST https://httpbin.org/anything/hook \
-H "Content-Type: application/json" \
-d '{"event":"test"}'
curl -i https://httpbin.org/status/418
httpbin.org rate limits and uptime
- Each client IP can make about 17 requests a second.
- Body-echo endpoints like
/post,/put,/patch,/deleteand/anythingallow 2 requests a second. - Request bodies can be up to 1 MiB.
- Going over a limit returns
429with aRetry-Afterheader. - Clients that keep exceeding the limits may be blocked for a while.
- Malformed or oversized requests get a
4xxresponse that says why.
In our October 29, 2026 checks across 3 rounds from a cloud sandbox, every endpoint we tried answered, with /get finishing in 0.34 to 0.37 seconds, /delay/2 in 2.34 seconds, and /status/418 returning 418. Since httpbin.org is a shared public service, test suites that send a lot of requests should run their own copy.
Self-host httpbin with go-httpbin or Docker
If you want to run an httpbin docker container locally, you have two main options. The original kennethreitz/httpbin image has over 60 million pulls, but it was last updated on October 24, 2018, and the github.com/postmanlabs/httpbin repo was last pushed on May 24, 2024.
go-httpbin is the maintained Go rewrite (v2.26.0, published October 15, 2026) that powers httpbingo.org. It listens on port 8080 by default, caps request bodies at 1 MiB (-max-body-size defaults to 1048576 bytes) and limits response delays to a 10 second max duration (-max-duration defaults to 10s). Its README notes a few differences from the original: there's no /brotli endpoint, ?show_env=1 is ignored, and values that can be a string or a list are always returned as lists.
| Option | Image | Last update | Default port |
|---|---|---|---|
| Original httpbin (Python) | kennethreitz/httpbin | October 24, 2018 | 80 |
| go-httpbin (Go) | ghcr.io/mccutchen/go-httpbin | v2.26.0, October 15, 2026 | 8080 |
| httpbingo.org | Hosted go-httpbin, nothing to run | Runs go-httpbin | 443 (HTTPS) |
# Original image on port 80
docker run -p 80:80 kennethreitz/httpbin
# go-httpbin on port 8080
docker run -p 8080:8080 ghcr.io/mccutchen/go-httpbin
# go-httpbin without Docker
go run github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@latest \
-host 127.0.0.1 -port 8081
Hosted alternatives: httpbingo.org and Postman Echo
If you need a hosted httpbin alternative, httpbingo.org is go-httpbin run as a public service, and it answered all 3 rounds of our checks on October 29, 2026 in about 0.31 to 0.33 seconds.
Postman Echo (postman-echo.com) returns your request as JSON with similar method, header, status (/status/<code>) and delay (/delay/<n>) endpoints, and it answered our checks in 0.13 to 0.28 seconds. It also covers WebSocket (wss://ws.postman-echo.com/raw), gRPC (grpc.postman-echo.com), GraphQL (graphql.postman-echo.com/graphql) and Socket.IO (wss://ws.postman-echo.com/socketio).
curl https://httpbingo.org/get
curl -X POST https://postman-echo.com/post \
-H "Content-Type: application/json" \
-d '{"event":"test"}'
When you need to see a request, not echo it
Echo services only answer the client that made the call and keep nothing, so they don't help when the request comes from someone else's system, like a webhook from Stripe or GitHub, a no-code automation, or an app running on another device. A webhooks.sh bin keeps each request and shows it live in the browser with its method, headers and body. The trade-off is that a bin always replies 200 with a small JSON body like {"ok":true,"delivery_id":"..."}, so it can't return custom statuses or delays; use httpbin for that.
- Create a free bin in your browser at view.webhooks.page or run
curl -X POST https://webhooks.sh/v1/binsto get youringest_urlandview_url. - Send your request to the ingest URL (
https://<bin>.webhooks.page/), which accepts any HTTP method and any subpath. - Open the view URL (
https://view.webhooks.page/b/<bin>#<view key>) in your browser to inspect the request.
You can claim the bin from the bin page with a free Google sign-in before its 48-hour timer runs out to keep the same URL and get 30 days of rolling request history.
| Need | httpbin.org | Postman Echo | webhooks.sh bin |
|---|---|---|---|
| Echo the request back to the caller | Yes | Yes | No, always 200 with a small JSON body |
| Return a status or delay you choose | Yes, /status, /delay | Yes | No |
| Keep requests to read later | No | No | Latest 10, for 48 hours |
| Capture requests a third party sends | No | No | Yes, 100 a day |
| WebSocket, gRPC or GraphQL | No | Yes | No |
# 1. Create a free bin
curl -X POST https://webhooks.sh/v1/bins
# 2. Send it the request you want to see
curl -X POST https://<bin>.webhooks.page/test \
-H "Content-Type: application/json" \
-d '{"event":"test"}'
FAQ
Is httpbin.org down?
No, httpbin.org answered every request in our 3 rounds of checks on October 29, 2026. If you get a 429 response, you hit the rate limit of about 17 requests a second per IP (or 2 a second for body-echo endpoints) and need to wait for the Retry-After time.
Does httpbin.org have a rate limit?
Yes, httpbin.org allows about 17 requests a second per IP, and 2 requests a second for /post, /put, /patch, /delete and /anything, with request bodies up to 1 MiB. Going over gives you a 429 with a Retry-After header, and repeat offenders may be blocked for a while.
How do I run httpbin locally?
Run docker run -p 80:80 kennethreitz/httpbin for the original Python image (last updated in 2018), or run docker run -p 8080:8080 ghcr.io/mccutchen/go-httpbin for the maintained Go version.
What is the difference between httpbin and go-httpbin?
go-httpbin is an MIT-licensed Go rewrite (latest release v2.26.0 on October 15, 2026) that powers httpbingo.org. Unlike the original, it has no /brotli endpoint, ignores ?show_env=1, and always returns list values as lists.
Is Postman Echo a good httpbin alternative?
For HTTP echo, yes: it has similar method, header, status and delay endpoints, plus WebSocket, gRPC, GraphQL and Socket.IO. In our October 29, 2026 test it answered /gzip, /deflate and /stream/3 with 200, but returned 404 for /image/png, /brotli and /redirect/1, so stick with httpbin for images, Brotli and redirects.
How can I see the requests my app or a webhook sends?
Use a request bin instead of an echo service: a free webhooks.sh bin needs no signup, lasts 48 hours, takes 100 requests a day, and shows the latest 10 requests live in the browser. You can claim it with a free Google sign-in to keep 30 days of rolling history.
Last updated
Try it in 10 seconds.
Create a free bin at view.webhooks.page — no signup, no install. Point your sender at the URL and watch requests land live. Bins expire after 48 hours.