โ† All guides

๐Ÿ“ก Is httpbin.org down right now? We check it (and 14 other classic public mock/placeholder APIs) with a plain GET every 30 minutes โ€” see the live status page.

httpbin.org is 503ing again โ€” here's a free alternative for the same jobs

httpbin is the tool everyone reaches for to test an HTTP client: echo my request back, give me a 500, make the response slow. But httpbin.org is a free community-run instance, and it's chronically overloaded โ€” as of this writing (July 2026) it's returning:

curl https://httpbin.org/get
# โ†’ 503 Service Temporarily Unavailable

If your test suite or tutorial depends on it, that's your build failing for someone else's capacity problem. Here's how to do the common httpbin jobs on Mockbird โ€” no signup, CORS on, free โ€” starting with a drop-in you can point existing scripts at right now.

Option 0: swap the host โ€” a drop-in httpbin-compatible surface

Mockbird serves an httpbin-compatible surface at /m/httpbin/*: same paths, same response shapes as httpbin.org's greatest hits. If your script or test suite hardcodes httpbin.org, change the host and most of it keeps working:

# before (503 right now)
curl "https://httpbin.org/get?x=1"

# after โ€” same response shape back
curl "https://HOST/m/httpbin/get?x=1"

curl -X POST "https://HOST/m/httpbin/post" -d 'name=bob'      # form echo, httpbin-style
curl "https://HOST/m/httpbin/status/418"                      # any status (comma list randomizes)
curl "https://HOST/m/httpbin/delay/3"                         # seconds, max 10 โ€” like httpbin
curl "https://HOST/m/httpbin/uuid"                            # {"uuid": "..."}
curl "https://HOST/m/httpbin/headers"                         # your request headers
curl -u user:pass "https://HOST/m/httpbin/basic-auth/user/pass"
curl -X PUT "https://HOST/m/httpbin/anything/whatever?x=1" -d '{"a":1}' -H 'content-type: application/json'

Covered: /get /post /put /patch /delete /anything/* /headers /ip /user-agent /uuid /status/:codes /delay/:n /base64/:val /json /xml /html /robots.txt /basic-auth/:u/:p /bearer /redirect/:n /response-headers /cookies /stream/:n /gzip /deflate /brotli. GET /m/httpbin returns the full self-describing list.

Deliberately not covered: /redirect-to (open redirect), /cookies/set (we never set cookies), /image* + /bytes + /drip (binary/stream noise), /digest-auth. The /gzip-family endpoints return the same JSON shape, but actual content-encoding is negotiated by the CDN. One more honesty note: /ip returns your IP to you โ€” nothing on this surface is logged with IPs.

The rest of this guide covers the same jobs done Mockbird-natively โ€” useful when you want realistic JSON payloads, your own resources, or endpoints httpbin never had.

Try it in 10 seconds (no setup)

# echo โ€” like httpbin /get, /post, /anything
curl "https://HOST/m/demo/echo?foo=bar"
# โ†’ {"method":"GET","path":"/m/demo/echo","query":{"foo":"bar"},"body":null, ...}

curl -X POST "https://HOST/m/demo/echo" \
  -H 'content-type: application/json' -d '{"hello":"world"}'
# โ†’ {"method":"POST", ..., "body":{"hello":"world"}}

# force any status code โ€” like httpbin /status/503
curl -i "https://HOST/m/demo/products?mock_status=503"

# slow response โ€” like httpbin /delay/3 (milliseconds here)
curl "https://HOST/m/demo/products?mock_delay=3000"

?mock_status= and ?mock_delay= work on every endpoint (and combine), so you can test timeouts and error handling against realistic JSON payloads, not just empty bodies.

The httpbin greatest hits, translated

httpbinMockbird
GET /get, POST /post, /anythingANY /m/demo/echo โ€” echoes method, path, query, body
/status/500?mock_status=500 on any endpoint (100โ€“599)
/delay/3?mock_delay=3000 (up to 10s, milliseconds)
/headersrequest inspector โ€” headers of your last 50 requests, see below
/uuida one-line template route with {{uuid}}, see below
/post as a dumping groundcatch-all /* request bin that logs everything โ€” request-bin guide
/ipno equivalent โ€” we deliberately don't capture client IPs

See your request's headers (the /headers job)

Every request to a Mockbird project is logged in its request inspector โ€” method, path, query, body snippet, and headers (content-type, user-agent, accept, referer, and all x-* headers; auth headers are redacted to their scheme). The demo project's inspector is public, so this works with zero setup:

curl "https://HOST/m/demo/echo" -H 'x-test-header: hello'

curl "https://HOST/api/projects/demo/requests"
# โ†’ last 50 requests, yours on top, headers included

On your own project the inspector is private (admin key or dashboard), with a live auto-refresh view โ€” handy for checking exactly what your HTTP client, webhook sender, or SDK is actually putting on the wire, including signature headers.

Build your own /uuid and /anything

Custom routes give you httpbin-style utility endpoints under your own URL. Create a project and add templated routes:

curl -X POST https://HOST/api/projects \
  -H 'content-type: application/json' -d '{"name":"my-httpbin"}'
# โ†’ {"id":"abc123","adminKey":"KEY", ...}

# GET /uuid โ€” a fresh UUID per request
curl -X POST https://HOST/api/projects/abc123/routes \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"method":"GET","path":"/uuid","body":"{\"uuid\":\"{{uuid}}\"}"}'

# ANY /anything/* โ€” echo on any method, any depth
curl -X POST https://HOST/api/projects/abc123/routes \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"method":"ANY","path":"/anything/*","body":"{\"method\":\"{{method}}\",\"path\":\"{{path}}\",\"query\":{{{query}}},\"body\":{{{body}}}}"}'

curl "https://HOST/m/abc123/uuid"
# โ†’ {"uuid":"550270df-3fca-4f54-b9bd-5ff151c38558"}

curl -X PUT "https://HOST/m/abc123/anything/deep/path?x=1" \
  -H 'content-type: application/json' -d '{"k":"v"}'
# โ†’ {"method":"PUT","path":"/m/abc123/anything/deep/path","query":{"x":"1"},"body":{"k":"v"}}

Templates can use {{uuid}}, {{now}}, {{ts}}, {{rand}}, {{query.x}}, {{params.x}}, {{headers.x}}, {{body.x}} and more; you control status, content-type, response headers, and per-route delay. Full reference in the custom endpoints guide and docs.

And because this is a mock-API service, the same project can also host seeded CRUD resources, GraphQL, and mock JWT auth โ€” so your "httpbin" and your fake backend live at one base URL.

Honest comparison

httpbin.orgMockbird
Echo / anything endpointyes (when up)yes โ€” demo /echo or your own routes
Any status code/status/:code?mock_status= on any endpoint
Delays/delay/:s (โ‰ค10s)?mock_delay= ms (โ‰ค10s)
Header inspectionechoed in responseechoed via templates + logged in inspector (last 50)
Redirects, gzip, images, cookies, digest authyes โ€” huge catalogueno
Client IP echo/ipno โ€” IPs deliberately not captured
Reliabilitycommunity instance, frequently 503runs on Cloudflare's edge; per-project 10k req/day cap keeps it that way
Self-hostableyes (docker)no

Where httpbin still wins: its endpoint catalogue is far bigger (redirect chains, gzip/deflate/brotli bodies, images, cookies, cache headers, basic/digest auth challenges), the response shapes are a de-facto standard, and you can docker run kennethreitz/httpbin to self-host it โ€” if you need those, do that. postman-echo.com is another hosted echo option. This page is written by the Mockbird maker โ€” bias disclosed. httpbin.org's 503 verified live in July 2026; it may well be back up when you read this โ€” the point is a dependency you don't have to check first. Anonymous Mockbird projects have a per-IP daily creation cap; sign up (free) to keep projects permanently.

Full API reference in the docs. More guides: mock any endpoint ยท webhook.site alternative ยท testing loading & error states. Create your API โ†’