Стандартные ответы
2хх все нормально
3хх действие произведено
4хх необходимо пользовательская реакция
5хх ошибка сервера
А уж какие вы коды отсылаете, это уже ваше дело, главное что бы вы это документировали.
И не считайте статьи догмой, статусы ошибок указывают только на то что вы решили часть данных переложить в метаданные. Это чисто архитектурное решение. Вы можете вообще отправлять всегда 200 и добавить поле в json
{
"status": "Not found",
"statusCode": 404
}