{"openapi":"3.1.0","info":{"title":"HTTP Status API","version":"1.0.0","description":"Every HTTP status code as an API. Look up any code (e.g. 404, 429, 503) and get its standard reason phrase, its class (1xx Informational, 2xx Success, 3xx Redirection, 4xx Client Error, 5xx Server Error), a plain-English description, the RFC that defines it, and handy flags for whether it is an error and whether it is commonly safe to retry (408, 425, 429, 500, 502, 503, 504). List every assigned code or filter by class, and enumerate the five status classes. Perfect for API clients and gateways, error pages, logging and monitoring dashboards, documentation and teaching. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 4 endpoints. Distinct from host/uptime checkers that report a live status — this is the reference dictionary of the codes themselves.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/httpstatus-api","description":"oanor gateway"}],"tags":[{"name":"HTTP Status"},{"name":"Reference"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/code":{"get":{"operationId":"get_v1_code","tags":["HTTP Status"],"summary":"Look up a status code","description":"","parameters":[{"name":"code","in":"query","required":true,"description":"Status code","schema":{"type":"string"},"example":"404"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"rfc":"RFC 9110","code":404,"message":"Not Found","category":"Client Error","is_error":true,"description":"The server cannot find the requested resource.","is_retryable":false,"category_class":"4xx"},"meta":{"timestamp":"2026-06-03T01:09:48.437Z","request_id":"33a4785a-4960-4ec3-bd72-06ffe53f702f"},"status":"ok","message":"Look up a status code","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/list":{"get":{"operationId":"get_v1_list","tags":["HTTP Status"],"summary":"List status codes","description":"","parameters":[{"name":"category","in":"query","required":false,"description":"Filter 1..5 or 1xx..5xx","schema":{"type":"string"},"example":"4xx"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"codes":[{"rfc":"RFC 9110","code":400,"message":"Bad Request","category":"Client Error","is_error":true,"description":"The server cannot process the request due to a client error.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":401,"message":"Unauthorized","category":"Client Error","is_error":true,"description":"Authentication is required and has failed or not been provided.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":402,"message":"Payment Required","category":"Client Error","is_error":true,"description":"Reserved for future use; sometimes used for paywalls/quotas.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":403,"message":"Forbidden","category":"Client Error","is_error":true,"description":"The server understood the request but refuses to authorize it.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":404,"message":"Not Found","category":"Client Error","is_error":true,"description":"The server cannot find the requested resource.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":405,"message":"Method Not Allowed","category":"Client Error","is_error":true,"description":"The request method is not supported for this resource.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":406,"message":"Not Acceptable","category":"Client Error","is_error":true,"description":"No content matching the Accept headers is available.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":407,"message":"Proxy Authentication Required","category":"Client Error","is_error":true,"description":"The client must authenticate with a proxy.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":408,"message":"Request Timeout","category":"Client Error","is_error":true,"description":"The server timed out waiting for the request.","is_retryable":true,"category_class":"4xx"},{"rfc":"RFC 9110","code":409,"message":"Conflict","category":"Client Error","is_error":true,"description":"The request conflicts with the current state of the resource.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":410,"message":"Gone","category":"Client Error","is_error":true,"description":"The resource is permanently gone and will not return.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":411,"message":"Length Required","category":"Client Error","is_error":true,"description":"The request must include a Content-Length header.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":412,"message":"Precondition Failed","category":"Client Error","is_error":true,"description":"A precondition in the request headers was not met.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":413,"message":"Content Too Large","category":"Client Error","is_error":true,"description":"The request body is larger than the server will process.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":414,"message":"URI Too Long","category":"Client Error","is_error":true,"description":"The request URI is longer than the server will interpret.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":415,"message":"Unsupported Media Type","category":"Client Error","is_error":true,"description":"The request payload format is not supported.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":416,"message":"Range Not Satisfiable","category":"Client Error","is_error":true,"description":"The requested range cannot be fulfilled.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":417,"message":"Expectation Failed","category":"Client Error","is_error":true,"description":"The expectation in the Expect header could not be met.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 2324","code":418,"message":"I'm a teapot","category":"Client Error","is_error":true,"description":"The server refuses to brew coffee with a teapot (April Fools).","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":421,"message":"Misdirected Request","category":"Client Error","is_error":true,"description":"The request was directed at a server that cannot respond.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 9110","code":422,"message":"Unprocessable Content","category":"Client Error","is_error":true,"description":"The request is well-formed but semantically invalid.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 4918","code":423,"message":"Locked","category":"Client Error","is_error":true,"description":"The resource is locked (WebDAV).","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 4918","code":424,"message":"Failed Dependency","category":"Client Error","is_error":true,"description":"The request failed due to a previous failed request (WebDAV).","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 8470","code":425,"message":"Too Early","category":"Client Error","is_error":true,"description":"The server is unwilling to risk processing a replayed request.","is_retryable":true,"category_class":"4xx"},{"rfc":"RFC 9110","code":426,"message":"Upgrade Required","category":"Client Error","is_error":true,"description":"The client should switch to a different protocol.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 6585","code":428,"message":"Precondition Required","category":"Client Error","is_error":true,"description":"The origin server requires the request to be conditional.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 6585","code":429,"message":"Too Many Requests","category":"Client Error","is_error":true,"description":"The user has sent too many requests (rate limiting).","is_retryable":true,"category_class":"4xx"},{"rfc":"RFC 6585","code":431,"message":"Request Header Fields Too Large","category":"Client Error","is_error":true,"description":"Header fields are too large to process.","is_retryable":false,"category_class":"4xx"},{"rfc":"RFC 7725","code":451,"message":"Unavailable For Legal Reasons","category":"Client Error","is_error":true,"description":"The resource is unavailable for legal reasons.","is_retryable":false,"category_class":"4xx"}],"count":29},"meta":{"timestamp":"2026-06-03T01:09:48.532Z","request_id":"410d1584-964c-4600-aa9d-63dc129b00ff"},"status":"ok","message":"List status codes","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/categories":{"get":{"operationId":"get_v1_categories","tags":["Reference"],"summary":"Status classes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"categories":[{"name":"Informational","class":"1xx"},{"name":"Success","class":"2xx"},{"name":"Redirection","class":"3xx"},{"name":"Client Error","class":"4xx"},{"name":"Server Error","class":"5xx"}]},"meta":{"timestamp":"2026-06-03T01:09:48.604Z","request_id":"d724ae8a-5b90-470f-b683-1da61987feb7"},"status":"ok","message":"Status classes","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"HTTP Status API","notes":"is_retryable flags codes that are commonly safe to retry (408, 425, 429, 500, 502, 503, 504). Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/code","params":{"code":"e.g. 404 (required)"},"returns":"message, category, description, RFC, is_error, is_retryable"},{"path":"/v1/list","params":{"category":"optional 1..5 or 1xx..5xx"},"returns":"all codes (optionally filtered by class)"},{"path":"/v1/categories","params":[],"returns":"the five status classes"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Look up HTTP status codes — the standard message, category, plain-English description, defining RFC and whether the code is an error or safely retryable. Covers all assigned 1xx–5xx codes. Pure local, no key."},"meta":{"timestamp":"2026-06-03T01:09:48.693Z","request_id":"bede28ec-5cdc-4837-b8da-cc57829ad7a3"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":680,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":70,"monthly_call_quota":5300,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1820,"monthly_call_quota":121000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5420,"monthly_call_quota":625000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/httpstatus-api"}