Códigos de estado HTTP
Los códigos de estado HTTP, del 100 al 511, con su nombre oficial, qué significan, cuándo usarlos y el RFC que los define. Busca por número.
- 100
Continue · Continuar
El servidor ha recibido las cabeceras y el cliente puede enviar el cuerpo.
Cuándo usarlo: Respuesta a Expect: 100-continue antes de subir un cuerpo grande.
RFC 9110
- 101
Switching Protocols · Cambiando de protocolo
El servidor acepta cambiar al protocolo que pide la cabecera Upgrade.
Cuándo usarlo: Al abrir un WebSocket.
RFC 9110
- 102
Processing · Procesando
WebDAV: la petición sigue en curso y aún no hay respuesta final. Hoy está en desuso.
RFC 2518
- 103
Early Hints · Pistas tempranas
Envía cabeceras Link por adelantado para que el navegador precargue recursos mientras se prepara la respuesta.
RFC 8297
- 200
OK · Correcto
La petición ha ido bien y la respuesta lleva el resultado.
RFC 9110
- 201
Created · Creado
Se ha creado un recurso nuevo. La cabecera Location suele indicar su URL.
Cuándo usarlo: Tras un POST que crea algo.
RFC 9110
- 202
Accepted · Aceptado
La petición se ha aceptado, pero se procesará más tarde.
Cuándo usarlo: Trabajos en cola o asíncronos.
RFC 9110
- 203
Non-Authoritative Information · Información no autorizada
Correcto, pero un proxy ha modificado la respuesta del servidor original.
RFC 9110
- 204
No Content · Sin contenido
Correcto y sin cuerpo en la respuesta.
Cuándo usarlo: Un DELETE o un PUT que no necesita devolver nada.
RFC 9110
- 205
Reset Content · Restablecer contenido
Correcto; el cliente debe vaciar el formulario o la vista que envió la petición.
RFC 9110
- 206
Partial Content · Contenido parcial
Devuelve solo el trozo pedido con la cabecera Range.
Cuándo usarlo: Reanudar descargas y hacer streaming de vídeo.
RFC 9110
- 207
Multi-Status · Estado múltiple
WebDAV: el cuerpo XML lleva un estado distinto para cada recurso afectado.
RFC 4918
- 208
Already Reported · Ya informado
WebDAV: este recurso ya apareció antes en la misma respuesta 207.
RFC 5842
- 226
IM Used · IM usada
La respuesta es el resultado de aplicar una transformación (delta encoding) al recurso.
RFC 3229
- 300
Multiple Choices · Varias opciones
El recurso tiene varias representaciones y el cliente puede elegir una.
RFC 9110
- 301
Moved Permanently · Movido permanentemente
El recurso tiene una URL nueva para siempre, indicada en Location. Los buscadores trasladan el posicionamiento.
Cuándo usarlo: Cambios de dominio o de estructura de URL. Algunos clientes cambian POST por GET: si importa, usa 308.
RFC 9110
- 302
Found · Encontrado
El recurso está temporalmente en otra URL, indicada en Location.
Cuándo usarlo: Redirecciones temporales. Para conservar el método, usa 307.
RFC 9110
- 303
See Other · Ver otro
El resultado está en otra URL que hay que pedir con GET.
Cuándo usarlo: Después de enviar un formulario (patrón POST/redirect/GET).
RFC 9110
- 304
Not Modified · No modificado
El recurso no ha cambiado desde la copia en caché del cliente, así que no se reenvía.
Cuándo usarlo: Respuesta a If-None-Match o If-Modified-Since.
RFC 9110
- 305
Use Proxy · Usar proxy Histórico
Obsoleto: pedía repetir la petición a través de un proxy. Los navegadores lo ignoran por seguridad.
RFC 9110
- 306
(Unused) · Sin uso Sin uso
Se usó en un borrador antiguo («Switch Proxy») y hoy está reservado.
RFC 9110
- 307
Temporary Redirect · Redirección temporal
Como 302, pero el cliente debe repetir la petición con el mismo método y cuerpo.
RFC 9110
- 308
Permanent Redirect · Redirección permanente
Como 301, pero conservando el método y el cuerpo.
Cuándo usarlo: Mover una API de forma permanente.
RFC 9110
- 400
Bad Request · Petición incorrecta
La petición está mal formada: sintaxis, parámetros o cuerpo no válidos.
RFC 9110
- 401
Unauthorized · No autenticado
Falta autenticarse o las credenciales no valen. Debe ir con una cabecera WWW-Authenticate.
Cuándo usarlo: Sin sesión o con un token caducado. Si está autenticado pero no tiene permiso, es 403.
RFC 9110
- 402
Payment Required · Pago requerido
Reservado para usos futuros de pago. Algunas API lo usan cuando se acaba el saldo o la suscripción.
RFC 9110
- 403
Forbidden · Prohibido
El servidor entiende la petición pero se niega a atenderla. Volver a autenticarse no cambia nada.
RFC 9110
- 404
Not Found · No encontrado
No existe nada en esa URL, o el servidor prefiere no decir que existe.
RFC 9110
- 405
Method Not Allowed · Método no permitido
El recurso existe pero no admite ese método. La cabecera Allow lista los que sí.
RFC 9110
- 406
Not Acceptable · No aceptable
No hay ninguna representación que encaje con las cabeceras Accept del cliente.
RFC 9110
- 407
Proxy Authentication Required · Autenticación de proxy requerida
Como 401, pero es el proxy el que pide credenciales.
RFC 9110
- 408
Request Timeout · Tiempo de espera agotado
El cliente tardó demasiado en enviar la petición completa y el servidor cerró la conexión.
RFC 9110
- 409
Conflict · Conflicto
La petición choca con el estado actual del recurso.
Cuándo usarlo: Ediciones simultáneas o un nombre de usuario ya ocupado.
RFC 9110
- 410
Gone · Ya no existe
El recurso existía y se ha borrado para siempre, sin dirección nueva.
RFC 9110
- 411
Length Required · Longitud requerida
El servidor exige la cabecera Content-Length.
RFC 9110
- 412
Precondition Failed · Precondición fallida
No se cumple una condición de la petición, como If-Match con un ETag antiguo.
RFC 9110
- 413
Content Too Large · Contenido demasiado grande
El cuerpo supera el tamaño que acepta el servidor. Antes se llamaba Payload Too Large.
RFC 9110
- 414
URI Too Long · URI demasiado larga
La URL es más larga de lo que el servidor puede procesar.
RFC 9110
- 415
Unsupported Media Type · Tipo de contenido no admitido
El servidor no acepta el formato del cuerpo (Content-Type o Content-Encoding).
RFC 9110
- 416
Range Not Satisfiable · Rango no satisfactorio
El rango pedido con Range queda fuera del tamaño del recurso.
RFC 9110
- 417
Expectation Failed · Expectativa fallida
El servidor no puede cumplir lo que pide la cabecera Expect.
RFC 9110
- 418
I'm a teapot · Soy una tetera Broma
Una broma del Día de los Inocentes de 1998: una tetera se niega a hacer café. RFC 9110 lo reserva para que nadie lo reutilice.
RFC 2324
- 421
Misdirected Request · Petición mal dirigida
La petición llegó a un servidor que no puede responder por ese dominio, por ejemplo al reutilizar una conexión HTTP/2.
RFC 9110
- 422
Unprocessable Content · Contenido no procesable
La sintaxis es correcta, pero los datos no pasan la validación.
Cuándo usarlo: Errores de validación en una API (un email vacío, una fecha imposible).
RFC 9110
- 423
Locked · Bloqueado
WebDAV: el recurso está bloqueado por otro cliente.
RFC 4918
- 424
Failed Dependency · Dependencia fallida
WebDAV: la acción falló porque falló otra de la que dependía.
RFC 4918
- 425
Too Early · Demasiado pronto
El servidor no quiere procesar una petición enviada en los datos tempranos de TLS 1.3, porque podría repetirse.
RFC 8470
- 426
Upgrade Required · Actualización requerida
Hay que cambiar a otro protocolo, indicado en la cabecera Upgrade.
RFC 9110
- 428
Precondition Required · Precondición requerida
El servidor exige peticiones condicionales (If-Match) para evitar que se pisen cambios.
RFC 6585
- 429
Too Many Requests · Demasiadas peticiones
El cliente ha superado el límite de peticiones. Retry-After indica cuánto esperar.
Cuándo usarlo: Limitación de uso de una API.
RFC 6585
- 431
Request Header Fields Too Large · Cabeceras demasiado grandes
Las cabeceras, o una de ellas, son demasiado grandes. Suele pasar con cookies enormes.
RFC 6585
- 451
Unavailable For Legal Reasons · No disponible por razones legales
El recurso no se sirve por una orden legal, como una censura o una demanda. El número homenajea a Fahrenheit 451.
RFC 7725
- 500
Internal Server Error · Error interno del servidor
Algo ha fallado en el servidor y no hay un código más concreto.
RFC 9110
- 501
Not Implemented · No implementado
El servidor no admite la funcionalidad necesaria, por ejemplo un método que no conoce.
RFC 9110
- 502
Bad Gateway · Puerta de enlace incorrecta
Un proxy o pasarela recibió una respuesta no válida del servidor de detrás.
RFC 9110
- 503
Service Unavailable · Servicio no disponible
El servidor no puede atender ahora, por sobrecarga o mantenimiento. Retry-After puede indicar cuándo volver.
RFC 9110
- 504
Gateway Timeout · Tiempo de espera de la pasarela agotado
Un proxy o pasarela no recibió respuesta a tiempo del servidor de detrás.
RFC 9110
- 505
HTTP Version Not Supported · Versión de HTTP no admitida
El servidor no admite la versión de HTTP de la petición.
RFC 9110
- 506
Variant Also Negotiates · La variante también negocia
Error de configuración en la negociación de contenido: la variante elegida vuelve a negociar.
RFC 2295
- 507
Insufficient Storage · Almacenamiento insuficiente
WebDAV: el servidor no tiene espacio para guardar lo que se pide.
RFC 4918
- 508
Loop Detected · Bucle detectado
WebDAV: el servidor encontró un bucle infinito al procesar la petición.
RFC 5842
- 510
Not Extended · No extendido Histórico
Histórico: la petición necesitaba extensiones que el servidor no admite.
RFC 2774
- 511
Network Authentication Required · Autenticación de red requerida
Hay que iniciar sesión en la red para salir a internet, como en el wifi de un hotel o un aeropuerto.
RFC 6585
Cómo funciona
Cómo funciona
Cada respuesta HTTP empieza por un código de tres cifras que resume qué ha pasado. La primera cifra indica la familia: 1xx informativos, 2xx éxito, 3xx redirecciones, 4xx errores del cliente y 5xx errores del servidor. Aquí tienes todos los códigos del registro de IANA con su nombre oficial en inglés, su nombre en español, una explicación corta, cuándo conviene usarlos y el RFC que los define.
Busca por número (escribe 40 para ver del 400 al 409) o por palabras en español o en inglés, sin preocuparte por las tildes. También puedes filtrar por familia y enlazar directamente a un código con #404 al final de la dirección.
Los que más se confunden
401 es «no sé quién eres» y 403, «sé quién eres y no puedes pasar». 400 es una petición mal formada y 422, una petición bien formada con datos que no pasan la validación. En las redirecciones, 307 y 308 conservan el método y el cuerpo, mientras que con 301 y 302 muchos clientes cambian un POST por un GET. El 418 es una broma de 1998 que RFC 9110 reserva para que nadie lo reutilice.
Preguntas frecuentes
¿Qué diferencia hay entre 401 y 403?
401 significa que no te has identificado o que tus credenciales no valen: volver a iniciar sesión puede arreglarlo. 403 significa que el servidor sabe quién eres y aun así no te deja pasar.
¿301 o 308? ¿302 o 307?
Los cuatro redirigen. 307 y 308 obligan a repetir la petición con el mismo método y cuerpo; con 301 y 302, muchos clientes convierten un POST en GET. Para cambios permanentes, 301 o 308; para temporales, 302 o 307.