๐ก Is httpstat.us down right now? We check it (and 36 other classic public mock/placeholder APIs) with a plain GET every 30 minutes โ see the live status page.
httpstat.us has one perfect trick: put a status code in the URL, get that status back. httpstat.us/503 โ 503. It's wired into a decade of retry-logic tests, monitoring checks, tutorials and CI suites.
And it keeps going down. As of late August 2026, connections to httpstat.us fail outright โ curl gets an empty reply and browsers show ERR_EMPTY_RESPONSE, on both HTTP and HTTPS:
curl -i https://httpstat.us/200
# โ curl: (52) Empty reply from server
This isn't the first time: its GitHub issue tracker has "is it down?" threads going back to 2020, an issue filed against webmock in 2023 flatly called the site defunct, and Fleet's Go tests broke in 2025 for the same reason. A status-testing service your tests can't reach fails CI in the most confusing way possible โ with a network error instead of the status you asked for.
Here's the same job on Mockbird โ no signup, CORS on, free โ plus the retry-testing tools httpstat.us never had.
Mockbird's httpbin-compatible surface has a status endpoint that works right now, no setup:
curl -i https://mockbird.mockbird.workers.dev/m/httpbin/status/503
# โ HTTP/2 503
curl -i https://mockbird.mockbird.workers.dev/m/httpbin/status/418
# โ HTTP/2 418
Swap httpstat.us/<code> for https://mockbird.mockbird.workers.dev/m/httpbin/status/<code> and your test points at something that answers. A comma-separated list picks one at random per request โ handy for flaky-upstream simulations:
curl -s -o /dev/null -w "%{http_code}\n" \
"https://mockbird.mockbird.workers.dev/m/httpbin/status/200,500"
# โ 200 or 500, chosen per request
| On httpstat.us | On Mockbird |
|---|---|
/503 โ status by URL | /m/httpbin/status/503 |
?sleep=5000 โ delay in ms | ?mock_delay=5000 on any mock URL (max 5000ms), or /m/httpbin/delay/5 in seconds (max 10) |
Accept: application/json for a JSON body | responses are JSON by default |
| teapots & friends (418, 429, 522โฆ) | any code 200โ599 (Workers can't emit 1xx โ httpstat.us could) |
| error status on your data's endpoint | ?mock_status=503 on any resource URL โ the error arrives on the same endpoint your app actually calls |
That last row matters: with httpstat.us, testing "what does my app do when the products API 500s" meant pointing your code at a different host. On Mockbird the status override rides on the real mock endpoint:
curl -i "https://mockbird.mockbird.workers.dev/m/demo/products?mock_status=503"
# โ HTTP/2 503
# โ {"error": "simulated 503 error (mock_status)"}
curl -s -o /dev/null -w "%{time_total}\n" \
"https://mockbird.mockbird.workers.dev/m/demo/products?mock_delay=2000"
# โ ~2.0s, then the real product list
The usual reason a test hits /503 is retry logic. But a fixed 503 can only prove your code gives up correctly โ proving it recovers needs an endpoint that fails, then succeeds. That's ?mock_seq:
# 1st request โ 503, 2nd โ 503, 3rd and later โ the real 200 response
curl -s -o /dev/null -w "%{http_code}\n" \
"https://mockbird.mockbird.workers.dev/m/demo/products?mock_seq=503,503,200"
# run it three times: 503, 503, 200 โ deterministic, per client
Every response carries an x-mockbird-seq: pos/len header so you can see where the sequence stands; ?mock_seq_reset=1 restarts it, and ?mock_seq_key=w1 isolates parallel test workers. There's also probabilistic chaos (?mock_chaos=0.5 fails half the requests with random 5xx/429) and a real rate-limit simulation (?mock_ratelimit=5 โ five requests per minute, then 429 with Retry-After and x-ratelimit-* headers) โ see testing rate-limit handling and testing loading & error states.
| httpstat.us | Mockbird | |
|---|---|---|
| Reachable (checked every 30 min) | currently failing | live, free while in beta |
| Status by URL | yes (when up) | yes |
| 1xx codes | yes (when up) | no (200โ599) |
| Max delay | 30s | 5s (mock_delay) / 10s (/delay/:n) |
| Random status from a pool | โ | /status/200,500 |
| Deterministic fail-then-recover sequences | no | ?mock_seq=503,503,200 |
| Rate-limit simulation w/ real headers | no | ?mock_ratelimit=5 |
| Errors on your own data endpoints | no | ?mock_status on any mock URL |
| Free limits | fair-use | 50k req/day on the shared surface, 10k/day per project |
This page is written by the Mockbird maker โ bias disclosed. httpstat.us's outage verified live on Aug 27, 2026 (empty reply on HTTP and HTTPS, curl and real browser); its feature set above is from its long-standing public docs and open-source repo, which also means you can self-host it (aaronpowell/httpstatus on GitHub) if you prefer that route. When it's up, its URL is shorter than ours and it supports 1xx codes we can't emit. Mockbird's /m/httpbin surface also covers the rest of the httpbin catalogue โ see the httpbin guide.
Full API reference in the docs. More guides: httpbin alternative ยท mock rate limits ยท testing loading & error states. Create your API โ
?mock_status, ?mock_seq and friends.