204 - это не код ошибки, это код успеха, но это обман. Я не часто вижу это для пустых списков, а скорее для успешных ответов, в которых просто нет значимого содержимого, например успешного удаления. Например, если вы возвращаете JSON, то 200 с содержанием []
- это то, что я ожидал бы от пустого списка результатов. Тем не менее, я не думаю, что это неправильно использовать в вашем случае.
404 Not Found - более распространенная ошибка для описываемого вами случая. Вы правы, что это не синтаксическая ошибка, поэтому 400 не подходит, но на самом деле ресурса там нет. 404 Not Found - точный ответ.
Но при выборе между 200, 204 и 404 правильный ответ таков: это зависит. Вопрос в том, является ли это ошибкой или нет. 404 более выразителен (клиент может сказать, что такой компании нет), но вы можете обменять выразительность на безопасность, а это может быть хорошо, если клиент не может сказать, существует компания с таким идентификатором или нет.