
Cada vez que un navegador o una aplicación hace una petición HTTP, el servidor responde con un código de tres dígitos. Ese número dice exactamente qué ha pasado: si todo fue bien, si hay que redirigir, si el error es tuyo o si es del servidor. Conocerlos de memoria te ahorra tiempo depurando APIs y configurando infraestructura.
Esta guía cubre todos los códigos definidos en el RFC 9110 y sus extensiones, organizados por familia.
1xx — Informativos
Respuestas provisionales. El servidor ha recibido la petición y el proceso continúa. Raramente los verás en el día a día, pero son relevantes en conexiones WebSocket y en optimizaciones de carga.
100Continue — El servidor recibió los encabezados; el cliente puede continuar enviando el cuerpo de la petición.101Switching Protocols — El servidor acepta cambiar el protocolo. Es la respuesta al handshake de WebSocket.102Processing — El servidor está procesando la petición pero aún no tiene respuesta. Específico de WebDAV.103Early Hints — Permite al cliente precargar recursos mientras el servidor prepara la respuesta final. Útil para optimizar el rendimiento web.
2xx — Éxito
La petición se recibió, se entendió y se procesó correctamente. Son los códigos que quieres ver.
200OK — Petición exitosa. La respuesta varía según el método HTTP: en un GET devuelve el recurso, en un POST el resultado de la acción.201Created — Recurso creado correctamente. Es la respuesta estándar a un POST o PUT exitoso que genera un nuevo recurso.202Accepted — La petición se aceptó pero el procesamiento es asíncrono y puede no haber terminado aún.203Non-Authoritative Information — La respuesta proviene de una caché o un tercero, no del servidor original.204No Content — Petición exitosa pero sin cuerpo en la respuesta. Típico en respuestas a DELETE o a actualizaciones que no devuelven datos.205Reset Content — Petición exitosa; el cliente debe reiniciar la vista del documento.206Partial Content — Se entrega solo una parte del recurso. Se usa en descargas por rangos y en streaming de vídeo.207Multi-Status — Respuesta con múltiples estados para distintas sub-operaciones. Específico de WebDAV.208Already Reported — Los miembros del recurso ya fueron enumerados en una respuesta anterior. WebDAV.226IM Used — El servidor aplicó una transformación al recurso solicitado (delta encoding).
3xx — Redirecciones
El cliente necesita tomar una acción adicional para completar la petición. Hay matices importantes entre ellos que afectan al SEO y al comportamiento del método HTTP.
300Multiple Choices — Existen varias representaciones del recurso; el cliente debe elegir.301Moved Permanently — El recurso se ha movido de forma definitiva a una nueva URL. Los motores de búsqueda transfieren el posicionamiento a la nueva URL.302Found — El recurso está temporalmente en otra URL. A diferencia del 301, no afecta al posicionamiento SEO.303See Other — La respuesta a la petición está en otra URL y debe recuperarse con GET, independientemente del método original.304Not Modified — El recurso no ha cambiado desde la última vez que el cliente lo solicitó. El cliente puede usar su versión en caché.305Use Proxy — (Obsoleto) El recurso debía accederse a través de un proxy.307Temporary Redirect — Redirección temporal que preserva el método HTTP original. A diferencia del 302, un POST sigue siendo POST tras la redirección.308Permanent Redirect — Redirección permanente que preserva el método HTTP original. Es el equivalente al 301 pero sin cambiar el método.
4xx — Errores del cliente
El servidor entendió la petición pero no puede procesarla porque el error está en el lado del cliente: URL incorrecta, falta de autenticación, datos malformados, demasiadas peticiones.
400Bad Request — La petición está malformada o tiene parámetros inválidos. Revisa el cuerpo y los encabezados que estás enviando.401Unauthorized — Se requiere autenticación. El cliente no ha enviado credenciales o las ha enviado incorrectas.402Payment Required — Reservado para uso futuro. Algunas APIs lo usan para indicar que se ha superado el límite del plan de pago.403Forbidden — El servidor entiende la petición pero la rechaza. Las credenciales son válidas pero no tienen permisos suficientes.404Not Found — El recurso solicitado no existe. El más conocido de todos.405Method Not Allowed — El método HTTP usado no está permitido para este endpoint. Comprueba si deberías usar GET en lugar de POST, o viceversa.406Not Acceptable — El servidor no puede generar una respuesta en el formato que el cliente ha especificado en el encabezadoAccept.407Proxy Authentication Required — Se requiere autenticación con el proxy intermedio.408Request Timeout — El cliente tardó demasiado en enviar la petición completa.409Conflict — La petición entra en conflicto con el estado actual del recurso. Habitual al intentar crear un recurso que ya existe.410Gone — El recurso fue eliminado permanentemente y no volverá a estar disponible. A diferencia del 404, aquí el servidor confirma que existió.411Length Required — Falta el encabezadoContent-Lengthen la petición.412Precondition Failed — Una condición previa especificada en los encabezados de la petición no se cumplió.413Content Too Large — El cuerpo de la petición supera el límite configurado en el servidor.414URI Too Long — La URL es demasiado larga para ser procesada.415Unsupported Media Type — El formato del cuerpo no está soportado. Comprueba el encabezadoContent-Type.416Range Not Satisfiable — El rango solicitado del recurso no es válido o supera el tamaño del recurso.417Expectation Failed — El servidor no puede cumplir con el encabezadoExpectde la petición.418I’m a Teapot — Broma del RFC 2324. El servidor se niega a preparar café por ser una tetera. Sí, es un código real.421Misdirected Request — La petición fue dirigida a un servidor que no puede generar una respuesta para ella.422Unprocessable Content — La petición está bien formada sintácticamente pero tiene errores semánticos. Muy habitual en validaciones de formularios y APIs REST.423Locked — El recurso está bloqueado. WebDAV.424Failed Dependency — La petición falló porque dependía de otra petición que también falló. WebDAV.425Too Early — El servidor no quiere procesar una petición que podría ser reproducida.426Upgrade Required — El cliente debe actualizar a un protocolo diferente para continuar.428Precondition Required — La petición debe incluir condiciones para evitar conflictos de actualización concurrente.429Too Many Requests — El cliente ha enviado demasiadas peticiones en poco tiempo. Es la respuesta estándar al rate limiting.431Request Header Fields Too Large — Los encabezados de la petición superan el tamaño máximo permitido.451Unavailable For Legal Reasons — El recurso no está disponible por motivos legales: censura, DMCA, requerimientos judiciales.
5xx — Errores del servidor
El servidor recibió la petición correctamente pero no pudo procesarla por un error interno. Cuando ves un 5xx, el problema no está en tu cliente.
500Internal Server Error — Error genérico del servidor. Algo salió mal internamente sin un motivo más específico.501Not Implemented — El servidor no reconoce o no soporta el método HTTP de la petición.502Bad Gateway — El servidor actúa como gateway o proxy y recibió una respuesta inválida del servidor upstream.503Service Unavailable — El servidor no está disponible temporalmente, habitualmente por mantenimiento o sobrecarga.504Gateway Timeout — El gateway no recibió respuesta a tiempo del servidor upstream.505HTTP Version Not Supported — La versión HTTP de la petición no está soportada por el servidor.506Variant Also Negotiates — Error de configuración interna en la negociación de contenido.507Insufficient Storage — El servidor no tiene espacio suficiente para completar la operación. WebDAV.508Loop Detected — Se detectó un bucle infinito al procesar la petición. WebDAV.510Not Extended — Se necesitan extensiones adicionales del protocolo para que el servidor pueda cumplir la petición.511Network Authentication Required — El cliente debe autenticarse en la red antes de acceder. Típico en portales cautivos de WiFi.
Los que debes memorizar
No necesitas recordar todos los códigos, pero hay un subconjunto que aparece constantemente al trabajar con APIs y que conviene tener automatizado:
200— Todo bien.201— Recurso creado (respuesta a POST exitoso).204— Éxito sin cuerpo de respuesta (DELETE, PATCH sin retorno).301— Redirección permanente (cambia la URL para siempre).304— Recurso en caché, no ha cambiado.400— Petición malformada (error en los datos enviados).401— No autenticado (falta token o credenciales).403— Autenticado pero sin permisos.404— Recurso no encontrado.422— Datos válidos en formato pero inválidos en lógica (validación fallida).429— Demasiadas peticiones, rate limit alcanzado.500— Error interno del servidor.502— El proxy o balanceador no llegó al servidor de destino.503— Servidor caído o en mantenimiento.
Una forma rápida de interpretar cualquier código desconocido: el primer dígito te dice la familia (1 informativo, 2 éxito, 3 redirección, 4 error del cliente, 5 error del servidor). Con eso ya tienes la mitad de la información.