(This post written partly to tease my delightful colleague Charles, but also as a way of thinking about user needs.)
During a recent Open Data Café, one of the guests made an entirely reasonable point. An API only method of getting data is elitist.
Already having my assumptions tested – are APIs elitist? food for thought for me #ODCafe
— Martine Wauben (@MHWauben) April 10, 2021
I’d like to briefly discuss that idea.
Downloading a CSV, for example, is simple. CLICK HERE. Done! The file starts transferring to your machine. Obtaining the data can be done by anyone who can read basic instructions and follow a link.
Getting data via an API? That’s a lot tougher. Register for an API key, thoroughly read the documentation, compose a query, futz about on the command line, figure out whether the API key is needed in the header or somewhere else, install some weird program to cryptographically sign your request, do an OAuth dance, sacrifice a chicken.
Look, I love APIs. But the developer experience is often poor. Even proficient devs get frustrated when trying to download a simple set of data.
Put simply, you need an order of magnitude more education in order to interact with an API than you do to click “DOWNLOAD“.
An API-only method of getting data is elitist. Or, at the very least, exposes privilege. Do you have enough time to read through all the poorly written API docs and examples? Have you had a modern computer science education which explained the different HTTP verbs and idempotency? Do you know your REST from your SOAP from your GraphQL? Are you able to mentally translate the examples in Ruby into the language of your choice?
APIs are necessary. As we move into a world where computers communicate for us, we need to enable data to flow without human intervention. We need APIs. But we also need to meet human users’ needs as well.
A link which says “Click Here To Download This Month’s Data” should be powered by an API. It shouldn’t be a human wasting time collating a spreadsheet and then manually uploading it to the CMS. Behind that link should be a
/getData?range=month&order=latest&key=123.... API call.
So, yes, I agree with the statement. An API only solution is probably elitist. For some services, it may make sense, but if you want non-technical users to easily access your data – you need a direct access method.
Further discussion on Twitter:
Good challenge from #ODCafé
Are APIs elitist?
Much easier to use a downloaded CSV. No tech knowledge required. No API keys or documentation.
(I think downloads should be built off the API.)
— Terence Eden (@edent) April 10, 2021