Una referencia con búsqueda de los códigos de estado de respuesta HTTP.
El servidor recibió las cabeceras y el cliente debe enviar el cuerpo. Se usa con la cabecera Expect: 100-continue.
El servidor acepta cambiar de protocolo según lo pedido, normalmente para pasar una conexión a WebSocket.
El servidor aceptó la petición pero aún no la ha terminado. Aparece en WebDAV.
Permite al navegador empezar a precargar recursos mientras el servidor prepara la respuesta final.
La petición tuvo éxito. El significado depende del método: GET devuelve el recurso, POST devuelve el resultado de la acción.
La petición tuvo éxito y se creó un recurso nuevo, normalmente tras un POST o PUT. Una cabecera Location suele apuntar a él.
La petición se aceptó para procesarla, pero el trabajo no ha terminado. Habitual en tareas asíncronas y colas.
La respuesta viene de un proxy o de una copia transformada, no del servidor de origen.
La petición tuvo éxito y no hay cuerpo que devolver. Típico en DELETE y en actualizaciones que no necesitan datos de respuesta.
La petición tuvo éxito y el cliente debe restablecer la vista, por ejemplo vaciar un formulario.
El servidor devuelve solo una parte del recurso por una cabecera Range. Se usa en descargas reanudables y al saltar en vídeos.
Una respuesta WebDAV que lleva códigos de estado separados para varias suboperaciones.
El servidor cumplió un GET aplicando manipulaciones de instancia, como la codificación delta.
Hay varias respuestas posibles para la petición y el cliente debe elegir una. Se usa poco en la práctica.
El recurso tiene una nueva URL permanente. Los buscadores transfieren el posicionamiento a la nueva dirección. Úsalo en redirecciones permanentes.
Una redirección temporal. El cliente debe seguir usando la URL original en peticiones futuras.
Redirige a otra URL que debe pedirse con GET, normalmente tras un POST de formulario (Post/Redirect/Get).
La copia en caché sigue siendo válida, así que no se envía cuerpo. Se devuelve en peticiones condicionales con If-None-Match o If-Modified-Since.
Una redirección temporal que mantiene el método y el cuerpo de la petición, a diferencia del 302 en algunos clientes antiguos.
Una redirección permanente que mantiene el método y el cuerpo de la petición. La versión del 301 que conserva el método.
El servidor no puede procesar la petición por sintaxis mal formada, parámetros no válidos o un cuerpo no válido. Revisa el formato de la petición.
Falta la autenticación o no es válida. El cliente debe iniciar sesión o enviar credenciales válidas. A pesar del nombre, se refiere a la autenticación.
Reservado para sistemas de pago digital. Algunas API lo usan cuando se alcanza el límite de un plan o se requiere un pago.
El servidor entendió la petición pero se niega a autorizarla. Se conoce la identidad pero no tiene permiso, o una regla bloquea el acceso.
El servidor no encuentra el recurso pedido. Las causas habituales son una URL errónea, una página eliminada o una ruta inexistente.
El método HTTP no se admite para esta URL, por ejemplo un POST a un endpoint de solo lectura. La cabecera Allow lista los métodos válidos.
El servidor no puede producir una respuesta que coincida con las cabeceras Accept enviadas por el cliente.
Como el 401, pero el cliente debe autenticarse primero ante el proxy.
El servidor agotó el tiempo esperando a que el cliente terminara de enviar la petición.
La petición entra en conflicto con el estado actual del recurso, como un conflicto de edición o un valor único duplicado.
El recurso se eliminó de forma permanente y no volverá. Los buscadores lo retiran más rápido que con un 404.
El servidor exige una cabecera Content-Length y la petición no la incluía.
Una condición de las cabeceras de la petición, como If-Match, resultó falsa.
El cuerpo de la petición es mayor de lo que permite el servidor. Sube el límite de carga o envía un archivo más pequeño.
La URL es más larga de lo que el servidor acepta, a menudo por una cadena de consulta muy larga.
El servidor no admite el formato de la cabecera Content-Type. Comprueba que envías el tipo esperado, como application/json.
La cabecera Range pide una porción que el recurso no tiene.
El servidor no puede cumplir el requisito de la cabecera Expect.
Una broma del 1 de abril de la RFC 2324. Algunos servicios lo devuelven a propósito para rechazar una petición.
La petición se envió a un servidor que no puede responder para ese host.
La sintaxis es correcta pero los datos no son válidos semánticamente, por ejemplo una validación fallida. Muy común en las API REST.
El recurso está bloqueado. Aparece en WebDAV.
La petición falló porque falló otra anterior de la que dependía.
El servidor se niega a procesar una petición que podría repetirse.
El cliente debe cambiar a otro protocolo, indicado en la cabecera Upgrade.
El servidor exige que la petición sea condicional para evitar actualizaciones perdidas.
El cliente envió demasiadas peticiones en un tiempo dado (límite de tasa). Una cabecera Retry-After puede indicar cuándo reintentar.
Las cabeceras, a menudo las cookies, son demasiado grandes para que el servidor las acepte.
El acceso se deniega por motivos legales, como una orden judicial o censura.
Un fallo genérico del lado del servidor. Revisa los registros del servidor en busca de una excepción no controlada o un error de configuración.
El servidor no admite la funcionalidad necesaria para cumplir la petición.
Una pasarela o proxy recibió una respuesta no válida del servidor ascendente. A menudo la aplicación detrás de un proxy inverso está caída.
El servidor no puede atender la petición temporalmente por sobrecarga o mantenimiento. Retry-After puede sugerir cuándo.
Una pasarela o proxy no recibió a tiempo una respuesta del servidor ascendente. Busca consultas lentas o peticiones muy largas.
El servidor no admite la versión de HTTP usada en la petición.
El servidor no puede almacenar los datos necesarios para completar la petición. Aparece en WebDAV.
El servidor detectó un bucle infinito al procesar la petición.
El cliente debe autenticarse para acceder a la red, por ejemplo en un portal cautivo.
Toda respuesta HTTP empieza con un código de estado de tres dígitos que indica al cliente cómo fue la petición. El primer dígito da la clase: 1xx para mensajes informativos, 2xx para éxito, 3xx para redirección, 4xx para errores causados por el cliente y 5xx para errores del servidor. Los navegadores, los buscadores, las API y las herramientas de monitorización se basan en estos códigos para decidir qué hacer a continuación.
Elegir el código correcto importa. Un 301 transfiere el posicionamiento a una nueva URL mientras que un 302 no, un 404 y un 410 dicen cosas distintas a los rastreadores sobre una página que falta, y un 429 pide a los clientes de una API que reduzcan el ritmo. Esta referencia lista los códigos que encontrarás con más frecuencia, con una explicación breve y la causa habitual, para que depures más rápido y diseñes API más claras.