HTTP Status Code Responder
The HTTP Status Code Responder is a free public endpoint at https://mcp.httpstatus.com/status/{code} that returns whichever status code you request, from 100 to 599, along with a small JSON body describing it. An optional delay query parameter lets you simulate slow responses up to 10 seconds. It's built for testing how your code handles errors, retries, timeouts and monitoring alerts — in the same spirit as httpstat.us.
Endpoint
https://mcp.httpstatus.com/status/{code}Any code from 100 to 599. Add ?delay=ms (max 10000) to simulate latency. No key, no rate limit for reasonable use, CORS open to every origin.
GET https://mcp.httpstatus.com/status/418Examples
GET https://mcp.httpstatus.com/status/200Happy path · what 200 means
GET https://mcp.httpstatus.com/status/404Not found handling · what 404 means
GET https://mcp.httpstatus.com/status/429Rate-limit / retry logic · what 429 means
GET https://mcp.httpstatus.com/status/500Generic failure · what 500 means
GET https://mcp.httpstatus.com/status/503?delay=2000Slow outage: 2 s delay · what 503 means
Response
| Status line | the code you asked for |
|---|---|
| Body | {"code": 503, "description": "Service Unavailable"} |
| Content-Type | application/json; charset=utf-8 |
| X-Status-Code / X-Status-Description | always present, even for body-less 204 / 304 |
| Access-Control-Allow-Origin | * |
| Cache-Control | no-store |
Two edge cases: 204, 205 and 304 are sent without a body (the spec forbids one), and 1xx codes are answered with 200 plus X-Status-Code, because an informational code cannot be the final response to a request.
Use it from code
# curl
curl -i "https://mcp.httpstatus.com/status/503?delay=1000"
# JavaScript / fetch
const res = await fetch("https://mcp.httpstatus.com/status/429");
console.log(res.status); // 429
# Python / requests
import requests
r = requests.get("https://mcp.httpstatus.com/status/404", timeout=5)
assert r.status_code == 404How it works
Call the endpoint with a GET request to https://mcp.httpstatus.com/status/{code}, substituting any valid HTTP status code from 100 to 599 for {code} — for example /status/404 or /status/503. The response is returned with that exact status code set on the HTTP response itself, not just described in the body, so tools that inspect the real status line, like fetch(), axios, curl, or a monitoring probe, see genuine behaviour rather than a simulation wrapped in a 200. The JSON body accompanying it is small and predictable — a numeric code field and a text description field — giving you a machine-readable label alongside the status.
An optional delay query parameter, in milliseconds, makes the endpoint wait before responding — for example /status/504?delay=3000 waits three seconds before returning a 504. Delay is capped at 10000 milliseconds (10 seconds) to keep the endpoint usable for everyone. This is useful for testing client-side timeout logic, loading states, and retry backoff without needing to stand up a slow server yourself.
The endpoint requires no authentication or API key, has no rate limit tight enough to worry about for normal test and development use, and sends CORS headers that allow it to be called directly from browser JavaScript on any origin. It's commonly wired into test suites to assert error-handling code paths, into monitoring tools to verify alerting actually fires, and into local development to mock a flaky or failing upstream dependency without touching real infrastructure.
Frequently asked questions
How do I get a 500 error response for testing?
Send a GET request to https://mcp.httpstatus.com/status/500. The response itself carries a real 500 status code, along with a JSON body describing it.
Can I call this endpoint directly from browser JavaScript?
Yes. It sends CORS headers that allow requests from any origin, so fetch() calls from a browser work without a proxy or server-side relay.
What is the maximum delay I can request?
10,000 milliseconds (10 seconds), set with the ?delay= query parameter, for example /status/200?delay=5000. Requests for a longer delay are capped at that limit.
Is there a rate limit or API key required?
No API key is needed and there's no rate limit that affects normal test-suite or development usage. It's a free public endpoint meant to be called freely.
What status codes are supported?
Any standard HTTP status code from 100 through 599, including informational, success, redirect, client error and server error codes.