API - это буквально интерфейс, т.е. способ (абсолютно любой, хоть через .txt файлы) взаимодействия с программой.
Если вы не соблюдаете интерфейс, то вы не можете взаимодействовать с программой программным способом. Если вы пишете интерфейс, то другие обязаны следовать вашей инструкции.
Правильно ли я понимаю, что
API может быть любым. Но чаще используют некоторые удобные общепринятые шаблоны, например: web json rest api, интерфейсы в c# или dll библиотеки.