Too Many Requests vs Service Unavailable
Choose HTTP 429 when the request is invalid (client must fix). Choose HTTP 503 when the server fails (client may retry).
HTTP 429 (client error) and 503 (server error) represent fundamentally different failure modes. 429 indicates the request itself is invalid, malformed, or unauthorized—the client must change its request. 503 signals the server failed to process a valid request—the client may retry with backoff. The boundary is clear: if the request is invalid, return 429; if the server fails on a valid request, return 503.
Use HTTP 429 when too many requests; choose HTTP 503 when service unavailable.