415 Unsupported Media Type

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 Type

Como enviar

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

Como verificar

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

Abrir Códigos de status HTTP