Continuar(Continue)
InformativoEl servidor ha recibido la parte inicial de la solicitud y el cliente debe continuar con el envío.
Referencia técnica completa para todos los códigos de estado HTTP de 100 a 599. Búsqueda por número o palabra clave, definiciones RFC, causas habituales, listas de verificación y ejemplos de respuesta.
El servidor ha recibido la parte inicial de la solicitud y el cliente debe continuar con el envío.
El servidor acepta la petición del cliente de cambiar el protocolo de comunicación.
El servidor ha aceptado la solicitud completa, pero aún se encuentra procesándola y no dispone de una respuesta definitiva.
Permite enviar cabeceras preliminares antes del mensaje HTTP final para precargar recursos críticos.
La solicitud se ha procesado con éxito.
La solicitud se ha completado con éxito y ha dado lugar a la creación de un nuevo recurso.
La solicitud ha sido aceptada para su procesamiento, pero este aún no ha finalizado.
La solicitud se procesó con éxito, pero la carga útil devuelta fue modificada por un proxy intermedio.
La acción se ejecutó con éxito, pero la respuesta no contiene cuerpo deliberadamente.
El servidor procesó la solicitud y pide al cliente que restablezca la vista del documento que motivó el envío.
El servidor entrega únicamente la porción del recurso especificada en la cabecera Range de la solicitud.
La respuesta transmite información sobre múltiples recursos con estados HTTP independientes (WebDAV).
Los miembros de un enlace WebDAV ya han sido enumerados en una parte precedente de la respuesta multi-estado.
El servidor ha cumplido la solicitud GET y la respuesta es una representación de las manipulaciones de instancia aplicadas.
La solicitud dispone de múltiples respuestas posibles y el cliente debe seleccionar una de ellas.
El recurso solicitado ha sido asignado de forma definitiva a una nueva URI.
El recurso solicitado reside temporalmente en una URI diferente.
El servidor redirige al cliente a un recurso diferente que debe recuperarse estrictamente mediante el método GET.
El recurso no ha cambiado desde la fecha o versión indicada en las cabeceras condicionales de la solicitud.
El recurso solicitado solo puede ser accedido a través del proxy indicado en la cabecera Location (Obsoleto).
El recurso reside temporalmente en otra URI; el cliente DEBE mantener el mismo método HTTP al realizar la nueva solicitud.
El recurso se ha movido permanentemente a otra URI; el cliente DEBE mantener el mismo método HTTP al reenviar.
El servidor no puede procesar la solicitud debido a un error de sintaxis atribuible al cliente.
La solicitud carece de credenciales de autenticación válidas para acceder al recurso protegido.
Reservado para futuros usos o utilizado por plataformas de pago y límites de suscripción.
El servidor reconoce la identidad del cliente, pero deniega el permiso para acceder al recurso.
El servidor no ha encontrado ninguna representación que coincida con la URI solicitada.
Es el código de error más conocido en la web. Indica que el recurso solicitado no existe en la ruta especificada, fue eliminado o la URL está mal escrita. Los motores de búsqueda consideran que la ausencia puede ser temporal y volverán a rastrear la URL.
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "Not Found",
"message": "Resource '/api/v1/orders/987123' does not exist"
}El método de solicitud HTTP utilizado no está permitido para el recurso solicitado.
El servidor no puede producir una respuesta que coincida con las cabeceras de negociación de contenido del cliente.
El cliente debe autenticarse previamente ante un proxy intermedio para continuar.
El servidor agotó su tiempo de espera mientras aguardaba la solicitud del cliente.
La solicitud no se pudo procesar debido a un conflicto con el estado actual del recurso en el servidor.
El recurso solicitado estuvo disponible anteriormente, pero ha sido eliminado de forma deliberada y permanente.
El servidor rechaza la solicitud porque no se especificó la cabecera Content-Length requerida.
Una o más condiciones evaluadas en las cabeceras de la solicitud resultaron falsas en el servidor.
El cuerpo de la solicitud supera el límite de tamaño máximo admitido por el servidor.
La longitud de la URI solicitada es superior a la que el servidor está dispuesto a interpretar.
El servidor rechaza la solicitud porque el formato de los datos no está soportado.
El conjunto de bytes solicitado en la cabecera Range no se puede cumplir para el recurso actual.
La expectativa indicada en el encabezado Expect de la solicitud no pudo ser satisfecha por el servidor.
El servidor se niega a preparar café porque es, de forma permanente, una tetera.
La solicitud fue dirigida a un servidor que no es capaz de generar una respuesta adecuada.
La sintaxis del cuerpo de la solicitud es válida, pero las instrucciones contienen errores semánticos.
El recurso al que se intenta acceder se encuentra bloqueado contra modificaciones (WebDAV).
La solicitud falló porque dependía de otra acción previa que no se ejecutó con éxito (WebDAV).
El servidor no está dispuesto a procesar una solicitud que podría repetirse en datos tempranos (Early Data).
El servidor se niega a realizar la solicitud utilizando el protocolo actual y exige una actualización.
El servidor de origen exige que la solicitud sea condicional para evitar modificaciones concurrentes.
El cliente ha superado el límite de velocidad o cuota de solicitudes permitidas en un periodo determinado.
El servidor se niega a procesar la solicitud porque los campos de cabecera superan el límite permitido.
El acceso al recurso ha sido bloqueado como consecuencia de una orden o exigencia legal.
El cliente cerró la conexión TCP antes de que el servidor pudiera enviar una respuesta (Nginx).
El servidor encontró una condición inesperada que le impidió completar la solicitud.
El servidor no admite la funcionalidad requerida para procesar la solicitud.
El servidor, actuando como puerta de enlace o proxy, recibió una respuesta no válida del servidor ascendente.
El servidor no puede atender la solicitud debido a una sobrecarga temporal o tareas de mantenimiento programadas.
El servidor intermediario no recibió una respuesta a tiempo del servidor ascendente.
El servidor no admite o se niega a soportar la versión del protocolo HTTP utilizada en la solicitud.
La negociación transparente de contenido para la solicitud genera una referencia circular.
El servidor no puede completar la solicitud porque carece de espacio de almacenamiento suficiente (WebDAV).
El servidor interrumpió la operación al detectar un bucle infinito durante el procesamiento (WebDAV).
El servidor exige una política de extensión obligatoria que la solicitud no ha proporcionado.
El cliente debe autenticarse para obtener acceso a la red antes de poder cursar la solicitud.
Cloudflare pudo conectar con su red perimetral, pero el servidor web de origen rechazó la conexión.
Cloudflare contactó con el servidor de origen, pero el protocolo de enlace TCP agotó el tiempo de espera.
| Clase | Categoría | Definición y Propósito Central | Acción Típica del Cliente | Ejemplos Clave |
|---|---|---|---|---|
| 1xx | Informativo | Respuesta provisional que indica la recepción de la solicitud y el curso de su procesamiento. | Continuar enviando cabeceras o cuerpo, o cambiar de protocolo. | 100, 101, 103 |
| 2xx | Éxito | La acción solicitada por el cliente fue recibida, comprendida y aceptada satisfactoriamente. | Procesar la carga útil de la respuesta o confirmar la acción completada. | 200, 201, 204, 206 |
| 3xx | Redirección | El agente de usuario debe emprender acciones adicionales para completar la solicitud. | Seguir la URI indicada en "Location" o cargar el recurso desde la caché. | 301, 302, 304, 307, 308 |
| 4xx | Error del cliente | La solicitud contiene errores de sintaxis, accesos no autorizados o condiciones no cumplibles. | Corregir los datos del cliente, aportar credenciales o regular la tasa de peticiones. | 400, 401, 403, 404, 422, 429 |
| 5xx | Error del servidor | El servidor reconoce un fallo interno imprevisto o resulta incapaz de cumplir la solicitud. | Reintentar con retroceso exponencial o alertar al equipo de operaciones backend. | 500, 502, 503, 504 |
401 Unauthorized: Fallo de autenticación. La solicitud carece de credenciales válidas (token Bearer ausente o expirado, clave de API inválida). Reautenticarse con credenciales legítimas subsana el error.
403 Forbidden: Fallo de autorización. La identidad está verificada, pero el cliente carece de privilegios (rol RBAC insuficiente, IP restringida o bloqueo de organización) para acceder al recurso solicitado.
301 / 302 (Históricos): Redirecciones donde los clientes tradicionalmente alteraban el método de solicitud de POST a GET al seguir el destino.
307 / 308 (RFC 9110): Redirecciones con preservación estricta de método. Tanto 307 (temporal) como 308 (permanente) obligan al cliente a reenviar exactamente el mismo verbo HTTP (un POST permanece como POST) con el cuerpo original.
500 Internal Server Error: Caída interna de la aplicación (excepción no capturada, puntero nulo, pérdida de conexión a base de datos).
502 Bad Gateway: El proxy inverso (Nginx, Cloudflare) alcanzó el backend, pero este se cerró inesperadamente o rechazó la conexión.
503 Service Unavailable: Mantenimiento temporal o saturación de capacidad; los motores de búsqueda pausan el rastreo sin penalización.
504 Gateway Timeout: El backend tardó más tiempo en responder que el umbral máximo de lectura configurado en el proxy inverso.
400 Bad Request: Error de sintaxis en la petición. JSON malformado (comas sobrantes, comillas abiertas), codificación errónea en parámetros de consulta o cabeceras corruptas.
422 Unprocessable Content: La sintaxis JSON es 100% válida, pero incumple las validaciones de negocio o el esquema (correo no válido, edad negativa, fecha en el pasado).
| Verbo HTTP | Semántica CRUD | ¿Idempotente? | ¿Seguro? | Estados de Éxito Estándar | Estados de Error Estándar |
|---|---|---|---|---|---|
| GET | Lectura / Consulta | Sí | Sí | 200 OK, 206 Partial | 404, 401, 403, 304 |
| POST | Creación / Acción | No | No | 201 Created, 202 Accepted | 400, 422, 409, 415 |
| PUT | Reemplazo / Upsert | Sí | No | 200 OK, 204 No Content | 400, 404, 412, 428 |
| PATCH | Actualización Parcial | No | No | 200 OK, 204 No Content | 400, 404, 422, 409 |
| DELETE | Eliminación / Baja | Sí | No | 204 No Content, 202 Accepted | 404, 401, 403 |
| HEAD | Solo Cabeceras | Sí | Sí | 200 OK (sin cuerpo) | 404, 304 |
| OPTIONS | CORS / Capacidades | Sí | Sí | 204 No Content, 200 OK | 405 Method Not Allowed |
Los códigos de estado HTTP son respuestas numéricas estandarizadas de 3 dígitos emitidas por un servidor web ante la solicitud de un cliente (IETF RFC 9110). El primer dígito define una de las cinco clases de respuesta: 1xx Informativo (solicitud recibida, el procesamiento continúa), 2xx Éxito (la acción solicitada fue recibida, comprendida y aceptada con éxito), 3xx Redirección (el cliente debe realizar acciones adicionales para completar la petición), 4xx Error del cliente (la solicitud contiene sintaxis errónea o no puede ser cumplida) y 5xx Error del servidor (el servidor falló al intentar atender una solicitud aparentemente válida).
La frontera clave radica en la diferencia entre autenticación (identidad) y autorización (permisos). 401 Unauthorized indica que la solicitud carece de credenciales de autenticación válidas o estas han expirado (token JWT ausente o vencido, API Key errónea); enviar credenciales legítimas resolverá el fallo. Por el contrario, 403 Forbidden significa que el servidor reconoce perfectamente la identidad del usuario, pero sus políticas de control de acceso (como roles RBAC) determinan que no posee los privilegios suficientes para acceder al recurso; reintentar la solicitud con el mismo usuario continuará arrojando un error 403.
Desde la perspectiva de SEO, 301 Moved Permanently y 308 Permanent Redirect son redirecciones permanentes que transfieren la totalidad de la autoridad de enlace (PageRank). En cambio, 302 Found y 307 Temporary Redirect son temporales y no transfieren dicha autoridad. En cuanto a los métodos HTTP, históricamente los navegadores mutaban indebidamente las solicitudes POST a GET tras recibir un 301 o 302. Para impedir esta alteración no deseada, RFC 9110 consolidó 307 (temporal) y 308 (permanente), los cuales prohíben estrictamente al cliente cambiar el verbo HTTP original (un POST se reenvía obligatoriamente como POST con su cuerpo intacto).
500 Internal Server Error corresponde a una excepción no controlada o fallo directo en el código de la aplicación interna. 502 Bad Gateway indica que un proxy inverso (Nginx, Cloudflare, AWS ALB) intentó comunicarse con el servidor de aplicaciones backend pero este rechazó la conexión o se cerró inesperadamente. 503 Service Unavailable señala que el servidor está temporalmente sobrecargado o en mantenimiento programado (habitualmente devolviendo una cabecera Retry-After). 504 Gateway Timeout ocurre cuando el proxy inverso estableció contacto con el backend, pero este tardó más tiempo en responder que el tiempo límite configurado (por ejemplo, debido a una consulta lenta a la base de datos).
Devuelva 400 Bad Request cuando la solicitud presente un error de sintaxis subyacente que impida al servidor siquiera analizar o deserializar la carga útil (como un documento JSON malformado con comas sobrantes o cabeceras HTTP incompatibles). Por el contrario, devuelva 422 Unprocessable Content (RFC 9110 §15.5.21) cuando la sintaxis sea perfectamente válida (JSON estructurado correctamente), pero los datos incumplan reglas semánticas o validaciones de negocio (por ejemplo, formato de correo no válido, edad negativa o longitud insuficiente de contraseña).
404 Not Found indica que el recurso no existe actualmente en la URI solicitada; los motores de búsqueda asumen que podría tratarse de una indisponibilidad temporal o un enlace roto accidental, por lo que continuarán reintentando el rastreo en el futuro. En contraposición, 410 Gone declara explícitamente que el recurso existió en el pasado pero fue eliminado de forma deliberada y permanente sin dirección de sustitución. Rastreadores como Googlebot interpretan 410 como una instrucción definitiva para purgar la URL de los índices de búsqueda de inmediato, preservando el presupuesto de rastreo (crawl budget).
Para POST (creación): devuelva 201 Created junto a una cabecera Location que apunte a la URI del nuevo recurso, o 202 Accepted si el procesamiento se ejecuta de manera asíncrona en una cola. Para PUT y PATCH (actualización): devuelva 200 OK con la entidad actualizada o 204 No Content si la respuesta no incluye cuerpo. Para DELETE: devuelva 204 No Content tras una eliminación exitosa o 202 Accepted si la baja se programa asíncronamente. En caso de fallos de validación en cualquier verbo de escritura, devuelva 422 Unprocessable Content con el desglose de los errores.
Cuando el volumen de llamadas de un cliente sobrepasa los umbrales autorizados, el servidor debe responder con 429 Too Many Requests (RFC 6585) acompañado de una cabecera "Retry-After" que especifique los segundos o la marca de tiempo GMT en que se restablecerá el acceso. Las APIs maduras proporcionan además las cabeceras estándar "X-RateLimit-Limit" (cuota total), "X-RateLimit-Remaining" (peticiones restantes) y "X-RateLimit-Reset" (tiempo de restablecimiento) para que los clientes adapten su ritmo de peticiones proactivamente.
De acuerdo con las especificaciones RFC 9110 y RFC 9111, los códigos 200 (OK), 203 (Non-Authoritative Information), 204 (No Content), 206 (Partial Content), 300 (Multiple Choices), 301 (Moved Permanently), 404 (Not Found), 405 (Method Not Allowed), 410 (Gone), 414 (URI Too Long) y 501 (Not Implemented) son almacenables en caché de manera predeterminada, a menos que directivas explícitas en la cabecera Cache-Control (como no-store o private) indiquen lo contrario.
IETF RFC 9457 (que actualiza y reemplaza a RFC 7807) formaliza el estándar "Problem Details for HTTP APIs" (Content-Type: application/problem+json). En lugar de esquemas de error propietarios y heterogéneos, las APIs compatibles devuelven una estructura JSON estándar con cinco campos canónicos: "type" (URI que categoriza el tipo de fallo), "title" (resumen legible y conciso), "status" (código de estado HTTP numérico coincidente), "detail" (explicación concreta para esta incidencia específica) e "instance" (identificador URI único de la ocurrencia para fines de rastreo y depuración).