We still don't know what “API” means. That's okay!
22 Mar 2024
In 2019 I did two surveys, first asking people what they think “API” meant and second asking people what “application” in “application programming interface” meant.
In 2024 I ran a version of these two surveys combined that got 161 responses. At the I end gave people a box where they could write anything they’d like. Lawrence Evalyn suggested that I make a little combinatory poem mixing together everybody’s answers. Each line of this poem is a substring of a different response:
Holy hell
there’s some sort of joke here
This question melted my brainLow confidence
Ultimately I would like to have a different name
shape of an http interface doesn’t really fitMade me think!
most applications are distributed
this is pretty funny!cool survey haha
Interesting questions
Google is evil
The survey data is here in Google Sheets (sorry, at least one respondent!), along with my sloppy what-passes-for-analysis analysis. (Free-form comments were removed, since a fair number of them included identifying information.)
What do the letters in API stand for?
“We” actually do seem to know what words the letters in API stand for, more or less. The level of consistency between the two surveys is borderline implausible:
- A is for Application: 90% in 2019, 91% in 2024
- P is for Programming: 81% in 2019, 81% in 2024
- I is for Interface: 96% in 2019, 96% in 2024
91% of people answered that the P stood for “programmumble:” program, programmable, programmer, or programming. And some of the other answers, like “public” and “protocol,” still clearly get at the same, correct, idea.
What does the word “Application” mean?
This gets more interesting when you ask people the individual words comprising “API” mean.
- Is the application what you wrote using the API? (I think this is the common meaning when you’re using the Java API to build something. I think it’s also fair to say this was what “application” meant when the term was coined.)
- Or is the application what you’re controlling or accessing using the API? (I think this is the common meaning for the many uses of remote-procedure-call-based APIs on the web, where you’re using the API to access and control some larger application, like Google Docs.)
Here’s the 2019 data next to the more recent survey, also broken down by years-of-knowing-what-an-API-is:
This chart gives us two pieces of evidence that the overall meaning of what the “application” in API means is gradually transitioning away from the original meaning (APIs help you build applications) to a new meaning (APIs are how you access someone else’s applications).
- The newer meaning has more popularity in this survey versus the 2019 survey.
- There is a pretty clear generational effect, with people who originally encountered the term longer ago more likely to say that an API is a programming interface one uses while building an application.
Does this matter?
The argument for “yes” is that, if you value being understood, it’s worth knowing when terms that you think of as settled are, empirically, in flux. For the meaning of API, it seems like we’re past a tipping point now.
I would strongly suggest that, if you’re someone in a position of teaching folks what API is, you’re doing students a disservice if you only teach an empirically outdated definition.
Conversely, I think it’s important for more-newly-minted software developers to know that “API” does not just mean “REST API.” (This is maybe less of a concern that it was five years ago, though? I feel like I hear more talk about parts of the web platform, like the Web Storage API, than I did a few years ago.)
The argument for “no” was best described by one of the respondents who described the word “application” as an “empty signifier” and the person who described the term API as an “indecomposable noun.” I think that’s correct: we all kind of know that API is used to describe a certain kind of documented, stable interface that get built between programming systems with significantly different concerns.
It’s actually great, in my opinion, that we have widely-accepted name for this kind of interface, because “interface” is a pretty generic term with a broader meaning. The REST APIs that you use to access applications like Zoom or Slack and the Web Storage API that you use to build stateful-yet-serverless web applications share a lot of fundamental similarities. The fact that I used “application” referred to two “different sides of the API” in the previous system isn’t that big a deal unless you think too hard about it!
I’ll close with a modest proposal. Given the cultural love of recursive acronyms in some corners of tech culture, can we just say API means “API Programming Interface?” It would save me from writing another survey in five years.