[{"data":1,"prerenderedAt":1600},["ShallowReactive",2],{"\u002Fblog\u002Fhttp-status-codes-complete-list":3},{"id":4,"title":5,"author":6,"body":8,"category":1588,"date":1589,"description":1590,"extension":1591,"image":1592,"lastUpdated":1592,"meta":1593,"navigation":1594,"path":1595,"readingTime":1596,"seo":1597,"stem":1598,"__hash__":1599},"blog\u002Fblog\u002Fhttp-status-codes-complete-list.md","HTTP Status Codes: Complete Reference Guide (2026)",{"name":7},"Vantaj Team",{"type":9,"value":10,"toc":1560},"minimark",[11,15,18,23,112,115,118,122,125,206,212,214,218,226,374,379,385,391,397,403,413,415,419,422,535,539,545,551,557,563,568,570,574,577,1023,1027,1033,1039,1045,1051,1057,1062,1064,1068,1071,1231,1235,1241,1247,1256,1262,1266,1318,1323,1325,1329,1333,1367,1371,1404,1408,1434,1438,1471,1475,1516,1518,1522,1525,1557],[12,13,14],"p",{},"HTTP status codes are three-digit numbers a server sends back with every response. The first digit tells you the class of response. The next two digits narrow it down.",[12,16,17],{},"This guide covers every meaningful status code - what it means, when you'll encounter it, what to do when your monitoring catches it, and which ones matter most for reliability.",[19,20,22],"h2",{"id":21},"status-code-classes","Status Code Classes",[24,25,26,42],"table",{},[27,28,29],"thead",{},[30,31,32,36,39],"tr",{},[33,34,35],"th",{},"Class",[33,37,38],{},"Range",[33,40,41],{},"Meaning",[43,44,45,60,73,86,99],"tbody",{},[30,46,47,54,57],{},[48,49,50],"td",{},[51,52,53],"strong",{},"1xx",[48,55,56],{},"100–199",[48,58,59],{},"Informational - request received, processing continues",[30,61,62,67,70],{},[48,63,64],{},[51,65,66],{},"2xx",[48,68,69],{},"200–299",[48,71,72],{},"Success - request received, understood, and accepted",[30,74,75,80,83],{},[48,76,77],{},[51,78,79],{},"3xx",[48,81,82],{},"300–399",[48,84,85],{},"Redirection - further action needed to complete request",[30,87,88,93,96],{},[48,89,90],{},[51,91,92],{},"4xx",[48,94,95],{},"400–499",[48,97,98],{},"Client error - request contains bad syntax or can't be fulfilled",[30,100,101,106,109],{},[48,102,103],{},[51,104,105],{},"5xx",[48,107,108],{},"500–599",[48,110,111],{},"Server error - server failed to fulfill a valid request",[12,113,114],{},"The dividing line at 4xx vs. 5xx matters for monitoring: a 4xx means the client did something wrong; a 5xx means the server failed. When your uptime monitor fires on a 4xx, check your monitor configuration. When it fires on a 5xx, check your infrastructure.",[116,117],"hr",{},[19,119,121],{"id":120},"_1xx-informational","1xx - Informational",[12,123,124],{},"These codes acknowledge the request is in progress. You rarely encounter them in standard HTTP\u002F1.1 flows, but they appear in HTTP\u002F2 push scenarios and WebSocket upgrade handshakes.",[24,126,127,139],{},[27,128,129],{},[30,130,131,134,137],{},[33,132,133],{},"Code",[33,135,136],{},"Name",[33,138,41],{},[43,140,141,159,176,189],{},[30,142,143,148,151],{},[48,144,145],{},[51,146,147],{},"100",[48,149,150],{},"Continue",[48,152,153,154,158],{},"The server received the request headers and the client should proceed with sending the request body. Used when the client sends ",[155,156,157],"code",{},"Expect: 100-continue"," before a large upload.",[30,160,161,166,169],{},[48,162,163],{},[51,164,165],{},"101",[48,167,168],{},"Switching Protocols",[48,170,171,172,175],{},"The server agrees to upgrade the connection protocol. Most commonly seen in WebSocket upgrades (",[155,173,174],{},"Upgrade: websocket",").",[30,177,178,183,186],{},[48,179,180],{},[51,181,182],{},"102",[48,184,185],{},"Processing",[48,187,188],{},"The server received the request and is processing it, but hasn't finished. Prevents the client from timing out during long operations. (WebDAV)",[30,190,191,196,199],{},[48,192,193],{},[51,194,195],{},"103",[48,197,198],{},"Early Hints",[48,200,201,202,205],{},"The server sends preliminary response headers (e.g., ",[155,203,204],{},"Link: rel=preload",") before the final response. Allows browsers to start preloading assets early.",[12,207,208,211],{},[51,209,210],{},"Monitoring relevance:"," 101 appears in WebSocket health checks. 103 is a CDN optimization feature. You won't monitor against 1xx codes in standard uptime monitoring.",[116,213],{},[19,215,217],{"id":216},"_2xx-success","2xx - Success",[12,219,220,221,225],{},"The request was received, understood, and processed. The specific 2xx code tells you ",[222,223,224],"em",{},"how"," it was processed.",[24,227,228,238],{},[27,229,230],{},[30,231,232,234,236],{},[33,233,133],{},[33,235,136],{},[33,237,41],{},[43,239,240,253,270,283,296,309,322,335,348,361],{},[30,241,242,247,250],{},[48,243,244],{},[51,245,246],{},"200",[48,248,249],{},"OK",[48,251,252],{},"Standard success. The response body contains the requested data.",[30,254,255,260,263],{},[48,256,257],{},[51,258,259],{},"201",[48,261,262],{},"Created",[48,264,265,266,269],{},"A new resource was created. Typically returned after a successful POST. The ",[155,267,268],{},"Location"," header usually points to the new resource.",[30,271,272,277,280],{},[48,273,274],{},[51,275,276],{},"202",[48,278,279],{},"Accepted",[48,281,282],{},"The request was accepted for processing, but processing hasn't completed. Used for async operations where the server queues work.",[30,284,285,290,293],{},[48,286,287],{},[51,288,289],{},"203",[48,291,292],{},"Non-Authoritative Information",[48,294,295],{},"The response comes from a third-party proxy, not the origin server. The body may differ from what the origin would have returned.",[30,297,298,303,306],{},[48,299,300],{},[51,301,302],{},"204",[48,304,305],{},"No Content",[48,307,308],{},"The request succeeded but there's nothing to return. Common in DELETE operations, OPTIONS preflight responses, and PATCH calls where no body is needed.",[30,310,311,316,319],{},[48,312,313],{},[51,314,315],{},"205",[48,317,318],{},"Reset Content",[48,320,321],{},"Success, and the client should reset the document view (e.g., clear a form). Rarely used in practice.",[30,323,324,329,332],{},[48,325,326],{},[51,327,328],{},"206",[48,330,331],{},"Partial Content",[48,333,334],{},"The server is delivering only part of the resource. Used for range requests - resumable downloads, video streaming, large file chunking.",[30,336,337,342,345],{},[48,338,339],{},[51,340,341],{},"207",[48,343,344],{},"Multi-Status",[48,346,347],{},"The response body contains multiple status codes for multiple sub-requests. (WebDAV)",[30,349,350,355,358],{},[48,351,352],{},[51,353,354],{},"208",[48,356,357],{},"Already Reported",[48,359,360],{},"Resources have already been listed in a previous response. Prevents infinite loops in DAV tree traversal. (WebDAV)",[30,362,363,368,371],{},[48,364,365],{},[51,366,367],{},"226",[48,369,370],{},"IM Used",[48,372,373],{},"The server fulfilled a GET request using delta encoding. (HTTP Delta Encoding, RFC 3229)",[375,376,378],"h3",{"id":377},"_2xx-codes-youll-encounter-most","2xx codes you'll encounter most",[12,380,381,384],{},[51,382,383],{},"200 OK"," - 95%+ of successful responses. Configure your monitors to expect 200 from health check endpoints.",[12,386,387,390],{},[51,388,389],{},"201 Created"," - Verify your API returns this after POST requests that create resources. If your API returns 200 on creation instead of 201, it works but doesn't follow REST conventions.",[12,392,393,396],{},[51,394,395],{},"204 No Content"," - Common from DELETE endpoints and webhooks. If your uptime monitor checks a DELETE endpoint and expects a body, 204 will look like a failure. Configure body checks carefully on these endpoints.",[12,398,399,402],{},[51,400,401],{},"206 Partial Content"," - Relevant when monitoring media streaming endpoints. A 206 on a streaming endpoint is healthy behavior, not a failure.",[12,404,405,408,409,412],{},[51,406,407],{},"Monitoring tip:"," A 200 response doesn't always mean healthy. Load balancers return 200 with error pages. CDNs return 200 with stale cached content. Configure your monitor to also validate a keyword in the response body (e.g., ",[155,410,411],{},"\"status\":\"ok\"",") to catch these cases.",[116,414],{},[19,416,418],{"id":417},"_3xx-redirection","3xx - Redirection",[12,420,421],{},"The client needs to take additional action to complete the request, usually by following a redirect.",[24,423,424,434],{},[27,425,426],{},[30,427,428,430,432],{},[33,429,133],{},[33,431,136],{},[33,433,41],{},[43,435,436,449,462,475,488,509,522],{},[30,437,438,443,446],{},[48,439,440],{},[51,441,442],{},"300",[48,444,445],{},"Multiple Choices",[48,447,448],{},"The resource has multiple representations. The server provides options - the client chooses. Rarely used in practice.",[30,450,451,456,459],{},[48,452,453],{},[51,454,455],{},"301",[48,457,458],{},"Moved Permanently",[48,460,461],{},"The resource has a new permanent URL. Clients and crawlers should update their references. Cached by browsers and proxies.",[30,463,464,469,472],{},[48,465,466],{},[51,467,468],{},"302",[48,470,471],{},"Found",[48,473,474],{},"Temporary redirect. The resource is temporarily at a different URL. Clients should continue to use the original URL for future requests.",[30,476,477,482,485],{},[48,478,479],{},[51,480,481],{},"303",[48,483,484],{},"See Other",[48,486,487],{},"Redirect to a different URL, and use GET to retrieve it. Used after POST\u002FPUT to redirect to a confirmation page (Post\u002FRedirect\u002FGet pattern).",[30,489,490,495,498],{},[48,491,492],{},[51,493,494],{},"304",[48,496,497],{},"Not Modified",[48,499,500,501,504,505,508],{},"The resource hasn't changed since the client's cached version. No body is returned - the client uses its cache. Requires ",[155,502,503],{},"If-Modified-Since"," or ",[155,506,507],{},"If-None-Match"," in the request.",[30,510,511,516,519],{},[48,512,513],{},[51,514,515],{},"307",[48,517,518],{},"Temporary Redirect",[48,520,521],{},"Redirect, but the method and body must be preserved. Unlike 302, a POST stays a POST after the redirect.",[30,523,524,529,532],{},[48,525,526],{},[51,527,528],{},"308",[48,530,531],{},"Permanent Redirect",[48,533,534],{},"Like 301, but the method and body must be preserved. A POST to a 308 URL stays a POST at the new URL.",[375,536,538],{"id":537},"_3xx-codes-youll-encounter-most","3xx codes you'll encounter most",[12,540,541,544],{},[51,542,543],{},"301 Moved Permanently"," - HTTP → HTTPS redirects, domain migrations, URL restructuring. Your monitoring tool should follow redirects by default. If it doesn't, a site that redirects HTTP to HTTPS will always trigger an alert.",[12,546,547,550],{},[51,548,549],{},"302 Found"," - Temporary redirects. Common in login flows, A\u002FB testing, and temporary maintenance pages.",[12,552,553,556],{},[51,554,555],{},"304 Not Modified"," - Normal caching behavior. If your uptime monitor sends conditional requests and gets 304, it's a valid healthy response - configure your monitor to accept it.",[12,558,559,562],{},[51,560,561],{},"307 vs. 302"," - If you're running a redirect after a POST (e.g., redirect after form submission), 307 preserves the POST method while 302 doesn't guarantee it. Modern clients treat 302 as a GET redirect in practice.",[12,564,565,567],{},[51,566,407],{}," If your monitor detects a redirect chain longer than 3-4 hops, that's a misconfiguration worth investigating. Excessive redirect chains add latency and can cause loops.",[116,569],{},[19,571,573],{"id":572},"_4xx-client-errors","4xx - Client Errors",[12,575,576],{},"The server received the request but couldn't process it because of a problem with the request itself. The client - browser, API consumer, or monitoring probe - sent something invalid.",[24,578,579,589],{},[27,580,581],{},[30,582,583,585,587],{},[33,584,133],{},[33,586,136],{},[33,588,41],{},[43,590,591,604,621,634,647,660,685,702,715,728,741,754,771,792,805,818,835,852,869,882,895,908,921,934,947,964,980,997,1010],{},[30,592,593,598,601],{},[48,594,595],{},[51,596,597],{},"400",[48,599,600],{},"Bad Request",[48,602,603],{},"The server can't process the request due to malformed syntax, invalid parameters, or deceptive routing.",[30,605,606,611,614],{},[48,607,608],{},[51,609,610],{},"401",[48,612,613],{},"Unauthorized",[48,615,616,617,620],{},"Authentication required. The client hasn't provided credentials or provided invalid ones. The ",[155,618,619],{},"WWW-Authenticate"," header tells the client what authentication scheme to use.",[30,622,623,628,631],{},[48,624,625],{},[51,626,627],{},"402",[48,629,630],{},"Payment Required",[48,632,633],{},"Reserved for future use, originally intended for digital payments. Some APIs use it for rate-limiting behind paywalls.",[30,635,636,641,644],{},[48,637,638],{},[51,639,640],{},"403",[48,642,643],{},"Forbidden",[48,645,646],{},"The server understands the request but refuses to authorize it. The client is authenticated but lacks permission. Unlike 401, re-authenticating won't help.",[30,648,649,654,657],{},[48,650,651],{},[51,652,653],{},"404",[48,655,656],{},"Not Found",[48,658,659],{},"The resource doesn't exist at this URL. May be permanent or temporary. The server isn't saying whether it ever existed.",[30,661,662,667,670],{},[48,663,664],{},[51,665,666],{},"405",[48,668,669],{},"Method Not Allowed",[48,671,672,673,676,677,680,681,684],{},"The HTTP method used isn't supported for this resource. A ",[155,674,675],{},"GET"," request to an endpoint that only accepts ",[155,678,679],{},"POST",". The response includes an ",[155,682,683],{},"Allow"," header listing valid methods.",[30,686,687,692,695],{},[48,688,689],{},[51,690,691],{},"406",[48,693,694],{},"Not Acceptable",[48,696,697,698,701],{},"The server can't produce a response matching the client's ",[155,699,700],{},"Accept"," headers. The server can't provide the content type the client requested.",[30,703,704,709,712],{},[48,705,706],{},[51,707,708],{},"407",[48,710,711],{},"Proxy Authentication Required",[48,713,714],{},"Like 401, but the proxy (not the origin server) requires authentication.",[30,716,717,722,725],{},[48,718,719],{},[51,720,721],{},"408",[48,723,724],{},"Request Timeout",[48,726,727],{},"The client took too long to send the full request. The server closed the connection.",[30,729,730,735,738],{},[48,731,732],{},[51,733,734],{},"409",[48,736,737],{},"Conflict",[48,739,740],{},"The request conflicts with the current state of the resource. Common in concurrent update scenarios - two clients trying to modify the same resource simultaneously.",[30,742,743,748,751],{},[48,744,745],{},[51,746,747],{},"410",[48,749,750],{},"Gone",[48,752,753],{},"The resource existed but was permanently removed. Unlike 404, the server explicitly confirms it's gone forever.",[30,755,756,761,764],{},[48,757,758],{},[51,759,760],{},"411",[48,762,763],{},"Length Required",[48,765,766,767,770],{},"The server requires a ",[155,768,769],{},"Content-Length"," header but the request didn't include one.",[30,772,773,778,781],{},[48,774,775],{},[51,776,777],{},"412",[48,779,780],{},"Precondition Failed",[48,782,783,784,787,788,791],{},"Conditional request headers (",[155,785,786],{},"If-Match",", ",[155,789,790],{},"If-Unmodified-Since",") didn't match the resource's current state.",[30,793,794,799,802],{},[48,795,796],{},[51,797,798],{},"413",[48,800,801],{},"Content Too Large",[48,803,804],{},"The request body exceeds the server's allowed size. Common when uploading files that exceed configured limits.",[30,806,807,812,815],{},[48,808,809],{},[51,810,811],{},"414",[48,813,814],{},"URI Too Long",[48,816,817],{},"The request URI is longer than the server will process. Usually caused by extremely long query strings.",[30,819,820,825,828],{},[48,821,822],{},[51,823,824],{},"415",[48,826,827],{},"Unsupported Media Type",[48,829,830,831,834],{},"The server won't accept the request because the ",[155,832,833],{},"Content-Type"," doesn't match what it expects. Sending XML to an endpoint that only accepts JSON.",[30,836,837,842,845],{},[48,838,839],{},[51,840,841],{},"416",[48,843,844],{},"Range Not Satisfiable",[48,846,847,848,851],{},"The range in a range request (",[155,849,850],{},"Range: bytes=500-999",") doesn't overlap with the actual resource.",[30,853,854,859,862],{},[48,855,856],{},[51,857,858],{},"417",[48,860,861],{},"Expectation Failed",[48,863,864,865,868],{},"The server can't meet the requirements specified in the ",[155,866,867],{},"Expect"," request header.",[30,870,871,876,879],{},[48,872,873],{},[51,874,875],{},"418",[48,877,878],{},"I'm a Teapot",[48,880,881],{},"An April Fools' joke from RFC 2324 (1998). A teapot refuses to brew coffee. Some APIs use it as a custom error code.",[30,883,884,889,892],{},[48,885,886],{},[51,887,888],{},"421",[48,890,891],{},"Misdirected Request",[48,893,894],{},"The request was directed at a server that can't produce a response. Common in misconfigured TLS\u002FSNI setups.",[30,896,897,902,905],{},[48,898,899],{},[51,900,901],{},"422",[48,903,904],{},"Unprocessable Content",[48,906,907],{},"The request is well-formed but contains semantic errors. Common in REST APIs: the JSON is valid, but the values are logically invalid.",[30,909,910,915,918],{},[48,911,912],{},[51,913,914],{},"423",[48,916,917],{},"Locked",[48,919,920],{},"The resource is locked. (WebDAV)",[30,922,923,928,931],{},[48,924,925],{},[51,926,927],{},"424",[48,929,930],{},"Failed Dependency",[48,932,933],{},"A previous request in a batch failed, causing this one to fail. (WebDAV)",[30,935,936,941,944],{},[48,937,938],{},[51,939,940],{},"425",[48,942,943],{},"Too Early",[48,945,946],{},"The server won't process the request because it might be a replay attack. (TLS 1.3 early data)",[30,948,949,954,957],{},[48,950,951],{},[51,952,953],{},"426",[48,955,956],{},"Upgrade Required",[48,958,959,960,963],{},"The client must switch to a different protocol (specified in ",[155,961,962],{},"Upgrade"," header) to use this endpoint.",[30,965,966,971,974],{},[48,967,968],{},[51,969,970],{},"428",[48,972,973],{},"Precondition Required",[48,975,976,977,979],{},"The server requires conditional request headers (",[155,978,786],{},") to prevent lost updates - but the client didn't send them.",[30,981,982,987,990],{},[48,983,984],{},[51,985,986],{},"429",[48,988,989],{},"Too Many Requests",[48,991,992,993,996],{},"The client has sent too many requests in a given time window. The response usually includes ",[155,994,995],{},"Retry-After",".",[30,998,999,1004,1007],{},[48,1000,1001],{},[51,1002,1003],{},"431",[48,1005,1006],{},"Request Header Fields Too Large",[48,1008,1009],{},"The request headers are too large for the server to process.",[30,1011,1012,1017,1020],{},[48,1013,1014],{},[51,1015,1016],{},"451",[48,1018,1019],{},"Unavailable For Legal Reasons",[48,1021,1022],{},"The resource is unavailable due to legal demands - copyright, court orders, government censorship. Named after Fahrenheit 451.",[375,1024,1026],{"id":1025},"_4xx-codes-youll-encounter-most-in-monitoring","4xx codes you'll encounter most in monitoring",[12,1028,1029,1032],{},[51,1030,1031],{},"400 Bad Request"," - If your monitor hits a 400, check the request configuration. The endpoint changed its expected parameters and your monitor's request is now malformed.",[12,1034,1035,1038],{},[51,1036,1037],{},"401 Unauthorized"," - Your monitor is hitting an authenticated endpoint without credentials, or credentials expired. Update the monitor's authentication configuration.",[12,1040,1041,1044],{},[51,1042,1043],{},"403 Forbidden"," - The server actively refuses the request. Common causes: IP allowlist that doesn't include your monitoring probe IPs, rate limiting, or a security policy change. Check if your monitoring provider's IP ranges are allowlisted.",[12,1046,1047,1050],{},[51,1048,1049],{},"404 Not Found"," - The monitored URL was deleted, renamed, or never existed. Verify the URL is correct. Don't monitor staging endpoints that get deleted between deployments.",[12,1052,1053,1056],{},[51,1054,1055],{},"429 Too Many Requests"," - Your monitoring probe is hitting a rate limit. Increase check intervals or whitelist monitoring IPs from rate limiting.",[12,1058,1059,1061],{},[51,1060,407],{}," 4xx responses from uptime monitors usually indicate a misconfigured monitor, not a real outage. If you're getting 401 or 403 alerts from a production endpoint that was working, check whether authentication credentials rotated or IP allowlists changed.",[116,1063],{},[19,1065,1067],{"id":1066},"_5xx-server-errors","5xx - Server Errors",[12,1069,1070],{},"The server received a valid request and failed to fulfill it. These represent genuine server-side problems.",[24,1072,1073,1083],{},[27,1074,1075],{},[30,1076,1077,1079,1081],{},[33,1078,133],{},[33,1080,136],{},[33,1082,41],{},[43,1084,1085,1098,1111,1124,1140,1153,1166,1179,1192,1205,1218],{},[30,1086,1087,1092,1095],{},[48,1088,1089],{},[51,1090,1091],{},"500",[48,1093,1094],{},"Internal Server Error",[48,1096,1097],{},"A generic server-side failure. The server encountered an unexpected condition. Check server logs immediately.",[30,1099,1100,1105,1108],{},[48,1101,1102],{},[51,1103,1104],{},"501",[48,1106,1107],{},"Not Implemented",[48,1109,1110],{},"The server doesn't support the functionality required to fulfill the request. The request method isn't supported at all (unlike 405, which is per-resource).",[30,1112,1113,1118,1121],{},[48,1114,1115],{},[51,1116,1117],{},"502",[48,1119,1120],{},"Bad Gateway",[48,1122,1123],{},"The server is acting as a gateway or proxy and received an invalid response from the upstream server.",[30,1125,1126,1131,1134],{},[48,1127,1128],{},[51,1129,1130],{},"503",[48,1132,1133],{},"Service Unavailable",[48,1135,1136,1137,1139],{},"The server is temporarily unable to handle the request - due to overload, maintenance, or a crashed upstream. Often includes a ",[155,1138,995],{}," header.",[30,1141,1142,1147,1150],{},[48,1143,1144],{},[51,1145,1146],{},"504",[48,1148,1149],{},"Gateway Timeout",[48,1151,1152],{},"The server (acting as a gateway) timed out waiting for a response from an upstream server.",[30,1154,1155,1160,1163],{},[48,1156,1157],{},[51,1158,1159],{},"505",[48,1161,1162],{},"HTTP Version Not Supported",[48,1164,1165],{},"The server doesn't support the HTTP version used in the request.",[30,1167,1168,1173,1176],{},[48,1169,1170],{},[51,1171,1172],{},"506",[48,1174,1175],{},"Variant Also Negotiates",[48,1177,1178],{},"Server configuration error in content negotiation.",[30,1180,1181,1186,1189],{},[48,1182,1183],{},[51,1184,1185],{},"507",[48,1187,1188],{},"Insufficient Storage",[48,1190,1191],{},"The server can't store the representation needed to complete the request. (WebDAV, also used by some APIs)",[30,1193,1194,1199,1202],{},[48,1195,1196],{},[51,1197,1198],{},"508",[48,1200,1201],{},"Loop Detected",[48,1203,1204],{},"The server detected an infinite loop while processing. (WebDAV)",[30,1206,1207,1212,1215],{},[48,1208,1209],{},[51,1210,1211],{},"510",[48,1213,1214],{},"Not Extended",[48,1216,1217],{},"The server requires further extensions to fulfill the request.",[30,1219,1220,1225,1228],{},[48,1221,1222],{},[51,1223,1224],{},"511",[48,1226,1227],{},"Network Authentication Required",[48,1229,1230],{},"The client must authenticate to gain network access. Used by captive portals (hotel Wi-Fi, etc.).",[375,1232,1234],{"id":1233},"_5xx-codes-youll-encounter-most-in-monitoring","5xx codes you'll encounter most in monitoring",[12,1236,1237,1240],{},[51,1238,1239],{},"500 Internal Server Error"," - The catch-all server failure. Your application threw an unhandled exception, crashed, or hit a bug. Check application logs immediately.",[12,1242,1243,1246],{},[51,1244,1245],{},"502 Bad Gateway"," - Your web server (nginx\u002FApache) can't reach your application server (Node, Python, Ruby, etc.). The upstream process crashed, isn't running, or isn't accepting connections. Check if your app server process is running.",[12,1248,1249,1252,1253,1255],{},[51,1250,1251],{},"503 Service Unavailable"," - The service is intentionally or unintentionally offline. During planned maintenance, return 503 with a ",[155,1254,995],{}," header. During unplanned outages, 503 usually means your app is down or overwhelmed.",[12,1257,1258,1261],{},[51,1259,1260],{},"504 Gateway Timeout"," - A slow database query, external API call, or background process is blocking your web server from responding within the timeout window. The upstream is alive but too slow.",[375,1263,1265],{"id":1264},"_502-vs-503-vs-504-the-practical-difference","502 vs. 503 vs. 504: the practical difference",[24,1267,1268,1280],{},[27,1269,1270],{},[30,1271,1272,1274,1277],{},[33,1273,133],{},[33,1275,1276],{},"What it means",[33,1278,1279],{},"First thing to check",[43,1281,1282,1294,1306],{},[30,1283,1284,1288,1291],{},[48,1285,1286],{},[51,1287,1117],{},[48,1289,1290],{},"Upstream is down or returning errors",[48,1292,1293],{},"Is the app server process running?",[30,1295,1296,1300,1303],{},[48,1297,1298],{},[51,1299,1130],{},[48,1301,1302],{},"Service is unavailable",[48,1304,1305],{},"Is the service overloaded? Is maintenance active?",[30,1307,1308,1312,1315],{},[48,1309,1310],{},[51,1311,1146],{},[48,1313,1314],{},"Upstream is alive but too slow",[48,1316,1317],{},"Are there slow database queries? External API timeouts?",[12,1319,1320,1322],{},[51,1321,407],{}," Configure your monitoring tool to alert immediately on any 5xx from production endpoints. A single 500 from a health check endpoint that normally returns 200 is worth investigating. 5xx on a health endpoint almost always indicates a real problem.",[116,1324],{},[19,1326,1328],{"id":1327},"quick-reference-codes-by-situation","Quick Reference: Codes by Situation",[375,1330,1332],{"id":1331},"during-deployment","During deployment",[24,1334,1335,1344],{},[27,1336,1337],{},[30,1338,1339,1341],{},[33,1340,133],{},[33,1342,1343],{},"Likely cause",[43,1345,1346,1353,1360],{},[30,1347,1348,1350],{},[48,1349,1117],{},[48,1351,1352],{},"App server not yet started after deploy",[30,1354,1355,1357],{},[48,1356,1130],{},[48,1358,1359],{},"Zero-downtime deployment in progress",[30,1361,1362,1364],{},[48,1363,1091],{},[48,1365,1366],{},"Code bug introduced in the new release",[375,1368,1370],{"id":1369},"auth-related","Auth-related",[24,1372,1373,1381],{},[27,1374,1375],{},[30,1376,1377,1379],{},[33,1378,133],{},[33,1380,1343],{},[43,1382,1383,1390,1397],{},[30,1384,1385,1387],{},[48,1386,610],{},[48,1388,1389],{},"Missing or expired credentials",[30,1391,1392,1394],{},[48,1393,640],{},[48,1395,1396],{},"Valid credentials, insufficient permissions",[30,1398,1399,1401],{},[48,1400,708],{},[48,1402,1403],{},"Proxy authentication required",[375,1405,1407],{"id":1406},"rate-limiting","Rate limiting",[24,1409,1410,1418],{},[27,1411,1412],{},[30,1413,1414,1416],{},[33,1415,133],{},[33,1417,1343],{},[43,1419,1420,1427],{},[30,1421,1422,1424],{},[48,1423,986],{},[48,1425,1426],{},"Client sent too many requests",[30,1428,1429,1431],{},[48,1430,1130],{},[48,1432,1433],{},"Server-side throttling (not per-client)",[375,1435,1437],{"id":1436},"api-errors","API errors",[24,1439,1440,1448],{},[27,1441,1442],{},[30,1443,1444,1446],{},[33,1445,133],{},[33,1447,1343],{},[43,1449,1450,1457,1464],{},[30,1451,1452,1454],{},[48,1453,597],{},[48,1455,1456],{},"Malformed request body or invalid parameters",[30,1458,1459,1461],{},[48,1460,734],{},[48,1462,1463],{},"Concurrent edit conflict",[30,1465,1466,1468],{},[48,1467,901],{},[48,1469,1470],{},"Valid syntax, invalid business logic",[375,1472,1474],{"id":1473},"redirects-to-know","Redirects to know",[24,1476,1477,1486],{},[27,1478,1479],{},[30,1480,1481,1483],{},[33,1482,133],{},[33,1484,1485],{},"Behavior",[43,1487,1488,1495,1502,1509],{},[30,1489,1490,1492],{},[48,1491,455],{},[48,1493,1494],{},"Permanent, GET after redirect",[30,1496,1497,1499],{},[48,1498,528],{},[48,1500,1501],{},"Permanent, preserves method",[30,1503,1504,1506],{},[48,1505,468],{},[48,1507,1508],{},"Temporary, GET after redirect (in practice)",[30,1510,1511,1513],{},[48,1512,515],{},[48,1514,1515],{},"Temporary, preserves method",[116,1517],{},[19,1519,1521],{"id":1520},"what-to-monitor-against","What to Monitor Against",[12,1523,1524],{},"For uptime monitoring, the most useful configuration:",[1526,1527,1528,1535,1540,1546,1551],"ul",{},[1529,1530,1531,1534],"li",{},[51,1532,1533],{},"Alert on",": Any 5xx response from production endpoints",[1529,1536,1537,1539],{},[51,1538,1533],{},": 4xx responses that change from baseline (a 200 suddenly returning 404 or 403)",[1529,1541,1542,1545],{},[51,1543,1544],{},"Don't alert on",": 301\u002F302 if your monitor follows redirects and the final destination returns 200",[1529,1547,1548,1550],{},[51,1549,1544],{},": 304 if your monitor sends conditional requests",[1529,1552,1553,1556],{},[51,1554,1555],{},"Validate body content",": Don't rely on status code alone - a 200 with an error page in the body is a failure",[12,1558,1559],{},"The most dangerous monitoring gap isn't alerting on 500 - it's a service returning 200 with an upstream error page because the load balancer is still responding while the app is down.",{"title":1561,"searchDepth":1562,"depth":1562,"links":1563},"",2,[1564,1565,1566,1570,1573,1576,1580,1587],{"id":21,"depth":1562,"text":22},{"id":120,"depth":1562,"text":121},{"id":216,"depth":1562,"text":217,"children":1567},[1568],{"id":377,"depth":1569,"text":378},3,{"id":417,"depth":1562,"text":418,"children":1571},[1572],{"id":537,"depth":1569,"text":538},{"id":572,"depth":1562,"text":573,"children":1574},[1575],{"id":1025,"depth":1569,"text":1026},{"id":1066,"depth":1562,"text":1067,"children":1577},[1578,1579],{"id":1233,"depth":1569,"text":1234},{"id":1264,"depth":1569,"text":1265},{"id":1327,"depth":1562,"text":1328,"children":1581},[1582,1583,1584,1585,1586],{"id":1331,"depth":1569,"text":1332},{"id":1369,"depth":1569,"text":1370},{"id":1406,"depth":1569,"text":1407},{"id":1436,"depth":1569,"text":1437},{"id":1473,"depth":1569,"text":1474},{"id":1520,"depth":1562,"text":1521},"infrastructure","2026-06-26","Every HTTP status code explained - 1xx informational, 2xx success, 3xx redirects, 4xx client errors, 5xx server errors. Includes what each code means for monitoring, debugging, and incident response.","md",null,{},true,"\u002Fblog\u002Fhttp-status-codes-complete-list",15,{"title":5,"description":1590},"blog\u002Fhttp-status-codes-complete-list","ePhcR0d33pyEI53K8lDHRna_cTDXMuxQiLSiB0fLHSs",1782490321005]