500 Internal Server Error
- правильный статус, если ошибка не может быть исправлена клиентом, изменившим свой запрос.
Используйте любой из 4XX
статусов, если клиент мог бы исправить свой запрос, чтобы избежать ошибки (или 404
, если ресурс не был найден).
200 OK
- это , а не соответствующий статус практически в любой ситуации с ошибкой, потому что тогда клиент думает, что все работает нормально (а это не так) и может продолжать делать те же самые вызывающие ошибки запросы.
Ознакомьтесь с доступными кодами состояния в RFC2616 и найдите тот, который наиболее соответствует ситуации.