HTTP 422 Unprocessable Content (Conteúdo não processável)
O formato está certo, mas o servidor não consegue processar as instruções do conteúdo.
Ficha rápida
| Código | 422 |
|---|---|
| Nome oficial (em inglês) | Unprocessable Content |
| Nome em português | Conteúdo não processável |
| Grupo | Erro do cliente (4xx) |
| Definido em | RFC 9110, Section 15.5.21 |
| Quem costuma gerar | O servidor, apontando um problema na requisição enviada pelo cliente. |
O que significa
O servidor entende o formato e a sintaxe do que foi enviado (por exemplo, o JSON é válido), mas não consegue processar as instruções do conteúdo: algum dado está semanticamente errado, como uma data inexistente ou um valor fora do permitido. Era chamado de Unprocessable Entity; o nome atual é Unprocessable Content.
Quando o servidor devolve esse código
- Validação de regras de negócio que falhou.
- Campos com valores inválidos em um JSON bem formado.
Problemas comuns
- Data impossível, valor negativo onde só se aceita positivo, e-mail em formato inválido.
- Combinação de campos que não faz sentido.
Como resolver
- Leia o corpo da resposta, que costuma listar os campos com problema.
- Corrija os dados e reenvie.
- Use 400 quando o próprio formato da requisição está quebrado.
Em automações e integrações
Quando o fluxo recebe 422, leia a lista de campos com problema no corpo da resposta e corrija a expressão que monta esse campo, por exemplo um formato de data.
Não confunda com outros códigos
Não confunda com 400 (requisição malformada) nem com 409 (conflito com o estado atual).
Exemplo de resposta
HTTP/1.1 422 Unprocessable Content
Content-Type: application/json
{"erros": [{"campo": "vencimento", "msg": "data inexistente"}]}
O exemplo é ilustrativo: o corpo e os cabeçalhos reais mudam de servidor para servidor. O código e o nome seguem o padrão HTTP.
Perguntas frequentes
Qual a diferença entre 400 e 422?
No 400, a requisição está malformada. No 422, está bem formada, mas o conteúdo não pode ser processado.
422 é um código oficial?
Sim. Está no padrão HTTP atual, com o nome Unprocessable Content.