Un'API ( Application Programming Interface ) è (secondo wikipedia )
[...] a set of routine definitions, protocols, and tools for building software and applications.
An API expresses a software component in terms of its operations, inputs, outputs, and underlying types, defining functionalities that are independent of their respective implementations, which allows definitions and implementations to vary without compromising the interface.
In particolare, un'API è una convenzione o un insieme di definizioni, quindi è non il codice sorgente . In altre parole, un'API è principalmente un contratto sociale tra sviluppatori (implementatori di alcune librerie o utenti di quella libreria) documentati in alcuni rapporti.
Quindi, non ha senso parlare del codice sorgente che appartiene a (o di essere in) un'API.
Ovviamente, un'API è implementata da qualche codice sorgente. In pratica, mi aspetto che tutto il codice sorgente di una libreria che implementa un'API sia rilevante (eccetto forse alcuni artefatti interni, come generatori di codice specializzati usati per costruire la libreria, o qualche codice della suite di test).
Alcune API hanno diverse ("equivalenti") librerie che le implementano. Un tipico esempio è la libreria standard POSIX C (su un sistema Linux): la maggior parte dei sistemi Linux utilizza GNU libc , ma alcuni stanno usando il musl-libc , e sia GNU libc che musl-libc stanno implementando la stessa stessa API (forse con estensioni specifiche per ogni libreria), e potresti avere un sistema Linux con entrambi . Allo stesso modo, la (grande) libreria standard C ++ 11 ha diverse implementazioni (la maggior parte dei compilatori C ++ 11 fornisce la propria libreria standard C ++ 11).
(quindi la mia opinione è che tu sia confuso)
PS. In pratica, le cose non sono sempre così belle. Consulta la Legge di Leaky Abstraction di Joel e leggi The Mythical Man-Month