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.

EndpointWhat you get back
/getQuery args, headers, origin IP and URL as JSON
/post, /put, /patch, /deleteThe same, plus your body as data, form, files or json
/anythingAny 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-agentJust 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, /delete and /anything allow 2 requests a second.
  • Request bodies can be up to 1 MiB.
  • Going over a limit returns 429 with a Retry-After header.
  • Clients that keep exceeding the limits may be blocked for a while.
  • Malformed or oversized requests get a 4xx response 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.

OptionImageLast updateDefault port
Original httpbin (Python)kennethreitz/httpbinOctober 24, 201880
go-httpbin (Go)ghcr.io/mccutchen/go-httpbinv2.26.0, October 15, 20268080
httpbingo.orgHosted go-httpbin, nothing to runRuns go-httpbin443 (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.

  1. Create a free bin in your browser at view.webhooks.page or run curl -X POST https://webhooks.sh/v1/bins to get your ingest_url and view_url.
  2. Send your request to the ingest URL (https://<bin>.webhooks.page/), which accepts any HTTP method and any subpath.
  3. 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.

Needhttpbin.orgPostman Echowebhooks.sh bin
Echo the request back to the callerYesYesNo, always 200 with a small JSON body
Return a status or delay you chooseYes, /status, /delayYesNo
Keep requests to read laterNoNoLatest 10, for 48 hours
Capture requests a third party sendsNoNoYes, 100 a day
WebSocket, gRPC or GraphQLNoYesNo
# 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.