Menu

Códigos de status HTTP

Referência pesquisável de cada código de status HTTP com explicações claras.

Última atualização

  • 100Continue

    1xx

    A parte inicial da requisição foi recebida; o cliente deve continuar enviando o corpo.

  • 101Switching Protocols

    1xx

    O servidor concordou em trocar de protocolo (ex. HTTP/1.1 para WebSocket).

  • 102Processing

    1xx

    WebDAV — a requisição foi aceita mas ainda não foi concluída.

  • 103Early Hints

    1xx

    Usado com o cabeçalho Link para o cliente pré-carregar recursos antes da resposta final.

  • 200OK

    2xx

    A requisição foi bem-sucedida. O significado exato depende do método.

  • 201Created

    2xx

    A requisição foi bem-sucedida e um novo recurso foi criado.

  • 202Accepted

    2xx

    A requisição foi aceita para processamento mas ainda não foi concluída (trabalho assíncrono).

  • 203Non-Authoritative Information

    2xx

    Os metadados retornados vêm de um proxy transformador, não do servidor de origem.

  • 204No Content

    2xx

    A requisição foi bem-sucedida mas não há corpo para retornar.

  • 205Reset Content

    2xx

    Diz ao cliente para redefinir a visualização do documento que enviou a requisição (ex. limpar o formulário).

  • 206Partial Content

    2xx

    Usado em resposta a uma requisição Range — o corpo contém apenas o intervalo de bytes solicitado.

  • 300Multiple Choices

    3xx

    O recurso tem várias representações; o cliente deve escolher uma.

  • 301Moved Permanently

    3xx

    O recurso tem uma nova URL permanente. Os buscadores atualizam o índice.

  • 302Found

    3xx

    O recurso está temporariamente em outra URL. Use 307 se precisar manter o método.

  • 303See Other

    3xx

    Após um POST, redireciona o cliente para obter o resultado com GET (Post/Redirect/Get).

  • 304Not Modified

    3xx

    A cópia em cache ainda está atualizada — enviado em resposta a GETs condicionais (ETag / If-Modified-Since).

  • 307Temporary Redirect

    3xx

    Como 302, mas o método da requisição não deve ser alterado ao seguir o redirecionamento.

  • 308Permanent Redirect

    3xx

    Como 301, mas o método da requisição não deve ser alterado ao seguir o redirecionamento.

  • 400Bad Request

    4xx

    O servidor não pode ou não quer processar a requisição por causa de um erro do cliente (sintaxe inválida, enquadramento inválido).

  • 401Unauthorized

    4xx

    Autenticação é necessária e falhou ou não foi fornecida. (Apesar do nome, trata-se de autenticação, não autorização.)

  • 402Payment Required

    4xx

    Reservado para uso futuro. Às vezes usado por APIs para indicar que o usuário atingiu uma cota paga.

  • 403Forbidden

    4xx

    O servidor entendeu a requisição mas se recusa a autorizá-la. Reautenticar não ajudará.

  • 404Not Found

    4xx

    O servidor não consegue encontrar o recurso solicitado.

  • 405Method Not Allowed

    4xx

    O método da requisição é conhecido pelo servidor mas não é suportado pelo recurso alvo.

  • 406Not Acceptable

    4xx

    O servidor não consegue produzir uma resposta compatível com os cabeçalhos Accept do cliente.

  • 407Proxy Authentication Required

    4xx

    Como 401, mas a autenticação é necessária para um proxy.

  • 408Request Timeout

    4xx

    O servidor expirou aguardando a requisição.

  • 409Conflict

    4xx

    A requisição conflita com o estado atual do recurso alvo (ex. conflito de versão).

  • 410Gone

    4xx

    O recurso foi excluído permanentemente, sem endereço de encaminhamento.

  • 411Length Required

    4xx

    O servidor requer um cabeçalho Content-Length.

  • 412Precondition Failed

    4xx

    Uma pré-condição nos cabeçalhos da requisição (ex. If-Match) não foi atendida pelo servidor.

  • 413Payload Too Large

    4xx

    O corpo da requisição é maior do que o servidor está disposto a processar.

  • 414URI Too Long

    4xx

    A URI é mais longa do que o servidor está disposto a interpretar.

  • 415Unsupported Media Type

    4xx

    O corpo da requisição usa um tipo de mídia que o servidor ou recurso não suporta.

  • 416Range Not Satisfiable

    4xx

    O cabeçalho Range pede uma parte do arquivo fora dos seus limites.

  • 418I'm a teapot

    4xx

    Uma piada de 1º de abril do RFC 2324. Retornado por servidores que se recusam a coar café.

  • 421Misdirected Request

    4xx

    A requisição foi enviada a um servidor incapaz de produzir uma resposta (ex. conexão HTTP/2 errada).

  • 422Unprocessable Entity

    4xx

    A requisição está bem formada mas contém erros semânticos (comum em APIs para falhas de validação).

  • 423Locked

    4xx

    WebDAV — o recurso acessado está bloqueado.

  • 425Too Early

    4xx

    O servidor não quer processar uma requisição que possa ser repetida.

  • 426Upgrade Required

    4xx

    O cliente deve atualizar para outro protocolo (ex. TLS) para completar a requisição.

  • 428Precondition Required

    4xx

    O servidor requer que a requisição seja condicional (ajuda a evitar o problema de atualização perdida).

  • 429Too Many Requests

    4xx

    O cliente enviou requisições demais em um determinado tempo (limitação de taxa).

  • 431Request Header Fields Too Large

    4xx

    O servidor recusa a requisição porque um campo de cabeçalho — ou os cabeçalhos no total — são grandes demais.

  • 451Unavailable For Legal Reasons

    4xx

    O recurso está indisponível por motivos legais (nome inspirado em Fahrenheit 451).

  • 500Internal Server Error

    5xx

    O servidor encontrou uma condição inesperada. O erro 5xx genérico.

  • 501Not Implemented

    5xx

    O servidor não reconhece o método da requisição.

  • 502Bad Gateway

    5xx

    O servidor, atuando como gateway, recebeu uma resposta inválida do servidor upstream.

  • 503Service Unavailable

    5xx

    O servidor não está pronto para atender à requisição — geralmente sobrecarregado ou em manutenção.

  • 504Gateway Timeout

    5xx

    O servidor, atuando como gateway, não recebeu resposta a tempo do servidor upstream.

  • 505HTTP Version Not Supported

    5xx

    O servidor não suporta a versão de HTTP usada na requisição.

  • 507Insufficient Storage

    5xx

    WebDAV — o servidor não consegue armazenar a representação necessária para completar a requisição.

  • 508Loop Detected

    5xx

    WebDAV — o servidor detectou um loop infinito durante o processamento.

  • 511Network Authentication Required

    5xx

    O cliente precisa se autenticar para obter acesso à rede (portais cativos).

