Publicado en

Todos los códigos de estado HTTP: guía de referencia

Código HTTP

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.

  • 100 Continue — El servidor recibió los encabezados; el cliente puede continuar enviando el cuerpo de la petición.
  • 101 Switching Protocols — El servidor acepta cambiar el protocolo. Es la respuesta al handshake de WebSocket.
  • 102 Processing — El servidor está procesando la petición pero aún no tiene respuesta. Específico de WebDAV.
  • 103 Early 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.

  • 200 OK — 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.
  • 201 Created — Recurso creado correctamente. Es la respuesta estándar a un POST o PUT exitoso que genera un nuevo recurso.
  • 202 Accepted — La petición se aceptó pero el procesamiento es asíncrono y puede no haber terminado aún.
  • 203 Non-Authoritative Information — La respuesta proviene de una caché o un tercero, no del servidor original.
  • 204 No Content — Petición exitosa pero sin cuerpo en la respuesta. Típico en respuestas a DELETE o a actualizaciones que no devuelven datos.
  • 205 Reset Content — Petición exitosa; el cliente debe reiniciar la vista del documento.
  • 206 Partial Content — Se entrega solo una parte del recurso. Se usa en descargas por rangos y en streaming de vídeo.
  • 207 Multi-Status — Respuesta con múltiples estados para distintas sub-operaciones. Específico de WebDAV.
  • 208 Already Reported — Los miembros del recurso ya fueron enumerados en una respuesta anterior. WebDAV.
  • 226 IM 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.

  • 300 Multiple Choices — Existen varias representaciones del recurso; el cliente debe elegir.
  • 301 Moved 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.
  • 302 Found — El recurso está temporalmente en otra URL. A diferencia del 301, no afecta al posicionamiento SEO.
  • 303 See Other — La respuesta a la petición está en otra URL y debe recuperarse con GET, independientemente del método original.
  • 304 Not Modified — El recurso no ha cambiado desde la última vez que el cliente lo solicitó. El cliente puede usar su versión en caché.
  • 305 Use Proxy(Obsoleto) El recurso debía accederse a través de un proxy.
  • 307 Temporary Redirect — Redirección temporal que preserva el método HTTP original. A diferencia del 302, un POST sigue siendo POST tras la redirección.
  • 308 Permanent 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.

  • 400 Bad Request — La petición está malformada o tiene parámetros inválidos. Revisa el cuerpo y los encabezados que estás enviando.
  • 401 Unauthorized — Se requiere autenticación. El cliente no ha enviado credenciales o las ha enviado incorrectas.
  • 402 Payment Required — Reservado para uso futuro. Algunas APIs lo usan para indicar que se ha superado el límite del plan de pago.
  • 403 Forbidden — El servidor entiende la petición pero la rechaza. Las credenciales son válidas pero no tienen permisos suficientes.
  • 404 Not Found — El recurso solicitado no existe. El más conocido de todos.
  • 405 Method 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.
  • 406 Not Acceptable — El servidor no puede generar una respuesta en el formato que el cliente ha especificado en el encabezado Accept.
  • 407 Proxy Authentication Required — Se requiere autenticación con el proxy intermedio.
  • 408 Request Timeout — El cliente tardó demasiado en enviar la petición completa.
  • 409 Conflict — La petición entra en conflicto con el estado actual del recurso. Habitual al intentar crear un recurso que ya existe.
  • 410 Gone — El recurso fue eliminado permanentemente y no volverá a estar disponible. A diferencia del 404, aquí el servidor confirma que existió.
  • 411 Length Required — Falta el encabezado Content-Length en la petición.
  • 412 Precondition Failed — Una condición previa especificada en los encabezados de la petición no se cumplió.
  • 413 Content Too Large — El cuerpo de la petición supera el límite configurado en el servidor.
  • 414 URI Too Long — La URL es demasiado larga para ser procesada.
  • 415 Unsupported Media Type — El formato del cuerpo no está soportado. Comprueba el encabezado Content-Type.
  • 416 Range Not Satisfiable — El rango solicitado del recurso no es válido o supera el tamaño del recurso.
  • 417 Expectation Failed — El servidor no puede cumplir con el encabezado Expect de la petición.
  • 418 I’m a Teapot — Broma del RFC 2324. El servidor se niega a preparar café por ser una tetera. Sí, es un código real.
  • 421 Misdirected Request — La petición fue dirigida a un servidor que no puede generar una respuesta para ella.
  • 422 Unprocessable Content — La petición está bien formada sintácticamente pero tiene errores semánticos. Muy habitual en validaciones de formularios y APIs REST.
  • 423 Locked — El recurso está bloqueado. WebDAV.
  • 424 Failed Dependency — La petición falló porque dependía de otra petición que también falló. WebDAV.
  • 425 Too Early — El servidor no quiere procesar una petición que podría ser reproducida.
  • 426 Upgrade Required — El cliente debe actualizar a un protocolo diferente para continuar.
  • 428 Precondition Required — La petición debe incluir condiciones para evitar conflictos de actualización concurrente.
  • 429 Too Many Requests — El cliente ha enviado demasiadas peticiones en poco tiempo. Es la respuesta estándar al rate limiting.
  • 431 Request Header Fields Too Large — Los encabezados de la petición superan el tamaño máximo permitido.
  • 451 Unavailable 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.

  • 500 Internal Server Error — Error genérico del servidor. Algo salió mal internamente sin un motivo más específico.
  • 501 Not Implemented — El servidor no reconoce o no soporta el método HTTP de la petición.
  • 502 Bad Gateway — El servidor actúa como gateway o proxy y recibió una respuesta inválida del servidor upstream.
  • 503 Service Unavailable — El servidor no está disponible temporalmente, habitualmente por mantenimiento o sobrecarga.
  • 504 Gateway Timeout — El gateway no recibió respuesta a tiempo del servidor upstream.
  • 505 HTTP Version Not Supported — La versión HTTP de la petición no está soportada por el servidor.
  • 506 Variant Also Negotiates — Error de configuración interna en la negociación de contenido.
  • 507 Insufficient Storage — El servidor no tiene espacio suficiente para completar la operación. WebDAV.
  • 508 Loop Detected — Se detectó un bucle infinito al procesar la petición. WebDAV.
  • 510 Not Extended — Se necesitan extensiones adicionales del protocolo para que el servidor pueda cumplir la petición.
  • 511 Network 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.