Под API, что именно вы имеете в виду?
На многих платформах вы можете ссылаться на DLL или аналогичную конструкцию, но придется ли перекомпилировать для конкретной нативной цели (Intel / ARM), или все еще можно указать порядок байтов? Конкретный двоичный интерфейс может по-прежнему испытывать трудности с определенными языками из-за проблем или типов типов данных (указатели пытаются вернуться к языкам, которые их не поддерживают), поэтому вам также следует учитывать конструкцию самого API, чтобы не исключить некоторые языки или сделать его использование из этих языков громоздким.
Нечто переносимое, такое как C, и интерфейс, основанный на двоичных конечных точках в DLL, могут подойти и, как правило, вызываться на большинстве платформ и из большинства языков, но может потребоваться, чтобы их компилировали по-разному и / или предлагали в разных вариантах или связывали с разными статическими библиотеками.
Мне кажется, что выбор языка, на котором вы пишете свою библиотеку или службу или что-то еще, по определению не является неотъемлемой частью вопроса, пока вы не дадите больше о платформе / услуге, которую предоставляет API. Если вы можете предположить, что сетевой стек доступен, а производительность на уровне вызовов функций с прямой связью не является обязательным требованием, API может легко основываться на HTTP с некоторой оболочкой для языка клиента, чтобы сделать запросы прозрачными.
Я думаю, что в целом этот вопрос слишком широк, чтобы быть полезным в реальном мире, потому что вы не указали, какой тип API может подойти, учитывая тип предлагаемой услуги.