O que são códigos de status HTTP?

Códigos de status HTTP são os números de três dígitos que o servidor devolve no início de toda resposta para resumir o que aconteceu. É com base neles que navegadores, clientes, proxies e CDNs decidem se cacheiam, redirecionam, tentam de novo ou mostram um erro para o usuário.

Todo código de status cai em uma das cinco classes definidas pelo primeiro dígito: 1xx informativo, 2xx sucesso, 3xx redirecionamento, 4xx erro do cliente, 5xx erro do servidor. Sabendo a classe, você já tem uma boa ideia do que significa antes mesmo de procurar o código específico.

A maioria das aplicações usa só um conjunto pequeno (200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503). Entender o que cada um *significa* — e a diferença entre 401 Unauthorized e 403 Forbidden, ou entre 301 Moved Permanently e 302 Found — é o que separa um dev de back-end ou de API mediano de um bom.

O que você vai aprender usando esta referência

  • O primeiro dígito sempre indica a classe: 1xx informativo, 2xx sucesso, 3xx redirecionamento, 4xx erro do cliente, 5xx erro do servidor.
  • Códigos de status fazem *parte do contrato* da API — clientes devem fazer branching neles, e não tentar interpretar mensagens de erro no corpo da resposta.
  • 4xx significa que o cliente errou em algo (entrada inválida, falta de autenticação, recurso inexistente). 5xx significa que o servidor falhou, independentemente do que o cliente fez.

Como usar a referência de códigos de status passo a passo

  1. Busque por código ou por nome

    Digite um número (404, 429) ou uma palavra-chave (auth, redirect, rate limit) e os códigos correspondentes aparecem filtrados em tempo real.

  2. Filtre por classe

    Use os chips de classe (1xx, 2xx, 3xx, 4xx, 5xx) para reduzir a lista quando estiver explorando, em vez de procurar algo específico.

  3. Leia a explicação direta

    Cada entrada traz quando o código é enviado, o comportamento típico do cliente e a causa mais comum.

  4. Compare códigos parecidos

    Use os links de "veja também" entre pares confusos (401 vs 403, 301 vs 302) para escolher o certo na sua API.

Classes de códigos de status HTTP

As cinco classes de códigos de status HTTP e o que significam de relance. Definidas na RFC 9110 e registradas no IANA HTTP Status Code Registry.

