Как получают API?

Я приведу самый простой пример с получением данных. По сути, у API возможности неограниченны. Всё что хочешь - то и можно. Просто чаще всего API используют, чтобы получить какие-то данные.

Принцип такой:
Есть сайт с погодой. Чтобы получить температуру в условном Питере, которую они замерили - тебе нужно зайти к ним на сайт, вбить в параметрах поиска СПБ и глазами посмотреть. 
И вот, чтобы обеспечить потребность "знать погоду" - тебе достаточно просто заходить к ним на сайт. Но если ты хочешь, чтобы на твоём сайте/приложении/в игре - была погода, то тут возникнут проблемы

- По сути ты мог бы просто каждые 10 минут заходить на сайт погоды, брать от туда данные и загружать себе на сайт. Согласись - неудобно. 
- Либо ты мог бы настроить бота, который бы заходил на сайт, симулируя пользователя и доставал бы из нужного блока температуру, а потом вставлял результаты тебе на сайт. По сути, так и делают, когда нет API, но это не совсем стабильный канал: а) тебя могут забанить по ip за странные запросы; б) если изменится вёрстка сайта (порядок блоков), то разумеется достать температуру ты уже не сможешь и придётся переписывать бота
- И тут на помощь приходит API. Принцип таков: ты можешь договориться с поставщиком температуры о том, что ты будешь брать у них данные. Это может быть как платная услуга, так и бесплатная (обычно зависит от кол-ва запросов). В итоге тебе дают ссылку, в которой указаны уже все параметры, которые тебе нужны и ты просто настраиваешь своего бота на то, чтобы получить эти данные по ссылке и вставить на свой сайт. 

Чтобы посмотреть температуру в Санкт-Петербурге тебе нужно открыть ссылку:
http://api.openweathermap.org/data/2.5/weather?q=Санкт-Петербург&units=metricнихрена работать не будет, потому что тут не указан ключ API.

А зачем нужен ключ API?
Как я уже сказала: API бывают платные и бесплатные и их платность зависит обычно от кол-ва запросов, которые ты делаешь. Но как поставщик узнает, кто делает запрос: я, ты или тот парень? Чтобы регулировать это - они присваивают тебе твой личный номер (айди), по которому они будут отслеживать, сколько запросов ты уже сделал. Также в твоём айди закладываются твои права. Может быть посмотреть погоду в Питере - бесплатно, но вот если ты хочешь узнать точную температуру в условном Кудрово, то будь добр - доплати и тогда они предоставят по твоему айди доступ к этой температуре. Кратко: API-ключ - пароль от твоего аккаунта.

И вот тебе верная ссылка:
http://api.openweathermap.org/data/2.5/weather?q=Санкт-Петербург&units=metric&appid=0f47096f1eb155f8b277692876fb963e
Wiki
API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой

По простому
API - это набор правил, по которым можно наладить связь между разными системами. Это то, что предоставляет некоторый сервис. Он же и разрабатывает его и он же даёт его в пользование. 

Пример с той же погодой. Есть сервис - Погода. Он решил, что может предоставлять данные о погоде всем желающим. 
Ты скажешь - "ну вот у них же сайт есть и там всё написано", но чтоб использовать данные о погоде в собственной программе придётся "парсить" целую страницу. Это не удобно, затратно и нестабильно. 
Для этого разработчики разрабатывают набор правил, в данном случае - запросов. Выполнение которых будет возвращать строго определенную информацию.
Это же API может позволять вносить/модифицировать и удалять информацию (REST).

API как правило - это документация. Пример такой документации (API) для погоды - https://openweathermap.org/current

Если углубиться в вопрос, то ты столкнёшься с такими понятиями как токен или ключ, которые определяют уровень доступа к методам API. Некоторые API могут работать без таких вещей, но по большей части все используют токены. Хотя бы номинально.

API - позволяет делать только то, что реализовали разработчики. И если они не добавили методы, например, установки значения текущей температуры - ты не сможешь её изменить.

Ещё один момент, касательно топика - это не путать API и эмуляцию запросов с сайта сервиса. Т.е. смотреть, что вызывает сайт при работе ("искать в пакетах") и вызывать то же самое - это не API.

Дополнительно
API - это не только про запросы. API - более широкое понятие нежели доступ к серверу. 
Через API работают, например, все программы в Windows - WinAPI. Через API программы взаимодействуют между собой. Плагины в браузере используют API браузера для работы с плагинами. 
