1xx Информационные ⤢ 100Continue Сервер получил заголовки запроса, и клиент может отправлять тело. После предварительной проверки перед загрузкой большого тела. ⤢ 101Switching Protocols Сервер согласился переключиться на запрошенный клиентом протокол. Перевод HTTP-соединения на WebSocket. ⤢ 102Processing Сервер получил запрос и всё ещё обрабатывает его. Сервер WebDAV подтверждает длинный запрос, чтобы клиент не дождался тайм-аута. ⤢ 103Early Hints Сервер шлёт предварительные заголовки до готовности окончательного ответа. Браузер заранее загружает ресурсы, пока страница ещё рендерится. 2xx Успех ⤢ 200OK Запрос выполнен, тело ответа содержит результат. Стандартный успех для GET или PUT. ⤢ 201Created Запрос выполнен, и новый ресурс создан. Возвращается после успешного POST, который что-то создаёт. ⤢ 202Accepted Запрос принят к обработке, но ещё не завершён. Длительная задача запущена и выполняется асинхронно. ⤢ 203Non-Authoritative Information Запрос выполнен, но возвращённые данные были изменены по пути назад. Прокси или кеш отдаёт изменённые метаданные вместо метаданных источника. ⤢ 204No Content Запрос выполнен, и возвращать тело нечего. Успешный DELETE или PUT, о котором нечего сказать. ⤢ 205Reset Content Запрос выполнен, и клиенту следует сбросить отправившее его представление. После отправки формы — указание странице очистить поля. ⤢ 206Partial Content Сервер возвращает лишь часть ресурса, как и запрошено. Отдача диапазона байтов по запросу Range. 3xx Перенаправление ⤢ 301Moved Permanently У ресурса новый постоянный URL, и будущие запросы должны использовать его. Страница переехала, и поисковики должны обновить индекс. ⤢ 302Found Ресурс временно находится по другому URL, но продолжайте пользоваться исходным. Временное перенаправление на страницу входа. ⤢ 303See Other Ответ находится по другому URL, и получать его нужно методом GET. Паттерн PRG: POST перенаправляется на страницу результата, чтобы обновление не отправило его повторно. ⤢ 304Not Modified Копия в кеше всё ещё актуальна, поэтому сервер не шлёт тело. Условный GET, при котором кеш клиента актуален. ⤢ 305Use Proxy Запрос должен быть отправлен через прокси, указанный в ответе. Устаревшие прокси-сети; deprecated с 2011 года. ⤢ 307Temporary Redirect Ресурс временно находится в другом месте, и исходный метод запроса должен быть сохранён. Как 302, но POST остаётся POST при перенаправлении. ⤢ 308Permanent Redirect У ресурса новый постоянный URL, и исходный метод запроса должен быть сохранён. Как 301, но POST остаётся POST при перенаправлении. 4xx Ошибка клиента ⤢ 400Bad Request Сервер не понял запрос из-за некорректного синтаксиса. Битый JSON или отсутствующее обязательное поле. ⤢ 401Unauthorized Требуется аутентификация — её не было или она не удалась. Нет токена, либо токен недействителен или истёк. ⤢ 402Payment Required Запрос требует оплаты, хотя спецификация так и не определила, как именно. Некоторые API используют его как маркер платного доступа; большинство — никогда. ⤢ 403Forbidden Клиент аутентифицирован, но не имеет доступа к этому ресурсу. Верный логин, но нет прав на этот ресурс. ⤢ 404Not Found На этом URL у сервера нет ресурса. Неизвестный URL или несуществующий идентификатор. ⤢ 405Method Not Allowed URL существует, но не допускает использованный метод запроса. POST к эндпоинту, который принимает только GET. ⤢ 406Not Acceptable Сервер не может вернуть содержимое, соответствующее заголовкам Accept клиента. Клиент просил только XML, а API отдаёт лишь JSON. ⤢ 407Proxy Authentication Required Клиент должен пройти аутентификацию на прокси, прежде чем запрос продолжит путь. Корпоративный прокси отклоняет неаутентифицированный запрос. ⤢ 408Request Timeout Клиент слишком долго отправлял запрос, и сервер сдался. Загрузка остановилась до полного прихода тела. ⤢ 409Conflict Запрос конфликтует с текущим состоянием ресурса. Дубликат email или гонка правок одной записи. ⤢ 410Gone Ресурс когда-то существовал, но удалён навсегда. Эндпоинт намеренно выведен из эксплуатации; сильнее, чем 404. ⤢ 411Length Required Запросу нужен заголовок Content-Length, а его нет. Сервер, которому нужен размер заранее, отклоняет тело, передаваемое потоком. ⤢ 412Precondition Failed Предусловие в заголовке, например If-Match, вычислилось как ложь. Оптимистичная правка, где запись изменилась с момента чтения клиентом. ⤢ 413Content Too Large Тело запроса превышает принимаемый сервером лимит. Загрузка больше максимального размера тела на сервере. ⤢ 414URI Too Long URL запроса длиннее, чем сервер готов интерпретировать. Форма, случайно сериализованная в query string GET и разросшаяся без предела. ⤢ 415Unsupported Media Type Формат тела запроса не принимается этим эндпоинтом. POST с Content-Type text/plain к эндпоинту, работающему только с JSON. ⤢ 416Range Not Satisfiable Диапазон байтов в заголовке Range не умещается в ресурс. Запрос байтов за концом файла при возобновлении загрузки. ⤢ 417Expectation Failed Сервер не может выполнить ожидание, указанное в заголовке Expect. Ожидание 100-continue, которое сервер отказывается соблюдать. ⤢ 418I'm a teapot Сервер — это чайник и отказывается заваривать кофе. Первоапрельская шутка 1998 года, которая не умирает; API возвращают её ради шутки. ⤢ 421Misdirected Request Запрос попал на сервер, который не может дать на него ответ. Переиспользованное соединение направлено к хосту, который этот сервер не обслуживает. ⤢ 422Unprocessable Entity Запрос синтаксически корректен, но значения не проходят смысловую валидацию. Корректный JSON, поля которого нарушают бизнес-правила. ⤢ 425Too Early Сервер отклоняет запрос, который может оказаться повтором (replay). Отклонение повторной неидемпотентной попытки до ротации ключей. ⤢ 426Upgrade Required Клиент должен перейти на другой протокол, чтобы использовать этот ресурс. Эндпоинт, настаивающий на TLS или WebSocket. ⤢ 428Precondition Required Сервер требует условные заголовки, которых запрос не прислал. API, требующее If-Match для защиты от потерянных обновлений. ⤢ 429Too Many Requests Клиент отправил слишком много запросов за отведённый интервал времени. Достигнут rate limit; сделайте паузу и повторите. ⤢ 431Request Header Fields Too Large Одно или несколько полей заголовка слишком велики для обработки сервером. Cookie или токен разрослись, пока не заблокировали каждый запрос к сайту. ⤢ 451Unavailable For Legal Reasons Ресурс заблокирован по юридическим причинам — например, из-за требования удалить контент или гео-ограничения. Требование госоргана или страница, заблокированная в одной стране. 5xx Ошибка сервера ⤢ 500Internal Server Error Сервер столкнулся с непредвиденным состоянием и упал. Необработанное исключение или баг на сервере. ⤢ 501Not Implemented Сервер не поддерживает запрошенный метод или возможность. Эндпоинт объявлен, но ещё не реализован. ⤢ 502Bad Gateway Шлюз или прокси получил недопустимый ответ от вышестоящего сервера. Обратный прокси не смог достучаться до бэкенда. ⤢ 503Service Unavailable Сервер временно не может обработать запрос. Обслуживание, перегрузка или недоступность зависимого сервиса. ⤢ 504Gateway Timeout Шлюз или прокси не получил ответ вовремя от вышестоящего сервера. Бэкенд отвечал слишком долго, и прокси сдался. ⤢ 505HTTP Version Not Supported Сервер не поддерживает версию HTTP из запроса. Клиент говорит на версии протокола, которой сервер так и не выучил. ⤢ 506Variant Also Negotiates Прозрачное согласование содержимого завершилось циклической ссылкой. Неверно настроенный сервер с экспериментальным согласованием содержимого. ⤢ 507Insufficient Storage Сервер не может сохранить представление, нужное для завершения запроса. Сервер WebDAV, у которого выделенное хранилище заполнено. ⤢ 508Loop Detected Сервер попал в бесконечный цикл при обработке запроса. Связка WebDAV, ссылающаяся на саму себя. ⤢ 511Network Authentication Required Клиент должен пройти аутентификацию в сети, чтобы получить доступ. Captive portal в отеле или аэропорту, перехватывающий запрос.