Referencia completa de códigos de estado HTTP con búsqueda en tiempo real
Continue
El servidor recibió los headers y el cliente puede proceder a enviar el cuerpo de la solicitud.
Switching Protocols
El servidor acepta cambiar el protocolo indicado en el header Upgrade (p. ej. HTTP → WebSocket).
Processing
El servidor recibió la solicitud completa y está procesándola; aún no hay respuesta disponible.
Early Hints
Permite enviar headers Link preliminares (preload, preconnect) mientras se prepara la respuesta final.
OKcomún
La solicitud fue exitosa. El cuerpo contiene el recurso o resultado solicitado.
Createdcomún
La solicitud fue exitosa y se creó un nuevo recurso. Respuesta estándar a POST o PUT.
Accepted
La solicitud fue aceptada para procesamiento asíncrono; el resultado no está disponible aún.
Non-Authoritative Information
La información devuelta puede provenir de una copia en caché o de un proxy, no del origen.
No Contentcomún
La solicitud fue exitosa pero no hay contenido en la respuesta. Común en DELETE o PUT sin cuerpo.
Reset Content
El servidor indica al cliente que limpie o reinicie la vista que originó la solicitud.
Partial Content
Se devuelve solo una parte del recurso en respuesta a un header Range en la solicitud (streaming).
Multi-Status
El cuerpo XML contiene múltiples respuestas para operaciones sobre múltiples recursos (WebDAV).
Already Reported
Los miembros de un DAV binding ya fueron enumerados en una respuesta anterior de la misma solicitud.
IM Used
El servidor cumplió con la solicitud aplicando una o más instancias de manipulación al recurso.
Multiple Choices
Existen múltiples representaciones del recurso. El cliente o usuario debe elegir una.
Moved Permanentlycomún
El recurso fue movido permanentemente a la URL del header Location. Los buscadores actualizan sus índices.
Foundcomún
Redirección temporal. El cliente debe seguir usando la URL original en solicitudes futuras.
See Other
La respuesta al recurso se encuentra en otra URL que debe recuperarse con GET (tras un POST).
Not Modifiedcomún
El recurso no cambió desde la última solicitud. El cliente usa su copia en caché y ahorra ancho de banda.
Temporary Redirect
Redirección temporal que preserva el método HTTP y el cuerpo, a diferencia del 302.
Permanent Redirect
Redirección permanente que preserva el método HTTP y el cuerpo, a diferencia del 301.
Bad Requestcomún
El servidor no puede procesar la solicitud por sintaxis inválida, parámetros incorrectos u otros errores del cliente.
Unauthorizedcomún
La solicitud requiere autenticación. El cliente debe autenticarse antes de obtener el recurso solicitado.
Payment Required
Reservado para uso futuro. Algunos servicios lo usan para indicar que se requiere pago para continuar.
Forbiddencomún
El cliente está autenticado pero no tiene permisos para acceder al recurso. Diferente al 401.
Not Foundcomún
El servidor no encontró el recurso solicitado. El error HTTP más conocido por usuarios finales.
Method Not Allowed
El método HTTP usado no está permitido para este recurso. El header Allow indica los métodos válidos.
Not Acceptable
El servidor no puede producir una respuesta que coincida con los valores del header Accept del cliente.
Proxy Authentication Required
Similar al 401, pero la autenticación debe realizarse ante un proxy intermediario.
Request Timeout
El servidor cerró la conexión por inactividad. El cliente puede reintentar la solicitud.
Conflict
La solicitud entra en conflicto con el estado actual del recurso, como intentar crear un recurso duplicado.
Gone
El recurso existió pero fue eliminado permanentemente y no hay redirección configurada.
Length Required
El servidor rechaza la solicitud porque no se incluyó el header Content-Length requerido.
Precondition Failed
Una de las condiciones de los headers If-Match, If-None-Match o If-Modified-Since resultó falsa.
Content Too Large
El cuerpo de la solicitud excede el límite permitido por el servidor (upload límite, body size).
URI Too Long
La URL de la solicitud es demasiado larga para ser procesada. Suele ocurrir con query strings masivos.
Unsupported Media Type
El Content-Type del cuerpo no está soportado por el servidor para este endpoint y método.
Range Not Satisfiable
El rango especificado en el header Range está fuera de los límites del recurso.
Expectation Failed
La expectativa indicada en el header Expect no puede ser cumplida por el servidor.
I'm a Teapot
El servidor se niega a preparar café porque es una tetera. Easter egg del RFC 2324 de April Fools. Nunca usar en producción.
Misdirected Request
La solicitud fue dirigida a un servidor que no puede producir respuesta para esa combinación de esquema y autoridad.
Unprocessable Contentcomún
La solicitud está bien formada pero contiene errores semánticos. Estándar para errores de validación en APIs REST.
Locked
El recurso al que se intenta acceder está bloqueado por otro proceso (WebDAV).
Failed Dependency
La solicitud falló porque depende de otra solicitud que también falló (WebDAV).
Too Early
El servidor no procesa la solicitud porque podría ser un replay. Protección contra replay attacks en TLS early data.
Upgrade Required
El cliente debe cambiar a un protocolo diferente, indicado en los headers Upgrade y Connection.
Precondition Required
El servidor requiere que la solicitud sea condicional para prevenir el problema de 'lost update'.
Too Many Requestscomún
El cliente superó el límite de solicitudes en un período de tiempo (rate limiting). Revisar header Retry-After.
Request Header Fields Too Large
El servidor rechaza la solicitud porque uno o más headers superan el tamaño máximo permitido.
Unavailable For Legal Reasons
El recurso no puede servirse por razones legales: censura, bloqueo geográfico o restricción judicial.
Internal Server Errorcomún
Error genérico del servidor. Algo falló sin que se pueda especificar más. Revisar logs del servidor.
Not Implemented
El servidor no soporta la funcionalidad requerida para completar la solicitud (método no implementado).
Bad Gatewaycomún
El proxy o gateway recibió una respuesta inválida del servidor upstream. Común en Nginx/Cloudflare.
Service Unavailablecomún
El servidor no está disponible temporalmente por mantenimiento o sobrecarga. Incluir Retry-After.
Gateway Timeoutcomún
El proxy no recibió respuesta a tiempo del servidor upstream. Revisar timeouts de la cadena de proxies.
HTTP Version Not Supported
El servidor no soporta la versión HTTP usada en la solicitud.
Variant Also Negotiates
Error de configuración: el servidor seleccionado para negociación de contenido es él mismo negociable.
Insufficient Storage
El servidor no puede almacenar la representación necesaria para completar la solicitud (WebDAV).
Loop Detected
El servidor detectó un bucle infinito al procesar la solicitud con Depth: infinity (WebDAV).
Not Extended
Se requieren extensiones adicionales a la solicitud para que el servidor pueda cumplirla.
Network Authentication Required
El cliente necesita autenticarse en la red, como aceptar los términos de un portal cautivo de WiFi.
También podrías necesitar
Los códigos de estado HTTP son la base del protocolo de comunicación web: cada respuesta del servidor lleva un código de tres dígitos que indica si la solicitud fue exitosa, requiere acción del cliente, o encontró un error. Conocerlos en profundidad es indispensable para diseñar APIs RESTful robustas, depurar integraciones, configurar proxies inversos como Nginx o Cloudflare, e interpretar logs de acceso. Esta referencia cubre los 50+ códigos del estándar RFC 9110 y extensiones WebDAV, organizados en cinco categorías: 1xx (informativos), 2xx (éxito), 3xx (redirección), 4xx (errores del cliente) y 5xx (errores del servidor). Cada entrada incluye el nombre oficial, una descripción práctica con casos de uso reales y la posibilidad de copiar el código numéricamente para pegarlo en código, configuraciones o documentación. El buscador en tiempo real filtra simultáneamente por código, nombre y descripción sin enviar datos a ningún servidor.
¿Cuál es la diferencia entre 401 y 403?
El 401 (Unauthorized) significa que el cliente NO está autenticado: el servidor no sabe quién es. El 403 (Forbidden) significa que el cliente SÍ está identificado pero no tiene permisos. En términos prácticos: 401 = 'inicia sesión primero', 403 = 'tu cuenta no tiene acceso a esto'. A pesar de su nombre, 401 en realidad indica falta de autenticación, no de autorización — una inconsistencia histórica del estándar.
¿Cuándo usar 200 vs 201 vs 204 en una API REST?
200 (OK) es para respuestas GET exitosas con cuerpo. 201 (Created) es la respuesta correcta cuando se crea un recurso con POST o PUT — debe incluir el header Location con la URL del nuevo recurso. 204 (No Content) se usa cuando la operación fue exitosa pero no hay nada que devolver, como en un DELETE o un PUT que no retorna el recurso actualizado. Usar 200 para todo es técnicamente correcto pero pierde semántica REST.
¿Qué diferencia hay entre 301 y 308, y entre 302 y 307?
La distinción clave es si el método HTTP se preserva en la redirección. 301 y 302 son históricos: los navegadores los tratan cambiando el método a GET (aunque la spec no lo requería). 307 y 308 garantizan que el método original (POST, PUT, PATCH) se mantiene en la redirección. La regla práctica: para redirigir formularios POST permanentemente usa 308, temporalmente usa 307. Para redirigir páginas web a GET permanentemente usa 301.
¿Por qué 422 es mejor que 400 para errores de validación?
400 (Bad Request) indica que el servidor no puede parsear la solicitud — la sintaxis es incorrecta. 422 (Unprocessable Content) indica que la solicitud está bien formada pero los datos tienen errores semánticos, como un email con formato inválido o una fecha fuera de rango. APIs modernas como Stripe, GitHub y Shopify usan 422 para validaciones de dominio porque transmite más precisión: el servidor entendió la solicitud pero no puede procesarla por reglas de negocio.
¿Cuándo aparece un 502 y cómo depurarlo?
Un 502 (Bad Gateway) aparece cuando un proxy (Nginx, Cloudflare, un load balancer) recibió una respuesta inválida del servidor upstream: puede estar caído, respondiendo con un formato inesperado o cerrando la conexión antes de terminar. Para depurarlo: 1) Verificar que el servidor upstream (Node.js, PHP-FPM, Gunicorn) esté corriendo. 2) Revisar logs del proxy (access.log, error.log). 3) Comprobar que el upstream responde en el socket/puerto configurado. Un 502 siempre indica un problema entre el proxy y el backend, no en el cliente.