Как реализовать в yii2 веб-интерфейс + api для приложения?
весь основной функционал уже готов, я буду его дублировать в апи контроллере, вызывая нужные методы
Именно поэтому все и говорят "тонкие контроллеры"
Тк у вас логика в контроллерах, то да -- дублировать
Если бы разнесли нормально по сервисам -- то контроллеры на беке и апи просто бы пользовали их и были по сути расходниками
берем advanсed шаблон, api - это отдельное app, свой конфиг, свой контроль доступа, response в виде json и т.д. 
код при этом дублироваться не должен если все верно сделано. Как сказал Максим Федоров толстая должна быть модель, тогда Вы ее повторно без проблем используете в Ваших обычных web контролерах и rest контролерах