400 Bad Request

A requisição está malformada ou é inválida.

Quando usar

JSON que não pode ser interpretado, campos obrigatórios ausentes, tipos errados.

Causas comuns e soluções

Causas comuns: JSON malformado, como uma vírgula sobrando no final ou strings entre aspas simples, um corpo que não corresponde ao Content-Type declarado, campos obrigatórios faltando ou parâmetros de query inválidos. Antes de culpar o servidor, veja os bytes exatos enviados, com curl -v ou o payload da requisição na aba Network do DevTools. A maioria das APIs explica o problema no corpo da resposta, então leia-o.

A infraestrutura também gera 400: o nginx retorna “Request Header Or Cookie Too Large” quando os cookies estouram large_client_header_buffers, e “The plain HTTP request was sent to HTTPS port” quando você usa http:// na porta 443. Load balancers rejeitam cabeçalhos ou valores de Host malformados. Limpar os cookies do site resolve muitos 400 que só acontecem no navegador. No seu próprio servidor, reserve o 400 para entrada que não dá para interpretar e use 422 para falhas de validação.

Erro do cliente (4xx)

Os códigos 4xx são erros do cliente: a própria requisição está errada, não está autorizada ou aponta para algo que não existe. Repetir a mesma requisição não vai adiantar.

Como fica

HTTP/1.1 400 Bad Request

Como enviar

Node.js / Expressres.status(400).end()
Python / Flaskreturn '', 400
nginxreturn 400;

Como verificar

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de status HTTP