Разобрался сам - модуль нужно обязательно называть из двух частей (например my.api а не api) соответственно и пространство нужно My\Api\Controller. Нужно это для того, что bitrix разбивает пространство имен и из двух первых слов составляет название модуля через точку, а потом подключает (получается как раз my.api). Исключением является если первое слово в пространстве bitrix