Cada vez que hacemos una petición a una API REST, el servidor responde con:
👉 Ejemplo real de respuesta:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"nombre": "Notebook",
"precio": 1500
}
El 200 OK
nos dice que la petición fue exitosa.
Los códigos están divididos en 5 categorías según el primer dígito:
200 OK
La petición fue procesada correctamente. Se usa en GET
, PUT
, PATCH
, DELETE
.
GET /usuarios/1 → 200 OK
201 Created
Indica que un nuevo recurso fue creado correctamente. Generalmente usado en POST
.
POST /productos → 201 Created
202 Accepted
La petición fue aceptada, pero el procesamiento aún no terminó. Se usa en procesos asíncronos.
204 No Content
La operación fue exitosa, pero no hay nada que devolver.
DELETE /usuarios/1 → 204 No Content
400 Bad Request
La petición está mal formada o faltan datos. Ejemplo: enviar JSON inválido o un campo obligatorio ausente.
401 Unauthorized
El cliente no está autenticado. Falta el header Authorization
. Más info: MDN 401.
403 Forbidden
El cliente está autenticado, pero no tiene permisos para acceder al recurso.
404 Not Found
El recurso no existe. Ejemplo: GET /productos/999
cuando ese producto no está en la base.
405 Method Not Allowed
El método HTTP usado no está permitido en esa ruta. Ejemplo: DELETE /usuarios
en una API que no soporta borrado.
409 Conflict
Conflicto en la petición, por ejemplo, intentar crear un usuario con un email ya existente.
429 Too Many Requests
El cliente hizo demasiadas peticiones en poco tiempo (limitación por seguridad).
500 Internal Server Error
Error genérico del servidor. Indica que algo falló del lado del backend.
502 Bad Gateway
El servidor recibió una respuesta inválida de otro servicio al que consultó.
503 Service Unavailable
El servidor está temporalmente fuera de servicio (mantenimiento o sobrecarga).
504 Gateway Timeout
El servidor no recibió respuesta a tiempo de otro servicio.
POST /usuarios
Body: { "nombre": "Ana", "email": "ana@ejemplo.com" }
Respuesta:
201 Created
{
"id": 5,
"nombre": "Ana",
"email": "ana@ejemplo.com"
}
GET /usuarios/99
Respuesta:
404 Not Found
{
"error": "Usuario no existe"
}
POST /productos
Body: { "nombre": "Tablet", "precio": 1200, } <-- coma extra
Respuesta:
400 Bad Request
{
"error": "JSON inválido"
}
GET /pedidos
Respuesta:
401 Unauthorized
{
"error": "Se requiere token de autorización"
}
DELETE /productos/10
Respuesta:
204 No Content
200 OK
cuando hubo un error.Ejemplo
{ "error": "El campo 'email' es obligatorio" }
201 Created
cuando se crea un recurso nuevo.204 No Content
en DELETE
para evitar devolver datos innecesarios.500 Internal Server Error
: siempre que sea posible, dar más detalle (sin exponer información sensible).Los códigos de estado HTTP son fundamentales para la comunicación entre cliente y servidor en una API REST:
200 OK
, 201 Created
, 204 No Content
).400 Bad Request
, 401 Unauthorized
, 404 Not Found
).500 Internal Server Error
, 503 Service Unavailable
).👉 Usar correctamente los códigos hace que una API sea clara, profesional y fácil de consumir.