I was using 500 - Internal Server Error for validation errors, but problem was the application error handler caught this and shows generic error page, which causes validation logic to fail. So instead we can use

Either use code 400 - Bad Request or code 200 - with the error message

http://stackoverflow.com/questions/362618/proper-use-of-http-status-codes-in-a-validation-server