Ошибка 422 Unprocessable Content
Код 422 означает, что сервер понял формат запроса, но не может его обработать из-за ошибок в самих данных: не заполнено обязательное поле, неверный тип, значение вне допустимого диапазона. В теле ответа обычно перечислены поля с ошибками — исправьте их и отправьте запрос снова.
Обновлено 23 октября 2026 г.
Что значит код 422
RFC 9110 (раздел 15.5.21): сервер понимает тип содержимого запроса, синтаксис запроса корректен, но обработать содержащиеся в нём инструкции он не может. Раньше код описывался в спецификации WebDAV (RFC 4918) под названием Unprocessable Entity; в RFC 9110 он стал общим для HTTP и получил название Unprocessable Content. Это один и тот же код.
HTTP/1.1 422 Unprocessable Content
Content-Type: application/json
{"errors": {"email": ["Неверный формат адреса"], "age": ["Должно быть не меньше 18"]}}422 или 400
| 400 Bad Request | 422 Unprocessable Content | |
|---|---|---|
| Проблема | запрос нельзя разобрать | запрос разобран, но данные неверны |
| Примеры | битый JSON, неверный заголовок Content-Type, слишком длинный URL | пустое обязательное поле, строка вместо числа, дата в прошлом |
| Что в ответе | общее сообщение об ошибке | список полей и причин |
Если данные корректны, но противоречат состоянию сервера (e-mail уже занят, объект изменился), подходит 409 Conflict. Многие API используют 400 и для ошибок валидации — это допустимо, единого правила нет. Главное — отдавать понятное тело ответа.
Где встречается 422
- FastAPI отвечает 422, если тело, query-параметры или путь не прошли проверку Pydantic. В поле
detail— массив ошибок с путём к полю (loc) и описанием (msg). - Laravel отдаёт 422 при ошибке валидации, если запрос ждёт JSON (заголовок
Accept: application/json), с объектамиmessageиerrors. - Ruby on Rails по соглашению отвечает 422 (
:unprocessable_entity, в новых версиях:unprocessable_content), когда модель не сохранилась из-за валидаций, и при неверном CSRF-токене формы. - GitHub API возвращает 422 с сообщением
Validation Failed, например при создании уже существующей метки или неверных параметрах запроса.
{
"detail": [
{
"type": "missing",
"loc": ["body", "email"],
"msg": "Field required",
"input": {"name": "Иван"}
}
]
}Как исправить 422 на стороне клиента
- Прочитайте тело ответа: в нём обычно указано, какое поле и почему не прошло проверку.
- Сверьте запрос с документацией API: имена полей, типы, обязательность, форматы дат и чисел.
- Проверьте заголовок
Content-Type: если тело в JSON, а заголовок неapplication/json, сервер может не увидеть поля и сообщить, что они отсутствуют. - Убедитесь, что числа передаются числами, а не строками, если API строг к типам, и что вложенные объекты отправлены целиком.
- В формах на Rails и других фреймворках с CSRF-защитой обновите страницу: устаревший токен формы тоже даёт 422.
Как отдавать 422 в своём API
import { z } from "zod";
const User = z.object({
email: z.string().email(),
age: z.number().int().min(18),
});
app.post("/users", (req, res) => {
const parsed = User.safeParse(req.body);
if (!parsed.success) {
return res.status(422).json({ errors: parsed.error.flatten().fieldErrors });
}
// ...создание пользователя
});Перечисляйте все ошибки сразу, а не по одной: клиенту не придётся отправлять запрос несколько раз. Указывайте имя поля в том же виде, в каком оно приходит в запросе, чтобы фронтенд мог подсветить нужное поле формы.
422 и SEO
Код 422 относится к API и отправке форм. Публичные страницы сайта не должны отвечать 422 на обычный GET-запрос: такие адреса не попадут в индекс. Если робот получает 422, проверьте, не срабатывает ли валидация на параметрах в URL (например, на метках utm_*), и ответ страницы проверкой кода ответа.
Частые вопросы
Что значит ошибка 422 Unprocessable Entity?
Сервер понял запрос, но данные в нём не прошли проверку: не хватает обязательного поля, неверный тип или формат значения. Подробности обычно есть в теле ответа.
Unprocessable Entity и Unprocessable Content — это разные коды?
Нет, это один код 422. Старое название из спецификации WebDAV — Unprocessable Entity, в RFC 9110 его переименовали в Unprocessable Content.
Почему FastAPI возвращает 422?
Запрос не соответствует модели Pydantic: поле отсутствует, имеет неверный тип или тело отправлено не как JSON. Смотрите массив detail — в loc указано поле, в msg причина.
Что выбрать для ошибок валидации: 400 или 422?
Оба варианта распространены. 422 точнее описывает ошибку данных при корректном синтаксисе, 400 — когда запрос вообще нельзя разобрать. Важнее вернуть понятный список ошибок.