O formato do corpo não é suportado.
Quando usar
Envio de dados de formulário para um endpoint JSON, ou um Content-Type errado.
Causas comuns e soluções
O servidor não consegue interpretar o formato do corpo, geralmente porque o Content-Type está faltando ou errado: JSON enviado sem Content-Type: application/json (o curl -d usa application/x-www-form-urlencoded por padrão), dados de formulário multipart enviados a um endpoint que só aceita JSON, ou um charset ou tipo vendor que o servidor rejeita. Spring e ASP.NET retornam 415 quando nenhum handler aceita o tipo declarado.
O Content-Encoding também importa: um corpo comprimido com gzip enviado a um servidor que não descomprime requisições recebe 415. Nos navegadores, fetch com um corpo do tipo string envia text/plain;charset=UTF-8, a menos que você defina o cabeçalho. Note que application/json dispara um preflight CORS, e text/plain não. O curl --json, disponível desde a 7.82, define Content-Type e Accept para você.
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 415 Unsupported Media TypeComo enviar
| Node.js / Express | res.status(415).end() |
|---|---|
| Python / Flask | return '', 415 |
| nginx | return 415; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/