Rede
Lista de Códigos de Status HTTP
Lista completa dos códigos de status HTTP (1xx-5xx) com significados, causas comuns e soluções para desenvolvedores. Inclui uma ferramenta de consulta: digite um número de código para ver os detalhes instantaneamente.
| Código | Nome | Significado | Causas Comuns |
|---|---|---|---|
| 1xx — Informativo | |||
| 100 | Continue (Continue) | Indica que o servidor recebeu a parte inicial da solicitação e o cliente deve continuar enviando o restante. | Retornado quando um cliente envia um cabeçalho Expect: 100-continue antes de um corpo de solicitação grande. |
| 101 | Switching Protocols (Switching Protocols) | Indica que o servidor aceita a solicitação do cabeçalho Upgrade e está mudando para um protocolo diferente. | Uma resposta normal observada ao estabelecer uma conexão WebSocket. |
| 102 | Processing (Processing) | Indica que o servidor aceitou a solicitação e ainda está processando-a, sem uma resposta pronta ainda (WebDAV). | Enviado para evitar tempos limite durante operações WebDAV de longa duração. |
| 103 | Early Hints (Early Hints) | Envia cabeçalhos preliminares, como Link, antes da resposta final, permitindo que o navegador pré-carregue recursos. | Adicionado por CDNs ou proxies reversos para acelerar o pré-carregamento de CSS/JS. |
| 2xx — Sucesso | |||
| 200 | OK (OK) | A resposta de sucesso mais comum, indicando que a solicitação foi processada com sucesso. | |
| 201 | Created (Created) | Indica que um novo recurso foi criado como resultado da solicitação. | Retornado por APIs que criam recursos via POST; normalmente inclui um cabeçalho Location apontando para o novo recurso. |
| 202 | Accepted (Accepted) | Indica que a solicitação foi aceita, mas o processamento ainda não foi concluído (processamento assíncrono). | Usado por APIs assíncronas que apenas enfileiram trabalho, ou endpoints de recebimento para processamento em lote. |
| 204 | No Content (No Content) | Indica que a solicitação foi bem-sucedida, mas não há conteúdo para retornar. | Comum após um DELETE bem-sucedido, ou uma atualização PUT cujo design de API omite o corpo da resposta. |
| 206 | Partial Content (Partial Content) | Indica que apenas parte do recurso foi retornada, com base no cabeçalho Range do cliente. | Uma resposta normal para busca em vídeos ou downloads retomáveis. |
| 3xx — Redirecionamento | |||
| 301 | Moved Permanently (Moved Permanently) | Indica que o recurso foi movido permanentemente para uma nova URL; os motores de busca transferem os sinais de classificação para a nova URL. | Usado para redirecionar URLs antigas após uma mudança na estrutura de URL ou migração de domínio. |
| 302 | Found (Found) | Indica que o recurso está temporariamente em uma URL diferente. Movimentações permanentes devem usar 301 em vez disso. | Comumente usado para roteamento temporário durante manutenção, ou redirecionamentos após login. |
| 303 | See Other (See Other) | Indica que o resultado deve ser obtido com GET a partir de outra URL (o padrão Post-Redirect-Get). | Usado após o envio de um formulário (POST) para evitar a caixa de diálogo de reenvio do navegador. |
| 304 | Not Modified (Not Modified) | Indica que o recurso em cache não foi alterado, portanto o corpo não é reenviado. | Retornado para solicitações condicionais usando If-None-Match / If-Modified-Since quando o cache ainda é válido. |
| 307 | Temporary Redirect (Temporary Redirect) | Um redirecionamento temporário que, ao contrário do 302, preserva o método e o corpo originais ao reenviar. | Usado em designs de API que precisam redirecionar solicitações POST/PUT preservando o corpo. |
| 308 | Permanent Redirect (Permanent Redirect) | Um redirecionamento permanente que, ao contrário do 301, preserva o método e o corpo originais ao reenviar. | Usado para migrações de versão de API que precisam de uma movimentação permanente preservando o método. |
| 4xx — Erro do Cliente | |||
| 400 | Bad Request (Bad Request) | Indica que a sintaxe ou os parâmetros da solicitação estão malformados e o servidor não consegue entendê-la. | Normalmente causado por erros de sintaxe JSON, parâmetros obrigatórios ausentes ou incompatibilidades de tipo. |
| 401 | Unauthorized (Unauthorized) | Indica credenciais de autenticação ausentes ou inválidas (apesar do nome, na verdade significa "não autenticado"). | Frequentemente causado por um token expirado, um cabeçalho Authorization ausente, ou uma chave de API incorreta. |
| 402 | Payment Required (Payment Required) | Reservado para uso futuro; às vezes usado para indicar que o pagamento é necessário. | Algumas APIs reaproveitam isso para sinalizar limites de uso excedidos ou um plano de cobrança expirado. |
| 403 | Forbidden (Forbidden) | Indica que o servidor entendeu a solicitação, mas se recusa a autorizá-la. | Causas típicas incluem permissões insuficientes, restrições de IP, violações da política de CORS ou configurações incorretas de permissões de arquivo. |
| 404 | Not Found (Not Found) | Indica que o recurso solicitado não pôde ser encontrado. | Geralmente causado por uma rota não registrada, um erro de digitação na URL, ou o acesso a um recurso já excluído. |
| 405 | Method Not Allowed (Method Not Allowed) | Indica que o recurso existe, mas o método HTTP especificado não é permitido nele. | Normalmente acontece quando um POST é enviado para um endpoint somente-GET, ou uma incompatibilidade de método semelhante. |
| 406 | Not Acceptable (Not Acceptable) | Indica que o servidor não pode produzir uma resposta que corresponda ao cabeçalho Accept do cliente. | Ocorre quando um cliente solicita Accept: application/xml a uma API que retorna apenas JSON, por exemplo. |
| 408 | Request Timeout (Request Timeout) | Indica que o servidor expirou o tempo limite esperando que o cliente concluísse a solicitação. | Frequentemente causado por conexões lentas, uploads grandes, ou um cliente que trava no meio da solicitação. |
| 409 | Conflict (Conflict) | Indica que a solicitação entra em conflito com o estado atual do recurso. | Ocorre com falhas de bloqueio otimista durante edições concorrentes, ou tentativas de criar duplicatas. |
| 410 | Gone (Gone) | Indica que o recurso foi removido permanentemente e não retornará (um sinal mais forte que o 404). | Usado para informar explicitamente aos motores de busca que o conteúdo foi excluído e retirado intencionalmente. |
| 413 | Payload Too Large (Payload Too Large) | Indica que o corpo da solicitação excede o tamanho que o servidor está disposto a aceitar. | Geralmente causado por exceder um limite de tamanho de upload de arquivo, ou uma configuração insuficiente de tamanho do corpo no Nginx/PHP. |
| 414 | URI Too Long (URI Too Long) | Indica que a URI da solicitação é mais longa do que o servidor está disposto a processar. | Frequentemente acontece quando uma grande quantidade de dados é colocada em parâmetros de consulta GET. |
| 415 | Unsupported Media Type (Unsupported Media Type) | Indica que o servidor não suporta o tipo de mídia do corpo da solicitação. | Comum ao enviar Content-Type: text/plain para uma API JSON, ou configurações de cabeçalho semelhantes incorretas. |
| 422 | Unprocessable Entity (Unprocessable Entity) | Indica que a sintaxe da solicitação é válida, mas a validação semântica falhou. | Frequentemente usado para reportar erros de validação de formulário, como campos obrigatórios ausentes ou formatos inválidos. |
| 425 | Too Early (Too Early) | Indica que o servidor se recusa a processar uma solicitação que poderia ser reproduzida devido ao risco de dados antecipados. | Pode ser retornado como defesa contra ataques de repetição usando dados 0-RTT do TLS 1.3. |
| 429 | Too Many Requests (Too Many Requests) | Indica que o cliente enviou solicitações demais dentro de uma determinada janela de tempo (limitação de taxa). | Causado por exceder um limite de taxa da API; o cabeçalho Retry-After geralmente indica quanto tempo esperar antes de tentar novamente. |
| 451 | Unavailable For Legal Reasons (Unavailable For Legal Reasons) | Indica que o conteúdo está indisponível devido a uma exigência legal, como uma ordem judicial. | Retornado quando um provedor de conteúdo bloqueia o acesso devido a uma reclamação de direitos autorais ou regulamentação legal específica de um país. |
| 5xx — Erro do Servidor | |||
| 500 | Internal Server Error (Internal Server Error) | Indica que ocorreu um erro inesperado no servidor e a solicitação não pôde ser processada. | As causas variam amplamente: exceções não tratadas na aplicação, configurações incorretas, falhas de conexão com o banco de dados, entre outras. |
| 501 | Not Implemented (Not Implemented) | Indica que o servidor não suporta a funcionalidade necessária para atender à solicitação. | Ocorre quando um método HTTP não implementado (por exemplo, PATCH) é enviado para uma implementação de servidor mais antiga. |
| 502 | Bad Gateway (Bad Gateway) | Indica que um proxy ou gateway recebeu uma resposta inválida do servidor de origem. | Normalmente causado pelo fato de o servidor de aplicação de origem estar fora do ar ou ter travado. |
| 503 | Service Unavailable (Service Unavailable) | Indica que o servidor está temporariamente sobrecarregado ou em manutenção e não pode atender à solicitação. | Principalmente causado por esgotamento de recursos sob carga pesada, ou uma janela de manutenção planejada. |
| 504 | Gateway Timeout (Gateway Timeout) | Indica que um proxy ou gateway não recebeu uma resposta a tempo do servidor de origem. | Frequentemente causado por processamento backend de longa duração, latência de rede, ou um servidor de origem que trava. |
| 505 | HTTP Version Not Supported (HTTP Version Not Supported) | Indica que o servidor não suporta a versão do HTTP usada na solicitação. | Ocorre quando um cliente antigo ou proxy mal configurado se comunica usando uma versão de HTTP inesperada. |
| 507 | Insufficient Storage (Insufficient Storage) | Indica que o servidor não possui armazenamento suficiente para concluir a solicitação (WebDAV). | Retornado quando uma operação de armazenamento de arquivos falha devido a espaço em disco insuficiente. |
| 508 | Loop Detected (Loop Detected) | Indica que o servidor detectou um loop infinito ao processar a solicitação (WebDAV). | Ocorre quando uma configuração de vinculação WebDAV contém uma referência circular. |
| 511 | Network Authentication Required (Network Authentication Required) | Indica que o cliente precisa se autenticar para obter acesso à rede. | Usado para redirecionar para uma página de login de portal cativo, como em Wi-Fi público. |
Dicas
- 404 e 410 parecem semelhantes, mas o 410 sinaliza explicitamente que o conteúdo foi removido intencionalmente e não voltará. Use o 410 para conteúdo sem substituto, enviando um sinal mais claro aos motores de busca.
- 301 versus 308 e 302 versus 307 compartilham a mesma distinção "permanente versus temporário", mas 308 e 307 preservam o corpo POST original ao reenviar, ao contrário de 301 e 302.
- Ao receber um 429 Too Many Requests, verifique o cabeçalho
Retry-Aftere aguarde esse tempo antes de tentar novamente — insistir no endpoint mesmo assim pode fazer com que você seja bloqueado completamente. - Um erro 5xx sinaliza um problema do lado do servidor, não um bug na sua solicitação — verifique os logs do servidor e o status de disponibilidade antes de depurar o código do cliente.
- A aba Rede das ferramentas de desenvolvedor do seu navegador colore os códigos de status de cada solicitação. Combinar isso com esta referência torna a depuração muito mais rápida.
Perguntas Frequentes
-i do curl, ou digite o número do código na ferramenta de consulta desta página para ver seu significado.
Curiosidade — Breve história dos códigos de status HTTP
O sistema de códigos de status HTTP foi padronizado pela primeira vez na RFC 1945, a especificação do HTTP/1.0 publicada em 1996. O HTTP/1.1 (RFC 2616), lançado em 1999, estabeleceu a maior parte do sistema de códigos que usamos hoje, incluindo as famílias 4xx e 5xx, e desde então tem sido mantido através da RFC 7231 (2014) e da RFC 9110 (2022).
O famoso código de brincadeira 418 I'm a teapot se originou em uma RFC do Dia da Mentira de 1998, que descrevia o fictício "Hyper Text Coffee Pot Control Protocol" (HTCPCP). O código deveria ser retornado se você pedisse a um bule de chá para preparar café.
Acredita-se que o princípio de design em que o dígito inicial sinaliza uma categoria ampla influenciou sistemas de códigos de retorno posteriores em protocolos como SMTP e FTP. A simplicidade de "1xx = informativo, 2xx = sucesso" permaneceu essencialmente inalterada por quase três décadas.
451 Unavailable For Legal Reasons é uma adição relativamente recente, formalmente padronizada na RFC 7725 em 2015. O número 451 foi escolhido deliberadamente como uma referência ao romance distópico de Ray Bradbury "Fahrenheit 451", que trata sobre censura.