ClasseSignificadoCódigos comuns
1xx InformativoRequisição recebida, em processamento100, 101, 103
2xx SucessoA requisição funcionou200, 201, 204, 206
3xx RedirecionamentoProcure em outro lugar301, 302, 304, 307, 308
4xx Erro do clienteTem algo errado na requisição400, 401, 403, 404, 409, 422, 429
5xx Erro do servidorO servidor não conseguiu atender uma requisição válida500, 502, 503, 504

Códigos de status HTTP que você precisa conhecer

200 OK vs 201 Created vs 204 No Content

200 OK

A resposta padrão de "deu tudo certo", com corpo.

201 Created

Um novo recurso foi criado como resultado da requisição — geralmente depois de um POST.

204 No Content

Sucesso, mas sem corpo. Comum depois de chamadas DELETE ou PUT que não precisam devolver dados.

Todos os três são códigos de sucesso — o que muda é o que a resposta carrega. 201 deveria incluir um header Location apontando para o novo recurso; 204 é vazio por definição.

301 Moved Permanently vs 302 Found

301

Redirecionamento permanente. Navegadores e buscadores guardam essa informação; a URL antiga, na prática, está morta.

302

Redirecionamento temporário. O navegador volta a checar a URL original a cada requisição; favoritos continuam apontando para a URL antiga.

Use 301 quando o recurso realmente mudou de lugar (rebranding, reestruturação de URLs). Use 302 para redirecionamentos curtos como testes A/B, redirecionamento de login ou páginas de manutenção.

401 Unauthorized vs 403 Forbidden

401

Você não está autenticado. O servidor não sabe quem você é.

403

O servidor sabe quem você é, mas você não tem permissão para acessar esse recurso.

Se mandar credenciais diferentes pode resolver, retorne 401. Se nenhuma credencial vai ajudar (o recurso simplesmente está fora do alcance daquele usuário), retorne 403.

500 vs 502 vs 503 vs 504

500

Erro genérico do servidor — seu código jogou uma exceção não tratada.

502

Bad gateway — um proxy na frente (CDN, load balancer) não conseguiu chegar até o servidor de origem.

503

Serviço indisponível — o servidor está no ar, mas sobrecarregado ou em manutenção.

504

Gateway timeout — um proxy chegou até o servidor de origem, mas não recebeu resposta a tempo.

Os quatro são erros do servidor, mas contam histórias bem diferentes para quem está debugando. 500 é problema da sua aplicação; 502 e 504 apontam para o caminho de rede; 503 aponta para falta de capacidade.

Erros comuns com códigos de status HTTP

  • Retornar 200 OK com {"error": "..."} no corpo. Códigos de status fazem parte do contrato — use o certo (400, 404, 500) para que os clientes possam fazer branching.
  • Usar 401 para erros de permissão. 401 é para autenticação; negativas de permissão são 403.
  • Usar 200 para recursos recém-criados em vez de 201 com um header Location.

Perguntas frequentes sobre códigos de status HTTP

O que significa HTTP 404?
404 Not Found significa que o servidor entendeu a requisição, mas o recurso naquela URL não existe. Geralmente o caminho está errado, o recurso foi apagado ou a URL foi digitada incorretamente.
Qual é a diferença entre 401 e 403?
401 Unauthorized significa que você não está autenticado — o servidor não sabe quem você é. 403 Forbidden significa que você está autenticado, mas não tem permissão para o recurso. Mandar credenciais diferentes pode resolver o 401; não vai resolver o 403.
Qual é a diferença entre 301 e 302?
301 Moved Permanently é um redirecionamento permanente — navegadores e buscadores atualizam seus registros. 302 Found é um redirecionamento temporário — os clientes continuam visitando a URL original. Use 301 para mudanças definitivas e 302 para desvios temporários.
O que significa HTTP 500?
500 Internal Server Error é um erro genérico do servidor, normalmente disparado quando uma exceção não tratada estoura. O cliente não fez nada de errado — seu servidor falhou em processar uma requisição válida.
Devo sempre usar um código de status específico?
Sim. Retornar 200 OK em falhas ou 500 para tudo que dá errado torna a API muito mais difícil de usar. Escolha o código mais específico que faça sentido — clientes, proxies, monitores e lógica de retry dependem do código de status para tomar decisões.
O que significa HTTP 429?
429 Too Many Requests é enviado quando o cliente atingiu um limite de taxa (rate limit). A resposta deve incluir um header Retry-After informando quando é seguro tentar de novo.

Saiba mais

Outras ferramentas para desenvolvedores

Aprenda a programar com o Coddy

COMEÇAR