Определение взято из глоссария Symfony2 :
Сервис - это общий термин для любого объекта PHP, который выполняет определенную задачу. Служба обычно используется «глобально», например, объект подключения к базе данных или объект, который доставляет сообщения электронной почты. В Symfony2 службы часто настраиваются и извлекаются из контейнера служб. Говорят, что приложение, которое имеет много разделенных сервисов, следует сервис-ориентированной архитектуре.
Я думаю, ваш пример - идеальный кандидат на услугу.
Вы не хотите копировать код конструкции во все места, где вам нужен клиент API. Лучше поручить эту задачу контейнеру внедрения зависимостей.
Этот способ проще поддерживать (так как построение происходит в одном месте и его можно настраивать).
Он также более гибкий, так как вы можете легко изменить клиентский класс API, не затрагивая код, который его использует (при условии, что он реализует тот же интерфейс).
Я не думаю, что есть золотое правило. Но в основном все классы, реализующие задачу, являются хорошими кандидатами на службу. С другой стороны, сущности не являются таковыми, они чаще всего просто держатели данных.
Я всегда рекомендую серию статей Фабьена на эту тему: http://fabien.potencier.org/article/11/what-is-dependency-injection