In working with my company's web API as well as the APIs of others, I've always thought that a response code of 500 should only be returned in case of an actual server bug. If I, the user, made an error in the call, there are the 4xx codes; whereas a 500 indicates that there was nothing wrong with my call, but the server can't figure out what to do, and may even have hit an exception while handling my request. A 500, I've insisted, should be logged server-side and corrected.
But am I wrong? Are there appropriate uses of the 500 response code? In particular, are there cases where it makes sense to consistently return a 500 without correcting the condition that led to it?
To put it another way, when I use our company's API and get a 500, my reaction (as an automation developer) is "Fix the bug."
What uses of 500 are there that don't involve a bug to be fixed?