Eu já disse algo sobre isso aqui. E se fosse resumir o ponto mais importante que tem lá, seria:

API não é só WEB. Sei que hoje em dia "API" acabou virando quase que um sinônimo de "URL que retorna um JSON", mas o termo é bem mais amplo que isso (e a ideia geral, inclusive, antecede a web).

API é a sigla para "Application Programming Interface" (algo como "Interface de Programação de Aplicações"), que é basicamente "algo" que permite que dois programas/softwares/sistemas/aplicativos "conversem" entre si (a grosso modo, eles trocam informações de forma programática). O detalhe é que esses programas não precisam estar na web.

Enfim, sugiro que leia tudo lá para saber mais sobre o termo, e também para entender porque hoje em dia ficou tão difícil encontrar a definição correta (basicamente, porque "todo mundo" acha que é só Web, e 99% do material acaba focando só nisso).

Quanto à diferença entre API e lib/biblioteca, este link pode ajudar.

Obrigado pelos tópicos kht, li os dois.

Só para concluir, eu gostaria de saber sua opinião. No seu tópico aqui no Tabnews você diz que "Uma lib/biblioteca/pacote/módulo/crate/etc nada mais é que uma API que permite que seu programa tenha acesso à funções prontas que fazem algo que vc precisa"

Na pergunta do stackoverflow diz mais ou menos a mesma coisa.

Então, na sua opinião, os exemplos que dei acima seriam considerados bibliotecas? Mesmo que ninguém vá as chamar assim.

Bom, existe muita intersecção entre os termos, mas no primeiro link que coloquei tem o seguinte: "**_API não é o serviço fornecido, é o método de acesso_**". Esses serviços online que vc faz uma chamada HTTP pra pegar os dados, eu entendo que são API's cuja forma de acesso é a web. Uma biblioteca é mais o conjunto de funções que vc pode usar para compor algum programa mais complexo. Claro que ela também disponibiliza uma API para que vc possa usá-la, por isso que uma forma de definir é considerar que a lib é a implementação das regras da API. Mas a lib pode ter partes internas que não são expostas publicamente (são detalhes de implementação que quem a usa não precisa saber), ou seja, essas partes não fazem parte da API que ela expõe a quem for chamá-la. É o caso do sistema operacional, que tem a API (a interface que os programas usam para interagir com ele), e internamente tem uma ou mais bibliotecas que fazem o "serviço sujo". Enfim, no final do link do Stack Overflow também tem a conclusão: > *Na maior parte dos tempo os termos podem ser intercambiáveis sem causar grande problema. Todo mundo entende essas três coisas como um conjunto de códigos prontos para alcançar algum objetivo.*
Sim, os seus três primeiros parágrafos foi o que entendi e tinha descrito em minha pergunta. Minha dúvida é justamente sobre o código atrás da API "que faz o trabalho sujo", antes de entregar ao usuário por meio da mesma, como por exemplo, a API do Sistema Operacional. Seu código por trás da interface então poderia ser considerado uma biblioteca, que é acessada através de uma API (e que, na verdade, todas são), logo, o exemplo do OpenWeather também. Agradeço por me responder kht.