Есть разные уровни тестирования, задействующие API.
Если вы тестируете непосредственно контракт (посылаем такой запрос -> получаем такой ответ), то делать это через UI кажется бессмысленным. Подойдет любой инструмент, позволяющий посылать запросы.
Вариантов много: Postman, RestAssured, а так же любой язык + библиотека для отправки HTTP запросов (напр. Python + Requests \ Java + ApacheHttpClient).
Если вы проверяете интеграцию сервисов (интеграционный тест), то логично проверять что сервис А посылает валидные запросы, а сервис Б их валидно обрабатывает. Т.е. запрос будет происходить от лица сервиса А (изнутри или со стороны его UI - не важно).
Если ваш тест представляет собой end-to-end проверку (т.е. максимально приближенную к продакшену последовательность действий), то тест будет проходить в UI (т.к. это точка взаимодействия пользователя).
Первый вариант проще и быстрее, начинать стоит с него. End-to-end тестами стоит покрывать только основный пользовательские сценарии, т.к. такие проверки обычно долгие и дорогие в разработке и поддержке.